MCP SQL 服务
一种模型上下文协议服务器,允许像 Claude 这样的大型语言模型执行 SQL 查询、探索数据库模式以及与 SQL Server 数据库保持持久连接。
服务介绍
MCP SQL Server
这是一个用于与 SQL Server 交互的模型上下文协议 (MCP) 服务器。它允许大型语言模型(如 Claude)执行 SQL 查询、探索数据库架构,并在多个请求之间保持持久连接。
功能
- SQL 查询执行:对 SQL Server 数据库运行 SELECT 查询
- 存储过程支持:使用参数执行存储过程
- 架构探索:查看数据库表和列定义
- 会话持久性:在查询之间维护 SQL 连接,以便使用临时表和多查询操作
- Docker 就绪:通过 Docker 简单部署
快速开始
使用 Docker(推荐)
# Clone the repository
git clone https://github.com/JubinSaniei/mcp-mssql
cd mcp-mssql
# Start the container with your SQL Server connection details
./docker-run.sh 192.168.1.100 YourSecurePassword
# Test the connection and session persistence
./test-mcp.sh
./test-session-persistence.sh
有关完整的 Docker 设置说明,请参阅 Docker README。
配置
该服务器支持以下环境变量:
| 类别 | 变量 | 描述 | 默认值 |
|---|---|---|---|
| 连接 | SQL_SERVER | SQL Server 主机名或 IP | 172.31.64.1 |
| SQL_PORT | SQL Server 端口 | 1433 | |
| SQL_USER | SQL Server 用户名 | sa | |
| SQL_PASSWORD | SQL Server 密码 | 必需 | |
| SQL_DATABASE | 数据库名称 | '' | |
| 安全 | SQL_ENCRYPT | 启用加密 | true |
| SQL_TRUST_SERVER_CERT | 信任服务器证书 | true | |
| 超时 | SQL_CONNECTION_TIMEOUT | 连接超时(毫秒) | 30000 |
| SQL_REQUEST_TIMEOUT | 请求超时(毫秒) | 30000 | |
| 连接池 | SQL_POOL_MAX | 池中的最大连接数 | 10 |
| SQL_POOL_MIN | 池中的最小连接数 | 0 | |
| SQL_POOL_IDLE_TIMEOUT | 池的空闲超时(毫秒) | 30000 |
与 Claude 一起使用
要将此 MCP 服务器添加到 Claude CLI 中:
# Add the MCP server using the config file
claude mcp add-json mssql-mcp "$(cat claude-mcp-config.json)"
# To add it globally
claude mcp add-json -s user mssql-mcp "$(cat claude-mcp-config.json)"
# Start a conversation with Claude using this MCP
claude mcp mssql-mcp
在 Claude 对话中,您可以:
-
执行查询:
<mcp:execute_query> SELECT TOP 10 * FROM YourTable </mcp:execute_query> -
执行存储过程:
<mcp:execute_StoredProcedure> { "procedure": "sp_tables", "parameters": [] } </mcp:execute_StoredProcedure> -
探索数据库架构:
<mcp:schema> YourDatabaseName </mcp:schema>
会话持久性
此 MCP 服务器实现了 SQL 连接的会话持久性,这允许:
- 在多个查询中创建和使用临时表
- 维护变量和会话状态
- 持久事务(尽管对长时间运行的事务要谨慎)
- 不需要重新连接,从而提高性能
会话持久性是自动处理的 - Claude 将在整个对话中保持相同的数据库连接。
开发
本地开发设置
# Install dependencies
npm install
# Run the server directly (requires environment variables to be set)
npm start
# Run with TypeScript compiler watching for changes
npm run dev
测试
# Test basic query functionality
./test-query.sh
# Test session persistence (requires Docker)
./test-session-persistence.sh
安全注意事项
- 服务器仅允许 SELECT 查询(不允许 INSERT、UPDATE、DELETE 等)
- 系统和扩展存储过程(sp_、xp_)被阻止
- 实现了针对数据库名称和参数的 SQL 注入保护
故障排除
如果您遇到问题:
- 检查容器日志:
docker logs mssql-mcp - 验证 SQL Server 连接:
./test-mcp.sh - 测试会话持久性:
./test-session-persistence.sh - 确保
SQL_PASSWORD环境变量设置正确
有关详细的故障排除步骤,请参阅 Docker README。