Skip to main content
Glama
FuMao2022625

MCP MySQL Server

by FuMao2022625

MCP MySQL 查询系统 API 文档

1. 系统概述

MCP MySQL 查询系统是一个基于 Model Context Protocol (MCP) 的数据库分析解决方案,提供安全可控的 MySQL 数据库查询能力。

1.1 核心功能

  • 提供三个安全工具:list_all_tablesget_table_schemaexecute_select_sql

  • SQL 安全限制:仅允许 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 地址

https://api.deepseek.com/v1

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.txt

3. 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,分析结果

执行流程:

  1. 获取 MCP 可用工具列表

  2. 调用 DeepSeek 分析任务

  3. 决策并执行工具调用

  4. 循环直到返回最终结果或达到最大轮数(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 安全建议

  1. SQL 白名单: 可增加字段权限隔离,限制只能访问指定数据表

  2. 查询行数限制: 增加 LIMIT 限制,防止超大结果集

  3. 调用日志: MCP 增加调用日志,记录所有执行的 SQL 用于审计

6. 使用示例

6.1 启动数据分析

from client_deepseek_mcp import main
import asyncio

# 使用默认问题
asyncio.run(main())

# 自定义问题
asyncio.run(main("查询2025年所有有效订单的总数量和总交易额"))

6.2 测试查询问题

  1. 查看数据库所有表,找出用户相关表并查看结构

  2. 查询2025年所有有效订单的总数量和总交易额并做简单分析

  3. 统计每个用户的下单频次,给出简要用户分层分析

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. 错误处理

错误类型

返回信息

数据库连接失败

数据库连接失败:{error_message}

SQL 不安全

SQL不安全,仅支持SELECT查询,禁止增删改删表等操作

查询表结构失败

查询表结构失败:{error_message}

SQL 执行异常

SQL执行异常:{error_message}

达到最大轮数

达到最大执行轮数,任务终止

9. 扩展建议

  1. HTTP-SSE 模式: 支持远程 MCP,脱离本地 stdio 分布式调用

  2. 多数据库支持: 扩展支持 PostgreSQL、MongoDB 等

  3. 查询缓存: 增加查询结果缓存提升性能

  4. 权限分级: 实现更细粒度的表/字段访问控制

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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