MySQL数据库交互服务

一个用于与MySQL数据库交互的Model Context Protocol (MCP)服务器,允许MCP客户端(如AI助手)查询和修改配置的MySQL数据库中的数据。

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

使用说明

MySQL MCP服务器

版本:0.1.0

用于与MySQL数据库交互的模型上下文协议(MCP)服务器。此服务器允许MCP客户端(如AI助手)查询和修改配置的MySQL数据库中的数据。

特性

  • 使用标准连接参数连接到MySQL数据库。
  • 提供用于执行SQL查询和语句的MCP工具。
  • 支持只读查询(SELECT, SHOW, DESCRIBE).
  • 支持写入操作(INSERT, UPDATE, DELETE)通过单独的工具,由环境变量控制(MYSQL_ALLOW_WRITE_OPS).
  • 通过标准输入/输出(stdio)进行通信。

安装

# Install as a project dependency (recommended for use within another project)
npm install

# Or, if intended as a standalone global tool:
# 1. Build the project:
#    npm run build
# 2. Link it globally:
#    npm link 
#    (or use `npm install -g .` if publishing)

配置

此服务器要求为数据库连接设置以下环境变量:

  • MYSQL_HOST:MySQL服务器的主机名或IP地址。
  • MYSQL_USER:连接到数据库的用户名。
  • MYSQL_PASSWORD:指定用户的密码。
  • MYSQL_DATABASE:要连接的数据库的名称。
  • MYSQL_PORT:(可选)MySQL服务器的端口号(默认为3306)。
  • MYSQL_ALLOW_WRITE_OPS:(可选)设置为 true 为了使 insert, update,以及 delete 工具。默认为 false (写入操作已禁用)。 警告: 启用写操作允许MCP客户端修改您的数据库。小心使用。

这些变量需要在启动服务器进程的环境中可用。如何设置它们取决于您的操作系统以及您如何运行服务器(例如。, .env 文件、系统环境变量、shell导出)。

用法

一旦配置和构建(npm run build),您可以运行服务器:

# If linked globally
mysql-server

# Or run directly using node
node build/index.js 

服务器将启动并打印 MySQL MCP server running on stdio 到stderr,然后在标准输入/输出上监听MCP请求。您通常会配置MCP客户端(例如,AI助手集成)以连接到此服务器进程。

可用工具

服务器公开以下工具供MCP客户端使用:

1. query

  • 说明: 对配置的数据库执行只读SQL查询(SELECT、SHOW、DESCRIBE)。
  • 输入架构:
    {
      "type": "object",
      "properties": {
        "sql": {
          "type": "string",
          "description": "The read-only SQL query (SELECT, SHOW, DESCRIBE) to execute."
        }
      },
      "required": ["sql"]
    }
    
  • 输出: 在MCP响应中以JSON字符串的形式返回查询结果 content。如果查询不是只读的或存在数据库错误,则返回错误。

2. insert

  • 说明: 执行INSERT SQL语句。 需要 MYSQL_ALLOW_WRITE_OPS 设置为 true.
  • 输入架构:
    {
      "type": "object",
      "properties": {
        "sql": {
          "type": "string",
          "description": "The INSERT SQL statement to execute."
        }
      },
      "required": ["sql"]
    }
    
  • 输出: 返回一条成功消息,其中包括受影响的行和插入ID(如果适用),或者如果操作失败或写入操作被禁用,则返回一条错误消息。

3. update

  • 说明: 执行UPDATE SQL语句。 需要 MYSQL_ALLOW_WRITE_OPS 设置为 true.
  • 输入架构:
    {
      "type": "object",
      "properties": {
        "sql": {
          "type": "string",
          "description": "The UPDATE SQL statement to execute."
        }
      },
      "required": ["sql"]
    }
    
  • 输出: 返回包含受影响行的成功消息,如果操作失败或写入操作被禁用,则返回错误消息。

4. delete

  • 说明: 执行DELETE SQL语句。 需要 MYSQL_ALLOW_WRITE_OPS 设置为 true.
  • 输入架构:
    {
      "type": "object",
      "properties": {
        "sql": {
          "type": "string",
          "description": "The DELETE SQL statement to execute."
        }
      },
      "required": ["sql"]
    }
    
  • 输出: 返回包含受影响行的成功消息,如果操作失败或写入操作被禁用,则返回错误消息。

发展

要处理服务器代码,请执行以下操作:

  1. 克隆存储库: (如适用)
    # git clone <repository-url>
    # cd mysql-server
    
  2. 安装依赖项:
    npm install
    
  3. 构建代码: (将TypeScript编译为JavaScript build/)
    npm run build
    
  4. 注意变化: (更改后自动重新编译)
    npm run watch
    
  5. 运行MCP检查器: (用于在本地测试/调试服务器)
    # Make sure you have built the code first
    npm run inspector