MCP MSSQL 服务器
这是一个用于与 SQL Server 交互的模型上下文协议 (MCP) 服务器。它允许大型语言模型 (LLM) 执行 SQL 查询、运行存储过程,并探索具有增强安全性和稳健性的数据库模式。
特征
- 安全的 SQL 查询执行:针对 SQL Server 数据库运行 - SELECT查询。所有查询都经过解析和验证,以确保仅执行- SELECT语句。
- 存储过程支持:使用参数化输入执行存储过程。 
- 模式探索:查看数据库表和列定义,并缓存结果以提高性能。 
- 强大的连接管理:利用全局连接池高效重用数据库连接,并具有可配置的重试逻辑和超时。 
- 增强的安全性: - SQL 查询解析和 - SELECT仅白名单。
- SQL_ALLOWED_DATABASES环境变量将可访问数据库列入白名单。
- 防止数据库上下文切换的常见 SQL 注入模式。 
- 阻止在直接查询中执行潜在的有害系统程序或命令。 
 
- 可配置缓存:数据库模式信息通过可配置的生存时间 (TTL) 进行缓存。 
- 结构化日志记录:集成 - pino记录器,用于详细和结构化的应用程序日志。
- Docker Ready :使用 Docker 进行简单部署。 
快速入门
使用 Docker(推荐)
有关完整的 Docker 设置说明,请参阅Docker README 。
配置
服务器使用环境变量进行配置。在根目录中创建一个.env文件(您可以复制.env.example )来设置这些值。
有关所有配置选项及其设置方法的详细指南,请参阅CONFIG 。
| 类别 | 多变的 | 描述 | 默认(来自 config.js) | 
| 联系 | 
 | SQL Server 主机名或 IP | 
 | 
| 
 | SQL Server 端口 | 
 | |
| 
 | SQL Server 用户名 | 
 | |
| 
 | SQL Server 密码 | 必需的 | |
| 
 | 默认连接的数据库名称 | 
 | |
| 安全 | 
 | 启用加密(设置为 
 以禁用) | 
 | 
| 
 | 信任服务器证书(设置为 
 以禁用) | 
 | |
| 
 | 允许服务器访问的数据库列表(以逗号分隔)。如果为空,则访问限制较少(取决于数据库用户的权限)。 | 
 (空列表) | |
| 超时和重试 | 
 | 连接超时(毫秒) | 
 | 
| 
 | 查询的请求超时(毫秒) | 
 | |
| 
 | 初始连接尝试的最大重试次数 | 
 | |
| 
 | 重试失败连接前的初始延迟(毫秒) | 
 | |
| 
 | 连接重试的最大延迟(毫秒)(使用指数退避) | 
 | |
| 连接池 | 
 | 池中的最大连接数 | 
 | 
| 
 | 池中的最小连接数 | 
 | |
| 
 | 池中连接的空闲超时(毫秒) | 
 | |
| 缓存 | 
 | 架构缓存的生存时间(毫秒) | 
 (5分钟) | 
| MCP 服务器 | 
 | MCP 服务器的名称 | 
 | 
| 
 | MCP 服务器版本 | 
 | |
| 日志记录 | 
 | pino 日志记录器的日志级别(例如 
 、 
 、 
 、 
 、 
 、 
 、 
 )。该级别直接从 
 中的 
 读取,而不是 
 的一部分。 | 
 | 
