SQL MCP服务器
这 SQL MCP服务器 是一个统一的代理接口,允许AI模型(如Claude)通过一组标准化的工具检查、查询和与多种类型的数据库交互。
这个软件包不是为MySQL、SQL Server、Oracle等安装和配置单独的服务器,而是根据您的配置动态加载正确的“适配器”来处理所有这些服务器。
🚀 特性
- 标准化工具集:AI总是看到相同的工具(
execute_query,describe_table,get_db_version),无论它是在与Oracle还是MySQL对话。这减少了幻觉,提高了查询的准确性。 - 资源:自动将数据库表作为MCP资源公开,以便于检查。
- 智能适配器:
- ✅ MySQL:用途 mysql-connector-python 通过连接池。 - ✅ 数据库:用途 pymssql 并自动检测模式名称(例如。, dbo.Users). - ✅ Sybase/SAP IQ:用途 pyodbc 并智能处理 dba. 前缀和服务器名称。 - ✅ 甲骨文:用途 oracledb (精简模式),无需安装复杂的驱动程序即可轻松连接。
- Unicode就绪:所有连接默认为UTF-8,以无缝处理特殊字符。
🛠️ 安装
- 克隆仓库:
git clone https://github.com/BryR0/sql-mcp.git
cd sql-mcp- 创建一个虚拟环境:
python -m venv venv
source venv/bin/activate # On Windows: .\venv\Scripts\activate- 安装依赖项:
pip install -e .⚙️ 配置
您可以通过以下方式定义要使用的数据库 DB_TYPE 环境变量。
支持的环境变量
| 变量 | 描述 | 必填 | 默认 |
|---|---|---|---|
DB_TYPE | DB类型: mysql, mssql, sybase, oracle | 是 | mysql |
DB_HOST | 主机名或IP地址 | 是 | localhost |
DB_USER | 数据库用户名 | 是 | root |
DB_PASSWORD | 数据库密码 | 是 | (空) |
DB_DATABASE | 数据库名称 | 是 | test |
DB_PORT | 端口号 | 否 | 自动(3306、1433等) |
DB_DSN | 连接字符串(Oracle/Sybase高级) | 否 | (空) |
DB_SERVER_NAME | 显式服务器名称(仅限Sybase) | 否 | (空) |
Claude桌面配置示例
将此添加到您的 claude_desktop_config.json请注意 DB_PORT 是可选的,如果省略,将默认为所选DB类型的标准端口。
{
"mcpServers": {
"sql_mcp_mysql": {
"command": "C:\\path\\to\\venv\\python.exe",
"args": ["-m", "sql_mcp"],
"env": {
"DB_TYPE": "mysql",
"DB_HOST": "localhost",
"DB_USER": "root",
"DB_PASSWORD": "password",
"DB_DATABASE": "my_db"
}
},
"sql_mcp_mssql": {
"command": "C:\\path\\to\\venv\\python.exe",
"args": ["-m", "sql_mcp"],
"env": {
"DB_TYPE": "mssql",
"DB_HOST": "192.168.1.50",
"DB_USER": "sa",
"DB_PASSWORD": "password",
"DB_DATABASE": "DataWarehouse"
}
}
}
}🏗️ 建筑
该项目使用 适配器模式:
- 服务器 接收请求(例如。,
execute_query). - 工厂 检查
DB_TYPE并实例化正确的类(例如。,MSSQLAdapter). - 适配器 将通用请求转换为特定的驱动程序调用(
pymssql,pyodbc等等)。 - 响应 被格式化回AI的标准JSON结构。
这意味着您只需更改配置即可切换数据库,而无需更改AI的提示或逻辑。
📄 许可证
该项目根据MIT许可证获得许可。请参阅 许可证 文件以获取详细信息。
