MCP MySQL Server
Provides tools for listing tables, retrieving table schemas, and executing safe SELECT queries on a MySQL database.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP MySQL ServerShow me the total sales for each product category this year"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP MySQL 查询系统 API 文档
1. 系统概述
MCP MySQL 查询系统是一个基于 Model Context Protocol (MCP) 的数据库分析解决方案,提供安全可控的 MySQL 数据库查询能力。
1.1 核心功能
提供三个安全工具:
list_all_tables、get_table_schema、execute_select_sqlSQL 安全限制:仅允许 SELECT,禁止 DROP/ALTER/INSERT/DELETE
支持与 DeepSeek 大模型对接,实现自然语言转 SQL
1.2 技术架构
┌─────────────┐ MCP stdio ┌──────────────────┐
│ DeepSeek │◄──────────────────►│ MySQL MCP │
│ Client │ │ Server │
└─────────────┘ └────────┬─────────┘
│
▼
┌──────────────┐
│ MySQL │
│ Database │
└──────────────┘Related MCP server: mysql-mcp-server
2. 环境配置
2.1 环境变量 (.env)
变量名 | 说明 | 示例值 |
DEEPSEEK_API_KEY | DeepSeek API 密钥 | sk-xxxx |
DEEPSEEK_BASE_URL | DeepSeek API 地址 | |
DEEPSEEK_MODEL | 模型名称 | deepseek-chat |
MYSQL_HOST | MySQL 主机地址 | 127.0.0.1 |
MYSQL_PORT | MySQL 端口 | 3306 |
MYSQL_USER | MySQL 用户名 | root |
MYSQL_PASSWORD | MySQL 密码 | password |
MYSQL_DATABASE | 数据库名称 | test_db |
2.2 安装依赖
pip install -r requirements.txt3. MCP 工具 API
3.1 list_all_tables
功能: 获取数据库内所有数据表名称列表
参数: 无
返回值: 字符串,格式为 数据库表列表:[table1, table2, ...]
示例:
数据库表列表:['orders', 'products', 'users']3.2 get_table_schema
功能: 查询指定数据表的字段结构
参数:
参数名 | 类型 | 必填 | 说明 |
table_name | string | 是 | 数据表名称 |
返回值: 字符串,包含字段名、类型、是否为空、主键、默认值、备注
示例:
表 orders 结构(字段名|类型|是否为空|主键|默认值|备注):
[('id', 'int', 'NO', 'PRI', None, ''), ('amount', 'decimal', 'YES', '', None, '')]3.3 execute_select_sql
功能: 执行只读 SELECT 查询 SQL 语句
参数:
参数名 | 类型 | 必填 | 说明 |
sql | string | 是 | 纯 SELECT 查询语句 |
返回值: 字符串,包含查询结果列名和数据
示例:
{'columns': ['id', 'name'], 'data': [(1, 'Alice'), (2, 'Bob')]}安全限制:
仅允许 SELECT 语句
禁止:INSERT、DELETE、UPDATE、DROP、ALTER、TRUNCATE、CREATE
4. MCP Client API
4.1 mcp_to_function()
将 MCP 工具转换为 OpenAI Function Call 格式。
参数:
参数名 | 类型 | 说明 |
tool | Tool | MCP 工具对象 |
返回值: dict,符合 OpenAI Function Call 规范
4.2 agent_loop()
Agent 主循环,处理 DeepSeek 交互和工具调用。
参数:
参数名 | 类型 | 说明 |
session | ClientSession | MCP 客户端会话 |
user_query | str | 用户查询问题 |
返回值: str,分析结果
执行流程:
获取 MCP 可用工具列表
调用 DeepSeek 分析任务
决策并执行工具调用
循环直到返回最终结果或达到最大轮数(5轮)
4.3 main()
启动 MCP Client 并执行数据分析。
参数:
参数名 | 类型 | 必填 | 说明 |
user_question | str | 否 | 自定义查询问题,默认使用内置示例 |
5. 安全机制
5.1 SQL 安全校验
is_safe_sql() 函数提供以下安全限制:
检查项 | 说明 |
语句类型 | 必须以 SELECT 开头 |
关键字过滤 | 禁止 INSERT、DELETE、UPDATE、DROP、ALTER、TRUNCATE、CREATE |
大小写不敏感 | 关键字检查不区分大小写 |
5.2 安全建议
SQL 白名单: 可增加字段权限隔离,限制只能访问指定数据表
查询行数限制: 增加
LIMIT限制,防止超大结果集调用日志: MCP 增加调用日志,记录所有执行的 SQL 用于审计
6. 使用示例
6.1 启动数据分析
from client_deepseek_mcp import main
import asyncio
# 使用默认问题
asyncio.run(main())
# 自定义问题
asyncio.run(main("查询2025年所有有效订单的总数量和总交易额"))6.2 测试查询问题
查看数据库所有表,找出用户相关表并查看结构
查询2025年所有有效订单的总数量和总交易额并做简单分析
统计每个用户的下单频次,给出简要用户分层分析
7. 文件结构
MCP-server/
├── .env # 环境变量配置
├── .env.example # 环境变量示例
├── requirements.txt # Python 依赖
├── mysql_mcp_server.py # MCP Server 实现
├── client_deepseek_mcp.py # MCP Client 实现
├── README.md # API 文档
└── tests/
├── __init__.py
└── test_mcp_server.py # 单元测试8. 错误处理
错误类型 | 返回信息 |
数据库连接失败 |
|
SQL 不安全 |
|
查询表结构失败 |
|
SQL 执行异常 |
|
达到最大轮数 |
|
9. 扩展建议
HTTP-SSE 模式: 支持远程 MCP,脱离本地 stdio 分布式调用
多数据库支持: 扩展支持 PostgreSQL、MongoDB 等
查询缓存: 增加查询结果缓存提升性能
权限分级: 实现更细粒度的表/字段访问控制
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/FuMao2022625/MCP-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server