本项目提供了一个只读的模型上下文协议(MCP)服务器,用于与 MySQL 和 PostgreSQL 数据库进行交互。借助该服务器,兼容 MCP 的客户端能够通过一组定义好的工具,检查数据库架构、检索元数据并执行只读 SQL 查询。同时,该服务器具备可扩展性,且强制执行只读操作,充分保障了使用安全。
此只读的 MCP 服务器允许兼容 MCP 的客户端对数据库架构进行检查、检索元数据并执行只读 SQL 查询。以下是使用该服务器的快速步骤:
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
:生成架构表示(表、列、关系)为 JSON、DOT(Graphviz)或 Mermaid 语法,适用于创建 ER 图。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=""