使用说明(Markdown 格式)
-
项目简介
- 该仓库实现一个 MCP 服务器,核心职责是以标准化的 JSON-RPC 方式向 LLM 客户端提供上下文信息和功能,包括对 MySQL 的只读资源管理、可执行工具、以及向量工具等扩展能力。支持多种传输方式(标准输入输出、HTTP REST API、WebSocket 等)以对接不同的客户端。
-
主要功能点
- Core MCP 工具:list_databases、list_tables、describe_table、run_query、ping、server_info,提供对数据库的只读查询和系统信息。
- Multi-DSN 支持:可配置多组 MySQL 连接,LLM 客户端可切换连接。
- 向量工具(MYSQL_MCP_VECTOR=1,MySQL 9.0+):vector_search、vector_info,支持向量列的相似性检索与信息查询。
- Extended Tools(MYSQL_MCP_EXTENDED=1,扩展工具集):list_indexes、show_create_table、explain_query、list_views、list_triggers、list_procedures、list_functions、list_partitions、database_size、table_size、foreign_keys、list_status、list_variables 等。
- REST API 模式:可选开启,提供 /api/databases、/api/tables、/api/query 等端点,便于与 HTTP 客户端集成。
- 安全性与可观测性:集成 JSON 结构化日志、查询审计日志、严格的 SQL 安全校验、以及对传输/访问的审计能力。
-
安装步骤
- 需要环境:Go 1.24 及以上、Docker/Testcontainers(集成测试时)、MySQL 实例(用于实际连接和验证)。
- 构建二进制
- 在源码根目录执行 make build,得到 bin/mysql-mcp-server(二进制名可能随构建设置而变)。
- 运行服务器(常用模式)
- 设置一个有效的 MySQL DSN(示例:export MYSQL_DSN="user:password@tcp(localhost:3306)/dbname?parseTime=true"),以及所需的特性开关,例如:
- MYSQL_MCP_EXTENDED=1 启用扩展工具
- MYSQL_MCP_VECTOR=1 启用向量工具
- MYSQL_MCP_HTTP=1 启用 REST API
- 启动服务器(本地可直接执行生成的二进制,可通过环境变量控制行为):
- 直接运行二进制(使用默认设置和单个 DSN)
- 或在容器中运行,结合环境变量传入 DSN 与开关
- 设置一个有效的 MySQL DSN(示例:export MYSQL_DSN="user:password@tcp(localhost:3306)/dbname?parseTime=true"),以及所需的特性开关,例如:
- 启动后若开启 REST API,则提供 HTTP 端点,示例端点包括 /health、/api 等,用于运维与监控。
-
服务器配置(MCP 客户端侧的配置示例说明) 注:以下为 MCP 客户端需要读取的配置示例,JSON 配置用于描述 MCP 服务器的启动命令与环境参数,客户端本身并不需要执行下列代码,仅用于演示配置结构。实际配置请按下述字段描述在客户端配置中填写: { "mcpServers": { "mysql": { "command": "/absolute/path/to/mysql-mcp-server", "args": [], "env": { "MYSQL_DSN": "user:password@tcp(localhost:3306)/mydb?parseTime=true", "MYSQL_MAX_ROWS": "200", "MYSQL_MCP_EXTENDED": "1", "MYSQL_MCP_VECTOR": "1", "MYSQL_HTTP_PORT": "9306", "MYSQL_MCP_HTTP": "1" }, "description": "MySQL MCP 服务端(只用于 MCP 客户端连接,示例配置)" } } }
说明与要点
- server name:用于标识 MCP 服务端的名称(如 "mysql")。
- command:服务器启动可执行文件的绝对路径或容器中命令名。
- args:启动时传入的参数,如需要的端口或传输模式配置。
- env:环境变量配置,客户端连接时需要的 DSN、并发/超时等选项。
- 该配置仅用于 MCP 客户端了解如何启动并连接服务器;实际运行时客户端无需包含敏感信息,确保 DSN 等在实际环境中安全管理。
-
基本使用方法
- 使用 MCP 客户端(如 Claude Desktop、Cursor IDE)连接时,确保提供上述 JSON 配置中的 command 与 env,对应服务器启动命令及所需参数。
- 通过 MCP 客户端可调用 core tools(如 list_databases、run_query 等)获取资源、执行只读查询以及获取服务器信息。
- 如需向量工具、扩展工具,请在环境变量中开启对应功能开关(VECTOR、EXTENDED),并确保后端数据库版本和配置符合要求。
- 若开启 REST API,使用浏览器或任意 HTTP 客户端访问 /api/* 端点进行查询与管理。
-
备注
- 本实现包含了完整的后端 MCP 服务器、工具注册、资源与向量工具、HTTP REST API、以及对多 MySQL DSN 的支持。还包含了大量单位测试、集成测试与安全验证代码,覆盖了 MCP 服务端的核心能力、可观测性、以及对传输/并发场景的鲁棒性。
信息
分类
AI与计算