一个提供对多种SQL数据库引擎安全访问的Model Context Protocol (MCP)服务器。此服务器使AI助手和其他MCP客户端能够通过标准化接口与各种SQL数据库进行交互。
get_database_schema检索数据库中所有表的全面信息,包括:
execute_sql_query安全地执行SQL SELECT查询,具有以下限制:
execute_write_operation (可选)安全地执行SQL写操作(INSERT和UPDATE),具有以下限制:
ENABLE_WRITE_OPERATIONS=true时,此工具才可用test_database_connection测试数据库连接以确保正确的配置和连接性。
查看Universal SQL MCP Server最快的方式:
# 克隆仓库
git clone <repository-url>
cd gen-http-sql-mcp
# 安装依赖
pip install fastmcp mysql-connector-python psycopg2-binary pyodbc sqlalchemy python-dotenv
# 运行演示(创建一个带有示例数据的SQLite数据库)
python demo.py
# 启动MCP服务器
python main.py
演示会创建一个带有示例用户和订单的SQLite数据库,并展示所有MCP工具。
git clone <repository-url>
cd gen-http-sql-mcp
# 使用pip
pip install fastmcp mysql-connector-python psycopg2-binary pyodbc sqlalchemy python-dotenv
# 或者使用uv
uv sync
# 仅限MySQL
pip install fastmcp mysql-connector-python python-dotenv
# 仅限PostgreSQL
pip install fastmcp psycopg2-binary python-dotenv
# 仅限SQLite(不需要额外驱动程序)
pip install fastmcp python-dotenv
# 仅限SQL Server
pip install fastmcp pyodbc python-dotenv
cp .env.example .env
.env文件,填写您的数据库凭据:DB_TYPE=mysql
DB_HOST=localhost
DB_PORT=3306
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=your_database
DB_TYPE=postgresql
DB_HOST=localhost
DB_PORT=
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=your_database
DB_TYPE=sqlite
DB_NAME=/path/to/your/database.db
# 注意:SQLite不需要主机、端口、用户名或密码
DB_TYPE=sqlserver
DB_HOST=localhost
DB_PORT=1433
DB_USER=your_username
DB_PASSWORD=your_password
DB_NAME=your_database
DB_DRIVER=ODBC Driver 17 for SQL Server
# 可选:连接池设置(不适用于SQLite)
DB_POOL_SIZE=5
DB_MAX_OVERFLOW=10
# 可选:连接超时设置(秒)
DB_CONNECT_TIMEOUT=10
DB_READ_TIMEOUT=30
DB_WRITE_TIMEOUT=30
# 可选:启用写操作(INSERT/UPDATE)- 设置为true启用
ENABLE_WRITE_OPERATIONS=false
DB_TYPE:指定要使用的数据库引擎
mysql:MySQL数据库(需要mysql-connector-python)postgresql:PostgreSQL数据库(需要psycopg2-binary)sqlite:SQLite数据库(Python内置支持)sqlserver:SQL Server数据库(需要pyodbc)ENABLE_WRITE_OPERATIONS:控制execute_write_operation工具是否可用
false(默认):只允许读取操作(仅SELECT查询)true:启用INSERT和UPDATE操作通过execute_write_operation工具请求日志配置:
true)false)INFO)2000)INFO)DB_NAME(文件路径)。连接池设置被忽略。DB_DRIVER。psycopg2-binary以获得最佳性能和兼容性。mysql-connector-python驱动程序。启动MCP服务器:
uv run python main.py
服务器将:
此服务器实现了模型上下文协议,可以与任何兼容MCP的客户端一起使用。服务器提供了三个可以通过MCP客户端调用的工具。
{
"method": "tools/call",
"params": {
"name": "get_database_schema"
}
}
{
"method": "tools/call",
"params": {
"name": "execute_sql_query",
"arguments": {
"sql_query": "SELECT * FROM users LIMIT 10"
}
}
}
{
"method": "tools/call",
"params": {
"name": "execute_write_operation",
"arguments": {
"sql_query": "INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')"
}
}
}
PostgreSQL带RETURNING子句:
INSERT INTO users (name, email) VALUES ('Jane Doe', 'jane@example.com') RETURNING id;
SQLite带自动递增:
INSERT INTO users (name, email) VALUES ('Bob Smith', 'bob@example.com');
SQL Server带OUTPUT子句:
INSERT INTO users (name, email) OUTPUT INSERTED.id VALUES ('Alice Johnson', 'alice@example.com');
{
"method": "tools/call",
"params": {
"name": "test_database_connection"
}
}
gen-http-sql-mcp/
├── main.py # 主服务器入口点
├── database.py # 统一的数据库连接和管理
├── tools.py # MCP工具实现
├── .env.example # 环境配置模板
├── pyproject.toml # 项目依赖和元数据
└── README.md # 此文件
mysql-connector-python以获得最佳兼容性psycopg2-binary以获得高性能pyodbc使用ODBC连接服务器包括全面的错误处理:
服务器提供全面的日志记录能力:
服务器包括高级请求日志中间件,帮助调试客户端连接问题:
# 默认启用,显示基本请求信息
ENABLE_REQUEST_LOGGING=true
# 启用详细日志,包括头和负载
ENABLE_DETAILED_REQUEST_LOGGING=true
REQUEST_LOG_LEVEL=DEBUG
MAX_PAYLOAD_LOG_LENGTH=5000
LOG_LEVEL=DEBUG
为了调试客户端连接问题,使用调试环境:
# 启动带有详细日志的调试环境
make debug
# 查看调试日志
make logs-debug
# 只查看MCP服务器调试日志
make logs-debug-mcp
调试环境启用:
本项目根据MIT许可证发布 - 详情见LICENSE文件。
对于问题和疑问: