MCP-SqlServerV1(注:这里的“MCP”可能代表某个特定的项目、产品或服务名称,由于上下文不明确,直接翻译为“MCP-SqlServerV1”保持原样,若“MCP”有具体含义,请根据实际情况替换)
一种模型上下文协议(MCP)服务器,它使AI助手能够通过自然语言与SQL Server数据库进行交互。该服务器提供安全的只读访问权限,用于查询数据库、检查模式以及执行存储过程。
特点/功能
- 执行SELECT查询 具有可配置的行数限制
- 列出数据库表 带有模式过滤
- 检查表模式 包括列类型和约束条件
- 执行存储过程 带有参数支持
- 默认安全 - 仅允许使用SELECT查询进行数据检索
- Windows 身份验证 支持(或 SQL Server 身份验证)
先决条件
- Python 3.10 或更高版本
- SQL Server(本地或远程实例)
- 适用于 SQL Server 的 ODBC 驱动程序 17 或更高版本
- 任何兼容MCP的客户端
安装
1. 安装Python依赖项
pip install mcp pyodbc2. 下载服务器文件
克隆此仓库或下载以下文件:
sql_server_mcp.py- MCP服务器的实现.mcp.json- 配置模板
3. 配置您的数据库连接
编辑 .mcp.json 附上您的数据库详细信息文件:
{
"servers": {
"sql-server": {
"command": "python",
"args": [
"C:\\MCP\\sql_server_mcp.py"
],
"env": {
"SQL_SERVER": "localhost",
"SQL_DATABASE": "YourDatabaseName",
"SQL_USERNAME": "",
"SQL_PASSWORD": "",
"SQL_DRIVER": "{ODBC Driver 17 for SQL Server}"
}
}
}
}配置选项:
SQL_SERVER您的 SQL Server 实例(例如。,localhost,server.domain.com,localhost\\SQLEXPRESS)SQL_DATABASE要连接的数据库名称SQL_USERNAME对于Windows身份验证,请留空;或提供SQL Server用户名SQL_PASSWORD对于Windows身份验证,请留空;或提供SQL Server密码SQL_DRIVERODBC 驱动程序名称(使用odbcinst -q -d)
可用工具
1. 执行查询
执行SELECT查询并以JSON格式检索结果。
参数:
query(必填):SQL SELECT 语句max_rows(可选):要返回的最大行数(默认:100)
示例:
SELECT TOP 10 * FROM Customers WHERE Country = 'USA'2. 列出表(或“显示表列表”)
列出数据库中的所有表。
参数:
schema(可选):按架构名称过滤(默认:“dbo”)
3. 获取表模式(或:获取表结构)
获取特定表的详细模式信息。
参数:
table_name(必填):表名schema(可选):架构名称(默认:“dbo”)
4. 执行存储过程
执行一个带有参数的存储过程。
参数:
procedure_name(必填):存储过程的名称parameters(可选):参数的键值对
示例:
{
"procedure_name": "GetCustomerOrders",
"parameters": {
"CustomerId": 123,
"StartDate": "2024-01-01"
}
}使用示例
一旦配置了MCP客户端,您就可以使用自然语言查询数据库:
- “列出数据库中的所有表”
- “给我看一下Users表的模式(结构)”
- “查询上个月的前20个订单”
- “执行2024年的GetSalesReport存储过程”
安全考虑事项
- 默认情况下为只读这个(或:该)
execute_query该工具仅允许使用SELECT语句 - 凭证/资格安全地存储敏感凭据,避免将其提交到版本控制系统中
- 网络访问确保您的 SQL Server 防火墙规则已正确配置
- 最小特权原则使用具有最小必要权限的数据库帐户
故障排除
未找到ODBC驱动程序
检查已安装的驱动程序:
# Windows (PowerShell)
Get-OdbcDriver
# Linux/macOS
odbcinst -q -d如需安装,请从微软官网下载并安装适用于 SQL Server 的 ODBC 驱动程序 17。
连接失败
- 验证SQL Server是否正在运行且可访问
- 检查防火墙设置(默认TCP端口为1433)
- 确认 SQL Server 身份验证模式(Windows 身份验证与 SQL Server 身份验证)
- 首先使用数据库客户端测试连接字符串
权限错误
确保数据库用户至少拥有:
db_datareader在SELECT查询中的作用EXECUTE存储过程的权限
贡献
欢迎贡献!请随时提交拉取请求。
致谢
使用(某种技术/材料/方法)建造 模型上下文协议 由Anthropic开发。
______________________________________________________________________
注此服务器专为开发和测试目的而设计。如需用于生产环境,请考虑实施额外的安全措施、查询验证以及审计日志记录。
