MySQL数据库操作服务

一个为AI助手和其他MCP客户端提供安全MySQL数据库操作的MCP服务器。

  • by SuMiaoALi
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 sumiaoali/mysql-mcp-server

使用说明

MySQL MCP服务器

A. 模型上下文协议(MCP) 为AI助手和其他MCP客户端提供安全MySQL数据库操作的服务器。

特性

🛠️ 工具

  • 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注入保护:使用参数化查询
  • 自动限制:在SELECT查询中添加LIMIT子句以防止大数据转储
  • 连接池:高效的数据库连接管理

安装

npm install mysql-mcp-server

配置

可以使用环境变量配置服务器:

变量 默认值 描述
MYSQL_HOST localhost MySQL服务器主机名
MYSQL_PORT 3306 MySQL服务器端口
MYSQL_USER root MySQL用户名
MYSQL_PASSWORD (空) MySQL密码
MYSQL_DB mysql 默认数据库名称
MYSQL_TIMEZONE +00:00 MySQL时区

与MCP客户端一起使用

克劳德桌面

添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %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
# Edit .env with your database configuration
  1. 构建服务器:
npm run build

开发命令

# Build the server
npm run build

# Watch mode for development
npm run watch

# Debug with MCP Inspector
npm run inspector

测试

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

npm run inspector

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

示例用法

通过MCP客户端连接后,您可以:

  1. 列出所有表格:

    Use the list_tables tool
    
  2. 获取表结构:

    Use get_table_info with table_name: "users"
    
  3. 查询数据:

    Use execute_query with sql: "SELECT * FROM users LIMIT 10"
    
  4. 插入数据:

    Use insert_data with table_name: "users" and data: {"name": "John", "email": "john@example.com"}
    

安全考虑

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

  • 主要阅读操作:只允许SELECT、INSERT、SHOW和DESCRIBE操作
  • 无破坏性操作:明确禁止更新和删除
  • 参数化查询:所有用户输入都已正确转义
  • 连接限制:使用连接池来防止资源耗尽
  • 查询限制:自动LIMIT子句防止大数据转储

贡献

欢迎投稿!请随时提交拉取请求。

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

相关