使用FastMCP构建MySql Mcp Server,支持Streamable HTTP, STDIO, SSE,支持读写权限控制
Project description
MySQL MCP Dolphin
项目简介
MySQL MCP Dolphin 是一个基于 FastMCP 的 MySQL MCP Server项目,提供了一个安全、高效的接口来执行 SQL 操作。该项目支持多种权限控制(读、写、管理员),并通过工具函数实现了表结构查询、索引信息获取、健康状态监控等功能。
目录结构
.
├── src
│ └── mysql_mcp_dolphin
│ ├── __init__.py
│ ├── config.py
│ └── mcp_server.py
├── README.md
└── pyproject.toml
快速开始
- 安装:
pip install mysql-mcp-dolphin - 执行命令的目录创建一个
.env文件,内容如下:
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=your_username
MYSQL_PASSWORD=your_password
MYSQL_DATABASE=your_database
MYSQL_ROLE=r # 可选值: r, w, a
MYSQL_MAXSIZE=2 # 可选值 连接池最大值
- 启动命令:
- STDIO:uv run -m mysql_mcp_dolphin.mcp_server
- Streamable HTTP: uv run -m mysql_mcp_dolphin.mcp_server sh
- SSE: uv run -m mysql_mcp_dolphin.mcp_server sse
- 使用 MCP 客户端连接服务并执行 SQL 操作。
功能特性
- SQL 执行:支持执行多条 SQL 语句,并返回结果。
- 权限控制:根据角色(读、写、管理员)限制 SQL 操作。
- 表结构查询:获取指定表的字段名、字段注释等信息。
- 索引信息获取:获取指定表的索引名、索引字段、索引类型等信息。
- 健康状态监控:获取 MySQL 的健康状态,包括连接数、查询次数、缓冲池使用情况等。
权限控制
权限控制通过 PERMISSIONS 字典实现,支持以下角色:
r:只读权限,允许执行SELECT,SHOW,DESCRIBE,EXPLAIN,USE操作。w:读写权限,允许执行SELECT,SHOW,DESCRIBE,EXPLAIN,INSERT,UPDATE,DELETE,USE操作。a:管理员权限,允许执行所有操作,包括CREATE,ALTER,DROP,TRUNCATE等。
工具函数
execute_sql: 执行 SQL 语句并返回结果,SELECT语句没有LIMIT时,自动在sql后加LIMIT 1000。get_table_structure: 获取指定表的字段信息。get_table_indexes: 获取指定表的索引信息。search_table_by_name: 根据表名或表注释搜索数据库中对应的表名。get_mysql_health: 获取 MySQL 的健康状态。get_database_info: 获取数据库基本信息get_database_tables: 获取数据库所有表和对应的表注释analyze_table_stats: 分析表统计信息和列统计信息get_process_list: 获取当前进程列表check_table_constraints: 检查表约束信息
部署方式
使用 uvx 部署
在 MCP 配置文件中添加如下配置,以使用 uvx 部署 MySQL MCP Dolphin 服务:
STDIO
{
"mcpServers": {
"mysql_mcp_dolphin": {
"command": "uvx",
"args": [
"mysql_mcp_dolphin"
],
"env": {
"MYSQL_HOST": "",
"MYSQL_PORT": "3306",
"MYSQL_USER": "",
"MYSQL_PASSWORD": "",
"MYSQL_DATABASE": "",
"MYSQL_ROLE": "r",
"MYSQL_MAXSIZE": "2"
}
}
}
}
Streamable HTTP
{
"mcpServers": {
"mysql_mcp_dolphin": {
"name": "mysql_mcp_dolphin",
"type": "streamableHttp",
"description": "",
"isActive": true,
"url": "http://localhost:9009/mcp"
}
}
}
SSE
{
"mcpServers": {
"mysql_mcp_dolphin": {
"name": "mysql_mcp_dolphin",
"description": "",
"isActive": true,
"url": "http://localhost:9009/sse"
}
}
}
使用 uv 部署
{
"mcpServers": {
"mysql_mcp_dolphin": {
"command": "uv",
"args": [
"--directory",
"D:/mysql_mcp_dolphin/src/mysql_mcp_dolphin",
"run",
"-m",
"mcp_server"
]
}
}
}
Streamable HTTP
{
"mcpServers": {
"mysql_mcp_dolphin": {
"command": "uv",
"args": [
"--directory",
"D:/mysql_mcp_dolphin/src/mysql_mcp_dolphin",
"run",
"-m",
"mcp_server",
"sh"
]
}
}
}
sse
{
"mcpServers": {
"mysql_mcp_dolphin": {
"command": "uv",
"args": [
"--directory",
"D:/mysql_mcp_dolphin/src/mysql_mcp_dolphinu",
"run",
"-m",
"mcp_server",
"sse"
]
}
}
}
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mysql_mcp_dolphin-0.1.3.tar.gz
(19.3 MB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mysql_mcp_dolphin-0.1.3.tar.gz.
File metadata
- Download URL: mysql_mcp_dolphin-0.1.3.tar.gz
- Upload date:
- Size: 19.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f12a5068972065daccf65c9daad8c1ff24f982abc58331488a7b0b1ef5c184f
|
|
| MD5 |
54dd6d7c15c6dc6063bdebd59e0bf62a
|
|
| BLAKE2b-256 |
cd39d9f78d58c3929244c37c5f34f3f0fc3f2ba4694a52b7a1db6a7676bbc1d5
|
File details
Details for the file mysql_mcp_dolphin-0.1.3-py3-none-any.whl.
File metadata
- Download URL: mysql_mcp_dolphin-0.1.3-py3-none-any.whl
- Upload date:
- Size: 10.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e1d0b8bff485f81b8d9e96fe5ed266a2e7a4c3b3a0494c384be75122c33c03a
|
|
| MD5 |
460a91f6d40ba6e67a0b44a77b82dcf1
|
|
| BLAKE2b-256 |
6d2c3ac4fdbefbed0f82de60c939b08331bf89d67fc767aed2c73aaff8c231cc
|