BD MCP 服务器
MCP服务器(模型上下文协议 - Anthropic)用于数据库——提供工具,以便从MCP代理/客户端以只读模式查询MySQL数据库。该项目使用Node.js + TypeScript构建,并使用pnpm进行管理。
摘要
这个仓库包含一个MCP服务器的实现,它:
- 展示用于以下目的的工具:
- 执行安全的SELECT/SHOW/DESCRIBE查询。 - 列出表格。 - 描述表结构。
- 美国
mysql2/promise带有连接池。 - 应用安全限制:
- 仅允许阅读查询。 - 预防写作中的关键词(或:避免在写作中使用特定关键词)。 - 添加 LIMIT 仅在SELECT中不使用 LIMIT。
- 向stderr记录日志并支持DEBUG(DEBUG=true)。
要求
- Node.js 版本 >= 18
- pnpm(注:pnpm是一个包管理器,全称为Performance Packager Manager,中文可译为“高性能包管理器”,但在此处直接保留原英文形式以指代其特定名称)
- 从运行服务器的主机访问MySQL
环境变量
设置以下变量(示例 .env 文件未包含在仓库中):
建议创建具有只读权限的用户:
-- Conecta como root a MySQL
CREATE USER 'mcp_readonly_user'@'localhost' IDENTIFIED BY 'passmcp_readonly_password';
-- Otorga SOLO permisos de lectura
GRANT SELECT, SHOW VIEW ON your_database(s).* TO 'mcp_readonly_user'@'localhost';
-- Aplica los cambios
FLUSH PRIVILEGES;- MYSQL_HOST(默认:localhost)
- MYSQL_PORT(默认:3306)
- MYSQL_USER(MySQL用户名)
- MYSQL_PASSWORD(MySQL密码)
- MYSQL_DATABASE 翻译为中文是“MySQL 数据库”
- 调试(可选,
true用于调试日志 (DEBUG)
Windows PowerShell 示例:
$env:MYSQL_HOST="db.example.com"
$env:MYSQL_USER="developer"
$env:MYSQL_PASSWORD="secret"
$env:MYSQL_DATABASE="mcp_pos"
$env:DEBUG="true"安装
使用 pnpm:
pnpm install编译 TypeScript:
pnpm build执行
开发模式(如果已配置,则直接使用ts-node)或使用构建:
使用构建:
pnpm build
node dist/index.js日志和输出:
- 所有的日志都将输出到标准错误(stderr)。MCP 协议通过标准输入/标准输出(stdio 传输)进行通信。
展示的工具(tools)
- 列出表(或“表列表”)
- 输入:{} - 输出:配置模式的表列表。
- 描述表
- 输入:{ 表名: 字符串 } - 输出:表的架构/列。
- 查询位置数据库(或查询工具)
- 输入:{ sql: 字符串, params?: 任意数组 } - 限制:仅限 SELECT/SHOW/DESCRIBE。 LIMIT 100 它仅添加到没有 LIMIT 的 SELECT 中。 - 输出:返回的行数、计数和执行时间。
使用示例(MCP有效载荷)
列出表格:
{
"tool": "list_tables",
"input": {}
}描述表格:
{
"tool": "describe_table",
"input": { "tableName": "users" }
}执行 SELECT:
{
"tool": "query_pos_database",
"input": { "sql": "SELECT id, name FROM users WHERE active = 1", "params": [] }
}注:通话必须遵守您客户端/代理所使用的MCP协议。
故障排除
- 在添加 LIMIT 时附近出现 SQL 语法错误:'LIMIT 100'
SHOW/DESCRIBE解决方案:现在服务器只添加LIMIT一个没有 LIMIT 子句的 SELECT 语句。 - 连接被拒绝:请检查凭据以及主机/端口是否可访问。
- 如果表格未显示:请检查是否
MYSQL_DATABASE指向正确的模式。
贡献
分支(Fork)-> 功能分支(feature branch)-> 向(目标)提交拉取请求(PR hacia) dev -> 审查 -> 合并到 main. 按照PR(构建、手动测试、环境变量配置)的检查清单进行。
许可证
麻省理工学院(MIT)
