MySQL数据库查询服务

一个通过Claude AI执行MySQL数据库查询的MCP服务器实现,支持SQL查询、表结构查看和数据操作。

  • by TLazari
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 TLazari/mcp-mysql

使用说明

MCP MySQL服务器

MCP(模型上下文协议)服务器,用于通过Claude AI在MySQL数据库中执行查询。

此存储库包含一个完整的 Node.js/TypeScript MCP 服务器实现,允许 Claude 执行 SQL 查询、列出表格和探索 MySQL 数据库结构。

功能

MySQL 数据库工具

  • 查询数据库执行SQL查询(SELECT,INSERT,UPDATE,DELETE)并支持参数化查询
  • 列表表格列出已连接数据库中的所有表
  • 描述表格显示特定表格的结构(列、类型、键)

技术特点

  • 使用输入校验 黄道
  • 使用 MySQL 连接 mysql2 连接池
  • 安全参数化查询(SQL 注入预防)
  • 通过通信 标准 MCP协议(@modelcontextprotocol/sdk)
  • 支持MySQL 5.7+

建筑

该项目遵循一个层次架构,灵感来自 领域驱动设计 (DDD):

  • 领域 (src/domain): 定义代表银行数据结构的接口和类型(例如: DatabaseConfig, QueryResult, DatabaseError)

  • 基础设施 (src/infrastructure): 提供外部服务,如 MySQLService负责与MySQL数据库的通信

  • 应用 (src/application): 包含商业逻辑 DatabaseService处理和格式化查询结果

  • 接口 (src/interface): 包括驱动程序 (DatabaseToolsController在MCP服务器上注册工具,定义验证方案并返回结果

  • 入口点 (src/main.ts): 初始化 McpServer, 配置传输 (StdioServerTransport服务和控制器,并开始监听 标准

文件夹结构如下 :

src/
├── domain/
│   └── models/           # Interfaces de domínio (Database)
├── infrastructure/
│   └── services/         # Implementação do cliente MySQL
├── application/
│   └── services/         # Lógica de negócio e formatação de dados
├── interface/
│   └── controllers/      # Registro das ferramentas MCP e validação
└── main.ts               # Ponto de entrada do servidor
build/                     # Código JavaScript compilado

安装

git clone <REPOSITÓRIO_URL>
cd mcp-server-sample
npm install
npm run build:windows    # Windows
# ou
npm run build            # Linux/Mac

数据库配置

要连接到现有的 MySQL Docker:

1. 设置环境变量

复制示例文件 :

# No Windows (PowerShell)
copy .env.example .env

# No Linux/Mac
cp .env.example .env

2. 编辑凭据

编辑文件 .env 使用您的 MySQL Docker 凭据:

DB_HOST=localhost
DB_PORT=3306
DB_USER=seu_usuario_mysql
DB_PASSWORD=sua_senha_mysql
DB_NAME=seu_banco

3. 测试连接

npm run test-db

如果连接成功,您将看到:

✅ Conexão estabelecida com sucesso!
✅ Query executada com sucesso!
🎉 Todos os testes passaram!

使用

构建后,您可以直接运行服务器:

npm run server

您应该会看到:

MySQL connection pool established successfully
✅ Database tools enabled
🚀 MCP MySQL Server running on stdio

与 Claude Desktop 集成

在 Claude 配置文件中配置服务器 :

窗户: %APPDATA%\Claude\claude_desktop_config.json

雨衣: ~/Library/Application Support/Claude/claude_desktop_config.json

添加( 设置路径和凭据) :

{
  "mcpServers": {
    "mysql": {
      "command": "node",
      "args": ["C:\\caminho\\completo\\para\\build\\main.js"],
      "env": {
        "DB_HOST": "localhost",
        "DB_PORT": "3306",
        "DB_USER": "seu_usuario",
        "DB_PASSWORD": "sua_senha",
        "DB_NAME": "seu_banco"
      }
    }
  }
}

重新启动 Claude Desktop 并进行测试!

使用范例

表格列表 :

“列出数据库中的所有表”

查询数据 :

“显示 users 表中的前十条记录”

数据分析:

“有多少活跃用户?”

表格结构 :

“显示产品表的结构”

JSON(MCP 格式)

表格列表 :

{
  "name": "list-tables"
}

描述表格的结构 :

{
  "name": "describe-table",
  "arguments": {
    "tableName": "users"
  }
}

执行器查询SELECT:

{
  "name": "query-database",
  "arguments": {
    "query": "SELECT * FROM users WHERE active = ? LIMIT 10",
    "params": [1]
  }
}

执行人插入:

{
  "name": "query-database",
  "arguments": {
    "query": "INSERT INTO users (name, email) VALUES (?, ?)",
    "params": ["João Silva", "joao@example.com"]
  }
}

可用脚本

npm run build:windows    # Build TypeScript (Windows)
npm run build            # Build TypeScript (Linux/Mac)
npm run server           # Inicia o servidor MCP
npm run test-db          # Testa conexão com MySQL

附加文档

安全

  • ✅ 参数化查询(SQL 注入预防)
  • ✅ 有资源限制的连接池
  • ✅ 使用 Zod 验证输入
  • ✅ 凭据的环境变量
  • ✅ 结构化错误处理

建议

  • 使用有限权限的 MySQL 用户
  • 不提交文件 .env 没有Git
  • 为生产连接配置 SSL/TLS
  • 在公共环境中实施速度限制

贡献

Pull Requests 欢迎!随时开放问题并讨论改进。

许可证

国际协调委员会

学分

基于教育项目 电视源代码.