mcpField
M
MySQL MCP Server

MySQL MCP Server

本地服务
github.com/yuki777数据库177 周前更新

关于 MySQL MCP Server

MySQL MCP Server 将 MySQL 数据库接入 LLM,供需要查询数据或管理连接的 MCP 客户端使用。它提供 SQL 执行、数据库结构查询和可复用的命名连接配置,并通过 stdio 通信。

主要功能

  1. 01执行 SQL 查询
  2. 02查看数据库与表结构
  3. 03管理数据库连接
  4. 04保存并切换连接配置
  5. 05通过 stdio 通信

适用场景

  1. 01让 LLM 查询 MySQL 数据
  2. 02检查数据库和表结构
  3. 03在多个数据库连接间切换

MCP 相关

这是一个 MCP 服务,向 MCP 客户端提供数据库连接管理、SQL 查询和数据库结构检查工具。它使用 stdio 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"mysql-mcp-server-yuki777": {
"command": "npx",
"args": [
"-y",
"https://github.com/yuki777/mysql-mcp-server"
]
}
}
}
启动命令npx -y https://github.com/yuki777/mysql-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmysql-mcp-server

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MySQL MCP Server

MySQL Model Context Protocol(MCP)服务是一个用于连接本地环境中的 MySQL 数据库,并允许大模型(LLM)执行 SQL 查询的工具。

要求

  • Node.js:20.0.0 或更高版本
  • MySQL:MySQL 或 MariaDB 服务端 5.7 或更高版本

功能

  • 执行 MySQL 查询:允许 LLM 直接执行 SQL 查询
  • 获取数据库信息:查看数据库列表、表列表和表结构
  • 符合 MCP 规范:支持 Model Context Protocol,可与 LLM 集成
  • stdio 通信:使用标准输入输出与 LLM 通信,无需绑定端口
  • 连接配置管理:通过配置名称管理多个连接设置并进行切换
  • 保存连接信息:在本地保存数据库连接信息以供重复使用

安装和使用方法

使用 NPX 临时运行
 npx -y https://github.com/yuki777/mysql-mcp-server --host 127.0.0.1 --port 13306 --user root
选项
选项说明默认值
-h, --host <host>MySQL 主机localhost
-p, --port <port>MySQL 端口13306
-u, --user <user>MySQL 用户root
--password <password>MySQL 密码(空字符串)
-d, --database <database>默认数据库(可选)
-c, --config <path>配置文件路径(可选)
--auto-connect服务启动时自动连接数据库false
--server-port <port>MCP 服务端口(stdio 模式下不会使用)3000
--server-host <host>MCP 服务主机(stdio 模式下不会使用)localhost
--query-timeout <ms>查询超时时间(毫秒)30000
--max-results <count>最大结果行数1000
--debug调试模式false
保存和重复使用连接信息

MySQL MCP Server 会将成功连接的数据库信息作为命名配置保存在本地。这样,下次启动时即可通过名称指定并重复使用连接信息。保存的连接信息位于用户主目录中的 .mysql-mcp-connections.json 文件内。

每个连接配置包含以下信息:

  • 配置名称
  • 主机名
  • 端口号
  • 用户名
  • 密码
  • 数据库名称(如已设置)

可以通过配置名称管理多个数据库连接,并轻松切换。

使用配置文件

也可以使用配置文件(JSON 格式)设置连接信息:

{
  "server": {
    "port": 3000,
    "host": "localhost"
  },
  "mysql": {
    "host": "localhost",
    "port": 13306,
    "user": "root",
    "password": "yourpassword",
    "database": "mydb"
  },
  "debug": false,
  "queryTimeout": 30000,
  "maxResultSize": 1000
}

使用配置文件时:

npx -y https://github.com/yuki777/mysql-mcp-server -c ./mysql-mcp-config.json

通信方式

MySQL MCP Server 以符合 MCP(Model Context Protocol)的「stdio」模式运行。它不会绑定到特定端口,而是通过标准输入输出进行通信。此方式有以下优点:

  1. 避免端口冲突:不使用特定端口,因此不会发生端口冲突
  2. 提升安全性:不使用网络通信,可降低网络层攻击风险
  3. 简化进程间通信:简化与 LLM 的通信
注意事项
  • stdio 模式下,消息以 JSON 格式交换
  • 每行必须发送一条 JSON 消息
  • 错误信息和连接日志会输出到标准错误(stderr)

提供的 MCP 工具

数据库连接管理
工具名称说明必需参数
connect_database连接数据库host, port, user
connect_by_profile使用已保存的配置名称连接profileName
disconnect_database断开当前数据库连接无
get_connection_status获取数据库连接状态无
连接配置管理
工具名称说明必需参数
list_profiles获取已保存的配置列表无
get_profile获取配置详情profileName
add_profile添加新配置profileName, host, port, user
remove_profile删除配置profileName
SQL 查询操作
工具名称说明必需参数
execute_query执行 MySQL 查询query: SQL 语句
get_databases获取可用数据库列表无
get_tables获取指定数据库中的表列表database(可选)
describe_table获取指定表的结构table

连接管理功能

MySQL MCP Server 可以将服务启动与数据库连接分开处理。这种方式有以下优点:

  1. 无需连接信息即可启动:即使没有数据库连接信息,服务也可以启动
  2. 连接多个数据库:服务启动后,可以切换连接到不同的数据库
  3. 安装简单:只需运行 npx -y https://github.com/yuki777/mysql-mcp-server 即可
连接管理使用方法
  1. 不启用自动连接,启动服务:

    npx -y https://github.com/yuki777/mysql-mcp-server
    
  2. 使用连接工具连接数据库(并指定配置名称保存):

    {
      "type": "tool_call",
      "request_id": "req_1",
      "tool": "connect_database",
      "arguments": {
        "host": "localhost",
        "port": 3306,
        "user": "root",
        "password": "your_password",
        "database": "your_db",
        "profileName": "my-db"
      }
    }
    
  3. 获取配置列表:

    {
      "type": "tool_call",
      "request_id": "req_2",
      "tool": "list_profiles",
      "arguments": {}
    }
    
  4. 按配置名称连接:

    {
      "type": "tool_call",
      "request_id": "req_3",
      "tool": "connect_by_profile",
      "arguments": {
        "profileName": "my-db"
      }
    }
    
  5. 添加新配置(不会建立连接):

    {
      "type": "tool_call",
      "request_id": "req_4",
      "tool": "add_profile",
      "arguments": {
        "profileName": "production-db",
        "host": "prod.example.com",
        "port": 3306,
        "user": "prod_user",
        "password": "prod_password",
        "database": "production"
      }
    }
    
  6. 检查连接状态:

    {
      "type": "tool_call",
      "request_id": "req_5",
      "tool": "get_connection_status",
      "arguments": {}
    }
    
  7. 断开连接:

    {
      "type": "tool_call",
      "request_id": "req_6",
      "tool": "disconnect_database",
      "arguments": {}
    }
    
测试脚本

仓库中包含一个名为 test-connection-management.js 的测试脚本。可以使用此脚本测试连接管理功能:

node test-connection-management.js

开发者信息

设置开发环境
# リポジトリのクローン
git clone [repository-url]
cd mysql-mcp-server

# 依存関係のインストール
npm install

# 開発モードでの実行
npm run dev
构建
npm run build

许可证

ISC

贡献

欢迎提交错误报告、功能请求和拉取请求。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。