使用说明
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
附加文档
- 设置-MYSQL.md - 快速设置指南 (3 步骤)
- QUICKSTART.md - 完整的快速入门指南
- 数据库.md 详细的工具文件
- 项目结构.md 项目架构与结构
安全
- ✅ 参数化查询(SQL 注入预防)
- ✅ 有资源限制的连接池
- ✅ 使用 Zod 验证输入
- ✅ 凭据的环境变量
- ✅ 结构化错误处理
建议
- 使用有限权限的 MySQL 用户
- 不提交文件
.env没有Git - 为生产连接配置 SSL/TLS
- 在公共环境中实施速度限制
贡献
Pull Requests 欢迎!随时开放问题并讨论改进。
许可证
国际协调委员会
学分
基于教育项目 电视源代码.