MySQL协议服务器

实现Model Context Protocol (MCP)的MySQL数据库操作服务器,支持查询、表创建、数据插入、更新和删除等SQL操作。

  • by gvishnoi
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 gvishnoi/mysql-server-mcp

使用说明

MySQL模型上下文协议服务器

该项目实现了 模型上下文协议(MCP) 暴露的服务器 MySQL数据库操作工具。它封装了MySQL连接池 并将传入的MCP请求转换为SQL语句,返回 结构化格式中的结果或错误。

服务器是用纯JavaScript编写的,并使用 @modelcontextprotocol/sdk 实现MCP规范的软件包。代码是这样组织的 它可以从以下任一位置进行开发和调试 Visual Studio Code 或 智能J IDEA。它依赖于环境变量来配置 数据库连接,并公开了一组用于只读查询的工具, 表创建、数据插入、更新、删除和通用SQL 声明。

入门指南

  1. 使用首选的包管理器安装依赖项。对于 示例,使用 npm:

    npm install
    
  2. 通过环境变量或以下方式配置MySQL连接 创建一个 .env 文件。识别以下变量:

    变量 默认值 描述
    MYSQL_HOST localhost MySQL服务器的主机名
    MYSQL_PORT 3306 MySQL服务器的端口
    MYSQL_USER username 用于身份验证的用户名
    MYSQL_PASSWORD password 用于身份验证的密码
    MYSQL_DATABASE database_name 查询的默认数据库
  3. 通过运行以下命令启动服务器:

    npm start
    

服务器通过以下方式进行通信 标准,这是默认传输方式 对于MCP。当与更大的应用程序集成时,MCP运行时 将自动生成此进程并处理I/O通道。

支持的工具

服务器公开了六个工具,每个工具对应一个不同的类 SQL语句:

工具名称 描述
run_sql_query 执行只读 SELECT 查询并返回结果集。
create_table 执行a CREATE TABLE 声明。
insert_data 执行一个 INSERT INTO 声明。
update_data 执行一个 UPDATE 声明。
delete_data 执行a DELETE FROM 声明。
execute_sql 执行任何非-SELECT 声明(例如。, ALTER, DROP等等)

每个工具接受一个参数, query,这是SQL 声明运行。服务器执行基本验证以确保 语句被路由到正确的处理程序并防止 意外误用(例如,呼叫 run_sql_query 带着一个 非-SELECT 声明)。

项目布局

mysql-server-mcp/
├── package.json      – project metadata and dependencies
├── .gitignore        – ignore common development artifacts
├── README.md         – this file
└── src
    └── index.js      – main entrypoint implementing the MCP server

代码有意保持简单和自包含。你可以跑 并通过使用VS Code或IntelliJ直接调试它 Node.js运行配置。服务器使用现代ECMAScript 模块,因此请确保您的编辑器已相应配置。

如何在本地环境中使用此MCP服务器

这个MySQL MCP服务器可以与支持模型上下文协议的各种AI编码助手和工具集成。下面是不同环境的详细说明。

先决条件

在配置任何客户端之前,请确保:

  1. MySQL服务器正在运行:确保MySQL服务器可访问

    # Test connection
    mysql -h localhost -u <username> -p<password> <database_name>
    
  2. 已安装依赖项:运行 npm install 在项目目录中

  3. 服务器路径:记下您的完整路径 index.js 文件

    # Get the full path
    pwd  # Run this from the project root
    # Example: /Users/username/projects/mysql-server-mcp
    

Claude桌面配置

Claude Desktop原生支持MCP服务器。要添加此MySQL服务器:

  1. 查找或创建配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 视窗: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 添加服务器配置:

    {
      "mcpServers": {
        "mysql-server": {
          "command": "node",
          "args": [
            "/absolute/path/to/mysql-server-mcp/src/index.js"
          ],
          "env": {
            "MYSQL_HOST": "localhost",
            "MYSQL_PORT": "3306",
            "MYSQL_USER": "username",
            "MYSQL_PASSWORD": "password",
            "MYSQL_DATABASE": "database_name"
          }
        }
      }
    }
    
  3. 重新启动克劳德桌面:关闭并重新打开应用程序

  4. 验证MySQL工具应该出现在Claude的可用工具列表中

使用GitHub Copilot配置VS代码

