MSSQL工具MCP服务器
封装SQL server命令行实用程序的专业级模型上下文协议(MCP)服务器(sqlcmd 和 bcp),使LLM能够与具有企业级功能的Microsoft SQL Server数据库进行交互。
📚 文档
- 快速入门指南 -5分钟后起床跑步
- 安装指南 -完成所有平台的设置(Claude Desktop、VSCode、Claude Code CLI、GitHub Copilot、Gemini CLI)
- 配置指南 -高级配置、安全和秘密管理
- API 参考 -完整的工具文档(如下)
✨ 特性
核心能力
- 🔍 结构化查询执行 -执行SQL查询,结果以JSON或格式化文本返回
- 📊 模式探索 -列出具有详细元数据的数据库、表、视图、存储过程
- ⚡ 连接池 -智能连接重用,实现最佳性能
- 🔐 安全凭据管理 -环境变量、连接配置文件和密钥管理器集成
- 📦 批量操作 -使用BCP进行高性能数据导入/导出
- 📑 分页 -内置对大型结果集分页的支持
- 🔄 批量查询 -按顺序执行多个查询
- 📋 查询模板 -针对常见任务的预构建诊断查询
- 🎯 设置文件格式 -为复杂的数据映射生成和使用BCP格式文件
- 📝 综合录井 -具有详细执行日志的调试模式
- 🔌 连接测试 -操作前验证连接和凭据
建筑亮点
- 模块化设计 -为每个职责提供专门的模块,实现关注点的清晰分离
- 类型安全 -具有全面类型定义的完整TypeScript实现
- 错误处理 -具有可操作反馈的智能错误解析
- 资源管理 -用于发现可用连接的MCP资源
- 提示模板 -MCP提示进行数据库健康检查和诊断
⚡ 快速开始
新使用此MCP服务器? 请参阅 快速入门指南 5分钟设置!
先决条件
- Node.js 18.0.0或更高
- SQL Server 实例(本地或远程)
- mssql工具 (
sqlcmd和bcp命令) - 其中之一:Claude Desktop、VSCode(Cline)、Claude Code CLI、GitHub Copilot或Gemini CLI
安装
# 1. Install mssql-tools (macOS example - see INSTALLATION.md for other platforms)
brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew install mssql-tools18
# 2. Clone and build
git clone
cd mssql-tools-mcp
npm install
npm run build
# 3. Configure your client (example for Claude Desktop)
# Edit: ~/Library/Application Support/Claude/claude_desktop_config.json看 安装.md 详细的平台特定设置:
- 克劳德桌面
- VSCode(Cline/Claude Dev扩展)
- 克劳德代码CLI
- GitHub Copilot
- Gemini CLI
基本配置
克劳德桌面示例:
{
"mcpServers": {
"mssql-tools": {
"command": "node",
"args": ["/absolute/path/to/mssql-tools-mcp/dist/index.js"],
"env": {
"MSSQL_SERVER": "localhost",
"MSSQL_USERNAME": "sa",
"MSSQL_PASSWORD": "YourPassword123",
"LOG_LEVEL": "info"
}
}
}
}看 配置.md 用于:
- 连接配置文件
- 安全凭据存储(AWS密钥管理器、Azure密钥库、1Password)
- 环境变量引用
- 连接池设置
测试您的安装
配置后,在LLM客户端中使用这些查询进行测试:
1. "Test the connection to my SQL Server"
2. "List all databases"
3. "Show me tables in the master database"
4. "Run the database health check prompt"看 安装.md 用于完整的测试程序和故障排除。
🛠️ 可用工具
查询执行
execute_query
使用结构化JSON结果、分页和多种输出格式执行SQL查询。
参数:
query(必需)-要执行的SQL查询server,database,username,password-连接详细信息(如果使用环境变量或配置文件,则可选)connectionProfile-使用命名的连接配置文件maxRows-要返回的最大行数(分页)offset-分页时的行偏移量outputFormat-“json”(默认)或“text”timeout-查询超时(秒)
例子:
{
"connectionProfile": "production",
"query": "SELECT TOP 100 * FROM Users WHERE CreatedDate > '2024-01-01'",
"maxRows": 50,
"offset": 0,
"outputFormat": "json"
}execute_batch
按顺序执行多个SQL查询。
参数:
queries(必填)-SQL查询数组- 连接参数(与execute_query相同)
例子:
{
"connectionProfile": "dev",
"queries": [
"CREATE TABLE TempData (ID INT, Name NVARCHAR(100))",
"INSERT INTO TempData VALUES (1, 'Test')",
"SELECT * FROM TempData"
]
}连接管理
test_connection
测试连接并验证凭据。
退货: 服务器版本和成功状态
pool_stats
获取连接池统计信息。
退货: 总连接数、使用中连接数和空闲连接数
clear_pool
清除所有池连接。
模式探索
list_databases
列出SQL Server实例上的所有数据库。
list_tables
列出数据库中包含架构信息的所有表。
describe_table
获取表的详细架构信息,包括列、类型、键和约束。
参数:
database(必填)table(必需)-表名(有或没有架构)
例子:
{
"connectionProfile": "production",
"database": "SalesDB",
"table": "dbo.Orders"
}list_stored_procedures
列出数据库中的所有存储过程。
list_views
列出数据库中的所有视图。
批量操作(BCP)
export_table
使用BCP将表数据导出到文件。
参数:
database,table,outputFile(必填)format-“本地”、“字符”、“宽”或“unicode”fieldTerminator-字段分隔符(例如,“,”,“\\t”)rowTerminator-行分隔符formatFile-BCP格式文件的路径
例子:
{
"connectionProfile": "production",
"database": "SalesDB",
"table": "dbo.Orders",
"outputFile": "/tmp/orders.csv",
"format": "character",
"fieldTerminator": ",",
"rowTerminator": "\n"
}import_table
使用BCP将数据从文件导入表。
附加参数:
batchSize-每批提交的行数errorFile-错误日志文件的路径maxErrors-中止前的最大错误数
export_query
将SQL查询的结果导出到文件。
generate_format_file
为表格生成BCP格式文件。
📚 MCP提示
预构建的诊断查询模板:
database-health-check-检查数据库大小、增长和指标find-slow-queries-识别运行缓慢的查询find-missing-indexes-发现绩效改进机会table-space-usage-分析表大小和行数active-connections-显示当前活动的连接index-fragmentation-检查索引碎片级别backup-history-查看最近的备份历史记录deadlock-analysis-分析最近的死锁事件
Claude中的用法: 只需询问:“为我的数据库运行数据库健康检查提示”
🔐 安全功能
环境变量
安全地存储默认凭据:
export MSSQL_SERVER="localhost"
export MSSQL_USERNAME="sa"
export MSSQL_PASSWORD="YourSecurePassword"连接配置文件
通过环境变量定义命名连接配置文件:
export MSSQL_PROFILE_PROD_SERVER="prod-db.example.com"
export MSSQL_PROFILE_PROD_DATABASE="MainDB"
export MSSQL_PROFILE_PROD_USERNAME="app_user"然后使用: "connectionProfile": "prod"
秘密管理器集成
与AWS Secrets Manager、Azure密钥库或1Password CLI集成。看 配置.md 了解详情。
身份验证
使用可信身份验证(无需密码):
{
"server": "localhost",
"query": "SELECT @@VERSION"
}🔍 日志记录
启用调试日志以进行故障排除:
{
"env": {
"LOG_LEVEL": "debug"
}
}日志显示在Claude Desktop的开发人员控制台中(帮助>开发人员工具)。
🏗️ 建筑
服务器采用模块化、团队主导的质量架构:
src/
├── types.ts # TypeScript type definitions
├── logger.ts # Logging infrastructure
├── errors.ts # Custom error classes and error handling
├── config.ts # Configuration management
├── connection-pool.ts # Connection pooling system
├── sqlcmd-executor.ts # SQL command execution
├── bcp-executor.ts # Bulk copy program execution
├── output-parser.ts # Query result parsing
├── resources.ts # MCP resource management
├── prompts.ts # MCP prompt templates
└── index.ts # Main server and tool handlers关键设计原则
- 单一责任 -每个模块都有一个明确的目的
- 依赖注入 -共享资源的Singleton实例
- 错误透明度 -详细的错误消息和可操作的指导
- 类型安全 -全面的TypeScript类型
- 可测试性 -模块化设计使测试变得容易
📖 示例
执行简单查询
{
"tool": "execute_query",
"arguments": {
"server": "localhost",
"database": "AdventureWorks",
"query": "SELECT TOP 10 * FROM Person.Person"
}
}使用连接配置文件
{
"tool": "execute_query",
"arguments": {
"connectionProfile": "production",
"query": "SELECT COUNT(*) FROM Users WHERE Active = 1"
}
}将数据导出到CSV
{
"tool": "export_table",
"arguments": {
"connectionProfile": "production",
"database": "SalesDB",
"table": "dbo.Orders",
"outputFile": "/tmp/orders.csv",
"format": "character",
"fieldTerminator": ",",
"rowTerminator": "\n"
}
}分页结果
{
"tool": "execute_query",
"arguments": {
"connectionProfile": "production",
"query": "SELECT * FROM LargeTable ORDER BY ID",
"maxRows": 100,
"offset": 0
}
}批量操作
{
"tool": "execute_batch",
"arguments": {
"connectionProfile": "dev",
"queries": [
"BEGIN TRANSACTION",
"UPDATE Users SET Status = 'Active' WHERE LastLogin > DATEADD(day, -30, GETDATE())",
"UPDATE Users SET Status = 'Inactive' WHERE LastLogin <= DATEADD(day, -30, GETDATE())",
"COMMIT TRANSACTION"
]
}
}🐛 故障排除
命令未找到
如果出现“找不到命令”错误:
- 验证安装:
which sqlcmd或which bcp - 检查PATH是否包含mssql工具bin目录
- 通过环境变量设置显式路径:
{
"env": {
"SQLCMD_PATH": "/opt/mssql-tools18/bin/sqlcmd",
"BCP_PATH": "/opt/mssql-tools18/bin/bcp"
}
}连接问题
- 验证SQL Server是否正在运行且可访问
- 检查防火墙设置是否允许TCP/IP连接
- 如果使用SQL身份验证,请确保启用SQL Server身份验证
- 验证凭据是否正确
- 使用
test_connection诊断工具
权限错误
- 验证用户是否具有所需的数据库权限
- 对于文件操作(bcp),请检查文件系统权限
- 确保输出目录存在
陈旧的连接
- 使用
pool_stats检查连接状态 - 使用
clear_pool重置连接 - 重新启动Claude Desktop以完全重置
🤝 贡献
欢迎投稿!代码库的设计遵循干净的架构原则和全面的类型安全。
发展
# Watch mode for development
npm run watch
# Build
npm run build
# Check types
npx tsc --noEmit📄 许可证
麻省理工学院
🙏 致谢
- 建立在 模型上下文协议
- 使用Microsoft SQL Server命令行实用程序
- 设计时考虑了企业数据库操作
📞 支持
有关问题、疑问或贡献,请访问GitHub存储库。
______________________________________________________________________
版本2.0 -具有连接池、结构化输出和企业功能的专业级MCP服务器。