与 Claude 一起使用
要将此 MCP 服务器添加到 Claude CLI:
在克劳德对话中,你可以:
- 执行 - SELECT查询:<mcp:execute_query database="YourDatabaseName"> SELECT TOP 10 * FROM YourTable </mcp:execute_query>- (如果在默认 - SQL_DATABASE上操作或者- SQL_ALLOWED_DATABASES意味着单一选择,则- database属性是可选的。)
- 执行存储过程: <mcp:execute_StoredProcedure database="YourDatabaseName"> { "procedure": "YourSchema.YourProcedureName", "parameters": [ {"name": "Param1", "type": "NVarChar", "value": "SomeValue"}, {"name": "Param2", "type": "Int", "value": 123} ] } </mcp:execute_StoredProcedure>
- 探索数据库模式: <mcp:schema> YourDatabaseName </mcp:schema>- (如果省略 - YourDatabaseName,则默认为环境变量中指定的- SQL_DATABASE。)
连接处理
该 MCP 服务器利用由DatabaseService管理的全局、强大的连接池( mssql库的内置池)。
- 效率:连接被重用,减少了为每个请求建立新连接的开销。 
- 弹性:针对初始连接建立实施具有指数退避的重试逻辑。 
- 跨调用无会话状态:与“每个用户一个会话”模型不同,此服务器不保证来自 LLM 的后续 MCP 调用(例如,两次单独的 - execute_query调用)将使用完全相同的底层数据库连接。因此,会话特定的状态(例如在一次调用中创建的临时表或会话变量)可能在另一次调用中不可用。从会话状态的角度来看,每次调用都应被视为原子操作。如果目标数据库与池的默认数据库不同,则在每个操作中都会发出- USE [database]命令,以确保该特定操作的上下文。
发展
本地开发设置
安全说明
- 仅 :服务器严格强制只能通过 - execute_query工具运行- SELECT查询,并使用 SQL 解析。DML(INSERT、UPDATE、DELETE)和 DDL 语句将被阻止。
- 存储过程执行:虽然存储过程可以执行其权限允许的任何操作,但它们的执行是单独管理的。 
- 数据库白名单:使用 - SQL_ALLOWED_DATABASES环境变量来限制服务器可以与哪些数据库交互。有关此功能及其与- SQL_DATABASE交互的详细说明,请参阅- DATABASE_WHITELISTING.md。
- 系统过程阻塞:通过 - execute_query直接执行常见系统过程(例如- sp_、- xp_)以及- RECONFIGURE或- WAITFOR DELAY等命令将被阻塞。存储过程应用于合法的系统交互。
- 输入验证:上下文切换的数据库名称和存储过程名称需要经过格式验证。SQL 解析为查询提供了额外的验证层。 
- 参数化输入:存储过程参数由 - mssql库处理,该库通常对其进行参数化以防止 SQL 注入。
故障排除
如果您遇到问题:
- 检查容器日志: - docker logs mssql-mcp(如果使用 Docker)。
- 如果在本地运行,请检查服务器控制台输出的 pino 日志。 
- 验证 - .env文件中的所有必需环境变量是否均已正确设置,尤其是- SQL_PASSWORD、- SQL_SERVER、- SQL_USER和- SQL_DATABASE。
- 如果您已设置此变量,请确保您尝试访问的数据库列在 - SQL_ALLOWED_DATABASES中。
- 确认 MCP 服务器正在运行的 SQL Server 实例的网络连接。 
- 测试脚本( - test-mcp.sh、- test-session-persistence.sh)可能需要审查/更新。
有关详细的 Docker 故障排除,请参阅Docker README 。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
模型上下文协议服务器允许大型语言模型(如 Claude)执行 SQL 查询、探索数据库模式并维护与 SQL Server 数据库的持久连接。
Related MCP Servers
- -security-license-qualityA Model Context Protocol server that enables Large Language Models to access and interact with database connections, including viewing schemas and performing CRUD operations on connected databases.Last updated -
- Asecurity-licenseAqualityA Model Context Protocol server that enables executing SQL queries and managing connections with Microsoft SQL Server databases.Last updated -1546MIT License
- -security-license-qualityA Model Context Protocol server that enables large language models like Claude to perform comprehensive interactions with Firebase Firestore databases, supporting full CRUD operations, complex queries, and advanced features like transactions and TTL management.Last updated -34MIT License
- -security-license-qualityA Model Context Protocol server that enables LLMs like Claude to interact with SQLite and SQL Server databases, allowing for schema inspection and SQL query execution.Last updated -3,221204MIT License