返回市场
MySQL-MCP-服务器

MySQL-MCP-服务器

作者:SuMiaoALi2 星标更新:2025-05-30

项目介绍

MySQL MCP 服务器

一个提供安全的MySQL数据库操作的模型上下文协议(MCP)服务器,适用于AI助手和其他MCP客户端。

功能

🛠️ 工具

  • execute_query - 执行安全的SQL查询(SELECT, INSERT, SHOW, DESCRIBE)
  • get_table_info - 获取详细的表结构信息
  • insert_data - 方便的数据插入,自动参数化
  • list_tables - 列出数据库中的所有表

📊 资源

  • 数据库信息 (mysql://database/info) - 数据库元数据和表列表
  • 表结构 (mysql://table/{table_name}) - 详细的表模式信息

🔒 安全特性

  • 有限的操作:仅允许安全操作(SELECT, INSERT, SHOW, DESCRIBE)
  • SQL注入防护:使用参数化查询
  • 自动LIMIT:在SELECT查询中添加LIMIT子句以防止大量数据导出
  • 连接池:高效的数据库连接管理

安装

npm install mysql-mcp-server

配置

服务器可以通过环境变量进行配置:

变量默认值描述
MYSQL_HOSTlocalhostMySQL服务器主机名
MYSQL_PORT3306MySQL服务器端口
MYSQL_USERrootMySQL用户名
MYSQL_PASSWORD(空)MySQL密码
MYSQL_DBmysql默认数据库名
MYSQL_TIMEZONE+0_00MySQL时区

使用MCP客户端

Claude Desktop

在你的Claude Desktop配置文件中添加:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mysql": {
      "command": "npx",
      "args": ["mysql-mcp-server"],
      "env": {
        "MYSQL_HOST": "your-mysql-host",
        "MYSQL_PORT": "3306",
        "MYSQL_USER": "your-username",
        "MYSQL_PASSWORD": "your-password",
        "MYSQL_DB": "your-database"
      }
    }
  }
}

其他MCP客户端

对于其他MCP客户端,使用stdio传输方式启动服务器:

npx mysql-mcp-server

开发

前提条件

  • Node.js 18+
  • TypeScript
  • 访问MySQL数据库

设置

  1. 克隆仓库:
git clone https://github.com/your-username/mysql-mcp-server.git
cd mysql-mcp-server
  1. 安装依赖:
npm install
  1. 设置环境变量:
cp .env.example .env
# 编辑.env文件以配置你的数据库设置
  1. 构建服务器:
npm run build

开发命令

# 构建服务器
npm run build

# 开发监视模式
npm run watch

# 使用MCP Inspector调试
npm run inspector

测试

你可以使用MCP Inspector测试服务器:

npm run inspector

这将启动Inspector并提供一个URL,在浏览器中测试服务器。

示例用法

一旦通过MCP客户端连接后,你可以:

  1. 列出所有表

    使用list_tables工具
    
  2. 获取表结构

    使用get_table_info,表名为"users"
    
  3. 查询数据

    使用execute_query,SQL语句为"SELECT * FROM users LIMIT 10"
    
  4. 插入数据

    使用insert_data,表名为"users",数据为{"name": "John", "email": "john@example.com"}
    

安全考虑

此服务器设计时考虑了安全性:

  • 读取为主的操作:仅允许SELECT, INSERT, SHOW, 和DESCRIBE操作
  • 无破坏性操作:明确禁止UPDATE和DELETE操作
  • 参数化查询:所有用户输入都被正确转义
  • 连接限制:使用连接池防止资源耗尽
  • 查询限制:自动LIMIT子句防止大量数据导出

贡献

欢迎贡献!请随意提交Pull Request。

许可证

MIT许可证 - 详情见LICENSE文件。

相关