VS Code与GitHub Copilot可以通过MCP扩展使用MCP服务器:

  1. 安装MCP扩展 (如果尚未安装):

    • 打开VS代码
    • 转到扩展(Cmd+Shift+X或Ctrl+Shift+X)
    • 搜索“模型上下文协议”
    • 安装官方MCP扩展
  2. 配置MCP服务器:

    • 选项A:用户设置 (适用于所有工作区)

      • 打开命令面板(Cmd+Shift+P或Ctrl+Shift+P)
      • 键入“首选项:打开用户设置(JSON)”
      • 添加以下配置:
      {
        "mcp.servers": {
          "mysql-server": {
            "command": "node",
            "args": [
              "/absolute/path/to/mysql-server-mcp/src/index.js"
            ],
            "env": {
              "MYSQL_HOST": "localhost",
              "MYSQL_PORT": "3306",
              "MYSQL_USER": "username",
              "MYSQL_PASSWORD": "password",
              "MYSQL_DATABASE": "database_name"
            }
          }
        }
      }
      
    • 选项B:工作区设置 (仅适用于当前工作区)

      • 创建或编辑 .vscode/settings.json 在您的项目中
      • 添加与上述相同的配置
  3. 重新加载VS代码:从命令面板运行“开发人员:重新加载窗口”

  4. 使用GitHub Copilot:

    • 打开GitHub Copilot聊天(Cmd+I或Ctrl+I)
    • MySQL MCP工具将可供AI使用
    • 示例提示:“显示数据库中的所有表”

Cline(前身为Claude Dev)的配置

如果你在VS Code中使用Cline扩展:

  1. 找到临床MCP设置:

    • 在macOS上: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
    • 在Windows上: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
    • 在Linux上: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  2. 添加服务器配置:

    {
      "mcpServers": {
        "mysql-server": {
          "command": "node",
          "args": [
            "/absolute/path/to/mysql-server-mcp/src/index.js"
          ],
          "env": {
            "MYSQL_HOST": "localhost",
            "MYSQL_PORT": "3306",
            "MYSQL_USER": "username",
            "MYSQL_PASSWORD": "password",
            "MYSQL_DATABASE": "database_name"
          }
        }
      }
    }
    
  3. 重新启动Cline:重新加载VS代码窗口

其他MCP兼容客户端的配置

对于通过stdio传输支持MCP的任何其他工具:

  1. 基本命令:

    node /path/to/mysql-server-mcp/src/index.js
    
  2. 使用环境变量:

    MYSQL_HOST=localhost \
    MYSQL_PORT=3306 \
    MYSQL_USER=username \
    MYSQL_PASSWORD=password \
    MYSQL_DATABASE=database_name \
    node /path/to/mysql-server-mcp/src/index.js
    
  3. 使用.env文件 (创建 .env 在项目根目录中):

    MYSQL_HOST=localhost
    MYSQL_PORT=3306
    MYSQL_USER=username
    MYSQL_PASSWORD=password
    MYSQL_DATABASE=database_name
    

测试MCP服务器

您可以使用MCP检查器手动测试服务器:

  1. 安装MCP检查器:

    npm install -g @modelcontextprotocol/inspector
    
  2. 运行检查器:

    mcp-inspector node /path/to/mysql-server-mcp/src/index.js
    
  3. 测试工具:检查器提供web UI来测试所有可用工具

故障排除

服务器无法启动:

  • 检查是否安装了Node.js: node --version (需要v16+版本)
  • 验证MySQL凭据是否正确
  • 检查MySQL服务器是否正在运行且可访问

工具未出现:

  • 验证到的绝对路径 index.js 是正确的
  • 检查配置文件语法(有效的JSON)
  • 完全重新启动客户端应用程序
  • 检查客户端日志中的连接错误

连接错误:

  • 验证MySQL连接字符串和凭据
  • 独立测试MySQL连接: mysql -h localhost -u username -p
  • 如果使用远程MySQL,请检查防火墙设置
  • 确保配置中指定的数据库存在

权限错误:

  • 确保MySQL用户具有适当的权限:

    GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
    FLUSH PRIVILEGES;
    

安全考虑

用于生产用途:

  • 从不将凭据提交到版本控制
  • 使用环境变量或安全密钥管理
  • 将MySQL用户权限限制为所需的最小值
  • 考虑使用MySQL SSL/TLS连接
  • 实施额外的查询验证和清理
  • 添加速率限制和查询超时
  • 记录所有数据库操作以供审计

促进地方发展:

  • 使用专用开发数据库
  • 不使用生产凭据
  • 考虑对独立的MySQL实例使用Docker

示例使用场景

配置后,您可以自然地与AI助手交互:

查询数据:

  • “显示用户表中的所有记录”
  • “统计上个月下了多少订单”
  • “查找价格高于100美元的所有产品”

创建表格:

  • 创建一个名为customers的表,其中包含id、name和email列
  • “添加新表以存储产品评论”

修改数据:

  • “插入具有姓名和电子邮件的新用户”
  • “更新产品ID的价格”
  • “删除所有超过2年的订单”
  • 等等

架构操作:

  • “在users表中添加created_at时间戳列”
  • “显示订单表的结构”
  • “在电子邮件列上创建索引”

AI助手将自动使用适当的MCP工具来执行这些操作并返回结果。

延伸

如果您希望用附加功能扩展服务器, 考虑添加新的处理程序并将其注册到 src/index.js。您还可以将验证助手修改为 强制执行更严格的模式或与查询解析器集成。