MySQL MCP服务器

一个通用的、安全的、高效的MySQL数据库模型上下文协议(MCP)服务器,充当安全桥梁,允许AI代理和应用程序(MCP客户端)与任何MySQL数据库交互,无需直接凭证。

  • by AbeqqalMarouane
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 AbeqqalMarouane/MySQL-MCP-Server

使用说明

通用MySQL MCP服务器

[](https://www.mysql.com/ 此存储库包含通用、安全和高效的 模型上下文协议(MCP) MySQL数据库服务器。充当安全桥梁,允许AI代理和应用程序(MCP客户端)与任何MySQL数据库交互,而不需要间接凭据 这个服务器被设计成一个独立的、可重用的npm包。它最初是为 EventScribe AI 项目,但可以由任何兼容MCP的客户端使用

✨ 关键特征

  • 动态模式发现:将完整的数据库架构作为MCP公开 resource,允许AI代理了解它连接到的任何数据库的结构。
  • 安全只读查询:提供 read_only_query 主控程序 tool 严格执行 SELECT 声明,防止任何破坏性操作并保护您的数据。
  • 高性能:使用MySQL连接池进行高效、高并发的数据库交互,适用于生产环境。
  • 简单配置:使用清洁剂 .env 将文件保存在用户的主目录中,确保凭据安全,并将froclient应用程序分开。
  • 优雅地关闭:包括在服务器进程终止时彻底关闭数据库连接的逻辑

🏗️ 架构:服务器的角色

此MCP服务器是现代代理架构中的“数据层”。客户端(例如Next.js应用程序)编排工作流,而此服务器是唯一可以直接访问数据库的组件

  graph TD
    subgraph "Client's Responsibility (e.g., EventScribe AI)"
        A["Client Application"]
        A -- "Starts & Manages Process" --> B
        A -- "Sends 'Get Schema' Request" --> B
        A -- "Sends 'Run Query' Request" --> B
    end

    subgraph "Server's Responsibility (This Project)"
        B["MySQL MCP Server"]
        B -- "Manages Connection Pool" --> C[(MySQL Database)]
        B -- "Executes SHOW CREATE TABLE" --> C
        B -- "Executes safe SELECT query" --> C
        C -- "Returns SQL Results" --> B
    end

    B -- "Returns Schema as Resource" --> A
    B -- "Returns Query Data as Tool Result" --> A

🚀 用户安装使用指南

本指南解释了如何将服务器作为npm包安装和使用。有关如何为代码做出贡献的说明,请参阅下面的“面向开发人员”部分

步骤1:安装

在你的客户端项目中(例如,你的Next.js应用程序),从npm安装包

npm install @abeqqal_marouane/mysql-mcp-server

步骤2:用户配置

此服务器需要配置文件才能安全连接到您的数据库 在用户主目录中创建一个专用文件夹

  • 在Windows(PowerShell)上: mkdir ~/.mysql-mcp-server
  • 在macOS/Linux(终端)上: mkdir -p ~/.mysql-mcp-server Create the configuration file. Inside that new folder, create a file named config.envAdd your database credentials to theconfig.env`文件,格式如下
# ~/.mysql-mcp-server/config.en
DB_HOST=localhost
DB_USER=your_mysql_user
DB_PASSWORD=your_mysql_password
DB_NAME=your_database_name
DB_PORT=3306

服务器每次启动时都会自动查找并加载此文件

步骤3:使用

此服务器设计为由MCP客户端启动和控制

在MCP客户端应用程序中(例如Next.js)

配置您的客户端 StdioClientTransport 使用此包提供的命令。请注意,您不再需要filpaths或 npm start

// In your client application code
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"
const transport = new StdioClientTransport({
  command: "mysql-mcp-server",
  args: []
})
// ... then connect your MCP client to this transport.

使用MCP检验员进行快速测试

您可以直接从终端测试服务器,而无需克隆存储库 首先,全局安装该包,使命令在任何地方都可用

npm install -g @abeqqal_marouane/mysql-mcp-server

确保您已创建 config.env 如上述“配置”步骤所述的文件 使用检查器运行服务器

npx -- @modelcontextprotocol/inspector mysql-mcp-server

📖 暴露的MCP能力

此服务器向任何连接的客户端公开两个主要功能

资源:架构

  • 统一资源标识符: mysql://schemas
  • 描述:返回完整值 CREATE TABLE 连接数据库中所有表的SQL语句。这允许Aagent学习数据库的完整结构。
  • 用法(在客户端中)
mcpClient.readResource({ uri: "mysql://schemas" })

工具:只读查询

  • 名字: read_only_query
  • 描述:对数据库执行SQL查询。
  • 输入架构: { sql: string }
  • 安全:该工具包含一个重要的安全检查。它只会执行以开头的查询 SELECT。任何其他命令(UPDATE、DELETE、INSERT、DROP等)都将被拒绝并返回错误。
  • 用法(在客户端中)
mcpClient.callTool({
  name: "read_only_query",
  arguments: { sql: "SELECT * FROM events LIMIT 10" }
});

👨‍💻 开发者/贡献者

如果要修改或贡献此服务器,请执行以下步骤

克隆存储库

git clone https://github.com/AbeqqalMarouane/MySQL-MCP-Server.git
cd MySQL-MCP-Server

安装依赖项

npm install

创建本地 .env 开发文件

如配置部分所述

构建TypeScript代码

npm run build

欢迎投稿!请随时分叉存储库,进行更改,并提交拉取请求

📄 许可证

该项目根据MIT许可证获得许可。