项目简介
MySQL MCP Server 是一个基于 Java 开发的 MCP 服务器,它允许 AI 助手(如 Claude)安全地与 MySQL 数据库进行交互。该项目是 Python 版本 'design-computer/mysql_mcp_server' 的 Java 移植,保留了核心功能和逻辑。它旨在作为学习 MCP 概念的实践项目,并为 Java 环境提供 MySQL 数据库的 MCP 服务能力。
主要功能点
- 资源 (Resources): 将 MySQL 数据库中的表作为资源暴露,允许 LLM 客户端获取表结构和数据。
- 支持列出所有可用的 MySQL 表。
- 支持读取指定表的内容(默认限制 100 行)。
- 工具 (Tools): 提供执行 SQL 查询的工具,使 LLM 客户端能够通过受控的方式查询和操作数据库。
- 支持执行 'SELECT' 查询以读取数据。
- 支持执行 'SHOW TABLES' 查询以列出数据库中的表。
- 支持执行 'INSERT', 'UPDATE', 'DELETE' 等 SQL 语句进行数据更新。
- 提供基本的 SQL 错误处理。
- Prompt 模板 (Prompts): 包含一个名为 'mcp-mysql-prompt' 的 Prompt 模板,用于引导用户进行数据库探索和分析,例如基于特定主题创建数据库场景。
- 安全性: 通过环境变量管理数据库连接信息,避免硬编码敏感信息。
- 日志: 提供全面的日志记录,方便监控和审计数据库操作。
注意: 该项目主要用于学习和演示 MCP 概念,可能不适用于生产环境,请务必关注安全性最佳实践。
安装步骤
由于这是一个 Java 项目,用户通常不需要执行 'pip install mysql-mcp-server' 命令,该命令可能是原始 Python 版本的安装方式。
要运行此 Java 版本的 MCP Server,您需要:
- 克隆仓库: 从 GitHub 克隆 'mcp-server-mysql' 仓库到本地。
- 安装 Java 和 Maven: 确保您的系统已安装 Java Development Kit (JDK) 和 Maven。
- 构建项目: 在项目根目录下,使用 Maven 构建项目。
mvn clean install - 配置环境变量: 设置以下环境变量,用于数据库连接:
重要安全提示: 请勿将数据库凭据硬编码到代码或提交到版本控制系统。使用环境变量是更安全的做法。MYSQL_HOST=localhost # MySQL 服务器主机名 MYSQL_PORT=3306 # MySQL 服务器端口 (可选,默认为 3306) MYSQL_USER=your_username # MySQL 数据库用户名 MYSQL_PASSWORD=your_password # MySQL 数据库密码 MYSQL_DATABASE=your_database # 要连接的 MySQL 数据库名
服务器配置
对于 MCP 客户端(例如 Claude Desktop),您需要配置服务器的启动命令和参数。以下是一个 'claude_desktop_config.json' 的配置示例,请根据实际情况调整路径:
{ "mcpServers": { "mysql": { "command": "java", // 启动命令,这里假设您使用 java 命令运行 JAR 文件 "args": [ "-jar", "path/to/mcp-server-mysql-0.0.1-SNAPSHOT.jar" // 构建后生成的 JAR 文件路径,请替换为实际路径 ], "env": { // 环境变量配置,与安装步骤中设置的环境变量一致 "MYSQL_HOST": "localhost", "MYSQL_PORT": "3306", "MYSQL_USER": "your_username", "MYSQL_PASSWORD": "your_password", "MYSQL_DATABASE": "your_database" } } } }
参数说明:
- '"mysql"': 服务器名称,客户端用此名称标识和调用该 MCP 服务器。
- '"command": "java"': 指定用于启动服务器的命令,这里假设您使用 'java -jar' 运行 JAR 文件。
- '"args": [...]"': 命令的参数列表。
- '"-jar"': 'java' 命令的参数,表示运行 JAR 文件。
- '"path/to/mcp-server-mysql-0.0.1-SNAPSHOT.jar"': 请务必替换为实际的 JAR 文件路径。 此 JAR 文件通常在 Maven 构建后的 'target' 目录下。
- '"env": {...}': 环境变量配置,这些环境变量将被传递给 MCP 服务器进程。请确保配置正确的 MySQL 连接信息。
如果您直接运行 'Main.java' (例如在 IDE 中):
{ "mcpServers": { "mysql": { "command": "java", "args": [ "Main" // 假设 Main 类在 classpath 中 ], "env": { "MYSQL_HOST": "localhost", "MYSQL_PORT": "3306", "MYSQL_USER": "your_username", "MYSQL_PASSWORD": "your_password", "MYSQL_DATABASE": "your_database" } } } }
基本使用方法
- 启动 MCP Server: 根据上述配置,启动 MySQL MCP Server。如果您使用 JAR 文件,则运行配置中 'command' 和 'args' 指定的命令。如果您在 IDE 中运行,则直接运行 'Main.java'。
- 配置 MCP 客户端: 在 MCP 客户端(例如 Claude Desktop)中,添加上述 'claude_desktop_config.json' 中 '"mcpServers"' 部分的配置。确保服务器名称 ('"mysql"') 与客户端配置一致。
- 客户端连接和交互: 客户端启动后,应该能够检测到并连接到 MySQL MCP Server。您可以使用客户端提供的界面来:
- 浏览和读取 MySQL 数据库中的表资源。
- 调用 'execute_sql' 工具执行 SQL 查询,例如查询数据或执行管理操作。
- 使用 'mcp-mysql-prompt' Prompt 模板来引导 LLM 进行数据库相关的对话和任务。
安全最佳实践:
- 最小权限原则: 为 MCP 服务器创建专用的 MySQL 用户,并授予其执行必要操作的最小权限。永远不要使用 root 用户或管理员账户。
- 查询白名单/黑名单: 在生产环境中,考虑实现查询白名单或黑名单机制,限制 LLM 可以执行的 SQL 查询类型,增强安全性。
- 监控和日志: 定期审查服务器日志,监控数据库访问和操作,及时发现异常行为。
信息
分类
数据库与文件