使用说明
项目简介
MySQL数据库访问MCP服务器是一个基于Model Context Protocol (MCP) 的后端服务,旨在为大型语言模型(LLM)提供安全、可控的MySQL数据库访问能力。该服务器允许LLM通过标准化的MCP协议,执行只读的数据库操作,从而获取结构化数据作为上下文信息,提升LLM在数据驱动型应用中的性能。
主要功能点
- 数据库和表信息查询: 支持列出MySQL服务器上的所有数据库,以及特定数据库中的所有表。
- 表结构描述: 提供查看表结构的工具,帮助LLM理解数据模式。
- 只读SQL查询执行: 允许执行 'SELECT', 'SHOW', 'DESCRIBE', 'EXPLAIN' 等只读SQL语句,安全地获取数据库数据。
- 安全性:
- 只读访问: 仅限只读操作,防止数据修改。
- SQL注入防护: 内置查询验证机制,避免SQL注入风险。
- 查询超时与行数限制: 防止资源滥用和数据泄露。
安装步骤
- 安装Node.js和npm: 确保你的系统已安装Node.js和npm (Node包管理器)。
- 安装mysql-mcp-server: 可以选择全局安装或本地安装到你的项目。
- 全局安装:
npm install -g mysql-mcp-server - 本地安装:
npm install mysql-mcp-server
- 全局安装:
- 配置环境变量: 你需要设置MySQL数据库连接相关的环境变量,包括:
- 'MYSQL_HOST': MySQL服务器地址 (例如: 'localhost' 或 '127.0.0.1')
- 'MYSQL_PORT': MySQL服务器端口 (默认为 '3306')
- 'MYSQL_USER': MySQL用户名
- 'MYSQL_PASSWORD': MySQL密码 (推荐配置以保证安全)
- 'MYSQL_DATABASE': 默认连接的数据库名 (可选)
服务器配置
为了让MCP客户端能够连接到 'mysql-mcp-server',你需要在MCP客户端的配置文件中添加以下服务器配置信息。这通常是一个JSON格式的配置文件,例如 'mcp-config.json'。
{ "mcpServers": { "mysql": { "command": "npx", "args": ["mysql-mcp-server"], "env": { "MYSQL_HOST": "your-mysql-host", // 请替换为你的MySQL服务器地址 "MYSQL_PORT": "3306", // MySQL服务器端口,默认3306 "MYSQL_USER": "your-mysql-user", // 请替换为你的MySQL用户名 "MYSQL_PASSWORD": "your-mysql-password", // 请替换为你的MySQL密码 (可选,但推荐) "MYSQL_DATABASE": "your-default-database" // 默认数据库名 (可选) }, "disabled": false, "autoApprove": [] } } }
配置参数说明:
- 'server name': 'mysql' (服务器名称,客户端据此名称调用工具)
- 'command': 'npx' (用于执行npm包的命令)
- 'args': '["mysql-mcp-server"]' (启动 'mysql-mcp-server' 的参数)
- 'env': 环境变量配置,用于 'mysql-mcp-server' 连接MySQL数据库。
- 'MYSQL_HOST': MySQL服务器地址。
- 'MYSQL_PORT': MySQL服务器端口。
- 'MYSQL_USER': MySQL用户名。
- 'MYSQL_PASSWORD': MySQL密码。
- 'MYSQL_DATABASE': 默认数据库名。
- 'disabled': 'false' (启用该服务器)
- 'autoApprove': '[]' (自动批准的工具列表,默认为空)
基本使用方法
配置完成后,MCP客户端即可通过JSON-RPC协议与 'mysql-mcp-server' 交互。客户端可以发送请求调用以下工具:
- 'list_databases': 获取数据库列表 (无需参数)。
- 'list_tables': 获取指定数据库的表列表 (可选参数 'database' 指定数据库名)。
- 'describe_table': 获取表的结构信息 (参数 'table' 为表名, 可选参数 'database' 指定数据库名)。
- 'execute_query': 执行只读SQL查询 (参数 'query' 为SQL查询语句, 可选参数 'database' 指定数据库名)。
具体的请求格式和参数,请参考仓库的 'README.md' 文档中 "Available Tools" 章节的说明和示例。
信息
分类
数据库与文件