该项目提供了一个只读的模型上下文协议(MCP)服务器,用于与MySQL和PostgreSQL数据库进行交互。它允许兼容MCP的客户端通过一组定义的工具检查数据库模式、检索元数据并执行只读SQL查询。该服务器在设计时考虑了可扩展性,并强制执行只读操作以确保安全。
服务器通过MCP暴露了多个用于数据库交互的工具。所有工具都设计为只读操作。
get_table_columns: 获取特定表的列定义。get_schema: 获取详细的模式信息,包括表、列、索引和约束,具有不同的详细级别。get_indexes: 获取特定表或所有表的索引信息。get_constraints: 获取特定表或所有表的约束信息(主键、外键、唯一、检查)。compare_schemas: 比较两个不同数据库模式的结构(表和列)。explain_schema: 生成数据库模式的文本或结构化(JSON)描述。detect_schema_changes: 返回当前模式的快照。(注意:不与特定过去时间进行比较)。find_relationships: 发现显式的外键关系。可以尝试根据命名约定发现隐式关系(谨慎使用)。find_navigation_paths: 使用显式的外键关系(广度优先搜索算法)查找两个表之间的路径。execute_query: 执行给定的只读SQL查询(SELECT, SHOW, DESCRIBE, EXPLAIN)。execute_batch: 顺序执行多个只读SQL查询。可以在第一个错误时停止或尝试所有。prepare_statement: 准备并执行带有参数的只读SQL语句。explain_query: 对给定的SQL语句执行EXPLAIN,显示查询执行计划(文本或JSON格式)。get_query_history: 占位符工具。服务器端查询历史尚未实现。visualize_schema: 生成模式表示(表、列、关系),适用于创建ER图的JSON、DOT(Graphviz)或Mermaid语法。get_performance_metrics: 从MySQL中获取选定的全局状态变量(例如,运行时间、线程数、查询数)。不提供特定查询的历史记录。前提条件:
克隆仓库:
git clone https://github.com/kaulvimal/mysql-mcp
cd mysql-mcp
安装依赖项:
npm install
构建项目:
npm run build
这将创建一个包含编译代码的build目录。
使用服务器
在项目根目录或方便的位置创建一个shell脚本(例如,mysql-mcp.sh):
#!/bin/bash
# 设置环境变量(如果未使用.env或想要覆盖)
export MYSQL_HOST=""
export MYSQL_USER=""
export MYSQL_PASSWORD=""
export MYSQL_PORT=""
export PG_HOST=""
export PG_USER=""
export PG_PASSWORD=""
export PG_PORT=""
export PG_DATABASE=""
node $(dirname "$0")/build/index.js
将脚本设为可执行:
chmod +x mysql-mcp.sh
集成示例(Cursor)
要将此服务器集成到Cursor中,您可以配置客户端以运行服务器的执行脚本:
{
"mcpServers": {
"mysql-mcp": {
"command": "/path/to/your/mysql-mcp.sh" // 替换为实际脚本路径
}
}
}