用于Claude的SQL Server MCP
此存储库包含用于Claude的SQL Server MCP(模型上下文协议)集成。这种集成允许Claude使用自然语言直接查询和分析SQL Server数据库中的数据。
此MCP服务器已通过MCP审核认证: https://mcpreview.com/mcp-servers/shakunvohradeltek/mcpserverformssql
概述
SQL MCP集成的工作原理如下:
- 设置一个本地服务器,Claude可以通过模型上下文协议与之通信
- 使用pymssql直接连接到SQL Server数据库(不需要ODBC)
- 将Claude的自然语言请求转换为SQL查询
- 将查询结果返回给Claude进行解释和演示
重要协议说明:此集成使用克劳德要求的MCP协议版本“2025-03-26”以实现兼容性。该集成包括一个正确处理协议的固定MCP实现,包括正确的JSON-RPC格式和Content-Length标头。
主要特点
- 无需ODBC:使用pymssql直接连接到SQL Server
- 简化架构:最少的依赖性和简单的设计
- 协议支持:与Claude的MCP系统配合使用
- 交叉平台的:在macOS和Linux上一致工作
- 简易安装:一步安装过程
- 智能配置:添加SQL支持时保留现有的MCP设置和Claude指令
安装
先决条件
- macOS或Ubuntu Linux
- Python 3.7+
- FreeTDS(通过Homebrew在macOS上自动安装)
- Claude CLI(从安装 claude.ai/docs/installation)
- 具有适当权限的SQL Server凭据(最好是只读的,请参阅 安全注意事项)
安装步骤
- 运行安装脚本:
./install_sql_mcp.sh- 按照提示输入SQL Server连接详细信息:
- SQL Server主机名 - SQL Server端口(默认值:1433) - 数据库名称 - 用户名 - 密码 - 信任服务器证书(默认值:true)
- 安装程序将:
- 安装所需的依赖项 - 为SQL Server连接配置FreeTDS - 设置Python虚拟环境 - 安装所需的Python包 - 创建必要的脚本 - 配置Claude以识别SQL MCP服务器
- 验证安装:
./run_simple_sql.sh "SELECT 1 AS TestQuery"用法
- 启动克劳德:
claude您还可以:
- 检查MCP状态:
claude /mcp - 调试MCP:
claude --mcp-debug
- 向Claude询问有关数据库的问题:
@sql execute_sql
SELECT TOP 5 * FROM YourTable@sql execute_sql
SELECT COUNT(*) FROM Users WHERE IsActive = 1⚠️ 安全注意事项
重要提示: 出于安全原因,请使用以下数据库帐户 受限权限:
- 为Claude的数据库访问创建一个专用的只读用户
- 避免使用具有DROP、DELETE或表创建权限的帐户
- 切勿在生产环境中使用sa或管理员帐户
- 考虑仅限制对分析所需的特定表/视图的访问
当Claude基于自然语言请求生成SQL查询时,使用过于特权的帐户可能会导致意外的数据丢失或数据库结构更改。
激励克劳德的最佳实践
使用Claude查询SQL Server数据库时,请遵循以下最佳实践:
- 请Claude先探索数据库模式:在构造查询之前,提示Claude检查数据库结构以了解表、列和关系。
@sql execute_sql
SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'dbo' ORDER BY TABLE_NAME, ORDINAL_POSITION- 提供有关数据模型的上下文:解释你的数据库包含什么类型的数据,以及这些表之间是如何相互关联的。
- 从模式探索开始:请Claude在编写复杂查询之前先探索表结构。
- 验证查询结果:让Claude解释查询结果的含义,并验证它们是否符合您的期望。
- 逐步构建复杂性:从简单的查询开始,随着Claude展示对模式的理解,逐渐增加复杂性。
故障排除
如果遇到SQL MCP集成问题:
- 测试直接连接:
./run_simple_sql.sh "SELECT 1 AS TestQuery"- 确保FreeTDS配置正确:
tsql -C- 验证Claude能否找到MCP服务器:
claude mcp list- 如果您看到“连接失败”或“连接关闭”消息,但查询仍然有效,这是正常行为,可以忽略。
- 协议版本兼容性:此安装使用克劳德MCP所需的协议版本“2025-03-26”。如果遇到MCP传输关闭错误,请检查协议版本是否没有更改。
- JSON-RPC格式:Claude的MCP需要具有非空ID和Content-Length标头的正确JSON-RPC形式。安装脚本正确配置了这一点。
MCP工具暴露
MCP服务器向Claude公开了以下工具:
execute_sql
- 描述:在连接的数据库上执行SQL查询
- 输入架构:
- query (string,必填):要执行的SQL查询
- 用法:使用
@sql execute_sql在Claude中,后面是SQL查询 - 退货:带有查询结果、行数和成功状态的JSON对象
文件和组件
安装过程中创建:
simple_sql.py-直接处理SQL查询的Python脚本run_simple_sql.sh-调用Python脚本的包装器脚本mcp_fixed.py-使用适当的工具实现MCP协议run_mcp_fixed.sh-MCP服务器的包装脚本.mcp.json-MCP服务器的配置文件CLAUDE.md-Claude关于如何使用SQL集成的说明
团队分布
要将此SQL MCP集成分发给您的团队,请执行以下操作:
- 与您的团队成员共享此存储库
- 团队成员应:
- 使脚本可执行: chmod +x *.sh - 运行安装脚本: ./install_sql_mcp.sh - 按照提示输入他们的SQL Server详细信息
最新更新(2024年5月)
安装脚本已更新,其中包含以下重要修复:
- 将MCP协议版本固定为“2025-03-26”(以前为“2024-11-05”),以满足Claude的要求
- 添加了改进的MCP实现,可以正确处理JSON-RPC格式
- 正确处理MCP通信中的Content-Length标头
- 修复了协议中的通知处理
- 为持久MCP连接添加了连续循环
- 改进了错误处理和调试日志
- 新增:通过MCP协议公开SQL工具 -MCP服务器现在正确地公开了
execute_sql工具通过tools/list和tools/call方法,使其与Claude的工具发现和执行系统兼容
鸣谢
此SQL MCP集成基于以下开源项目:
