使用说明
MSSQL MCP服务器
用于Microsoft SQL server的生产就绪模型上下文协议(MCP)服务器,具有全面的存储过程管理、虚拟文件系统协议和安全写入操作。
特性
- 虚拟文件系统:将数据库对象(存储过程、视图、函数)作为文件浏览
- 发现工具:搜索存储过程、检查表架构、分析依赖关系
- 安全写入操作:SQL验证、事务管理、审计日志记录
- SP管理:草稿→ Test → 部署→ 带有版本控制的回滚工作流
- 性能分析:从计划缓存中查询执行统计信息
- 安全:防止SQL注入、阻止关键字、行限制
安装
npm install
npm run build
配置
复制 .env.example 到 .env 并配置:
cp .env.example .env
关键配置选项:
- DB_SERVER:SQL Server主机名
- DB_数据库:数据库名称
- DB_USER/d_bassword:证书
- DB_ENCRYPT:启用加密(默认值:true)
- DB_TRUST_SERVER_证书:开发环境的信任服务器证书(默认值:false)
- 启用写入操作:启用插入/更新/删除(默认值:true)
- ENABLE_SP_修改:启用存储过程管理(默认值:true)
- 要求交易:需要显式事务进行修改(默认值:true)
- MAX_ROWS_受影响:一次操作中可以修改的最大行数(默认值:10000)
- 草图:部署前测试SP的架构(默认:dbo_draft)
- AUTO_BACKUP_BEFORE-DEPLOY:部署前自动备份SP(默认值:true)
看 .env.example 对于所有选项。
使用Claude代码
添加到MCP配置文件(.claude.json 或 ~/.claude.json):
{
"mcpServers": {
"mssql": {
"command": "node",
"args": ["/absolute/path/to/sql-server-mcp/dist/index.js"],
"env": {
"DB_SERVER": "localhost",
"DB_DATABASE": "MyDatabase",
"DB_USER": "sa",
"DB_PASSWORD": "YourPassword",
"ENABLE_WRITE_OPERATIONS": "true",
"ENABLE_SP_MODIFICATIONS": "true"
}
}
}
}
可用工具
发现和模式
- 列表存储程序:列出带分页的存储过程
- 搜索存储程序:按名称或内容搜索SP
- get_table_schema:获取包含列、索引、外键的表结构
- get_dependency:分析对象依赖关系(调用者和引用)
- 分析性能:从计划缓存中查看执行统计信息
执行
- execute_query_write:执行带验证的INSERT/UPDATE/DELETE
交易
- begin_transaction:启动新交易
- 委托交易:提交更改
- 回滚_交易:撤消更改
存储过程管理
- create_sp_draft:在单独的架构中创建SP草稿
- test_sp_draft:带参数的测试草稿
- deploy_sp:部署到生产环境(自动备份当前版本)
- 回滚_sp:还原以前的版本
- list_sp_版本:查看版本历史记录
示例工作流
搜索存储过程
search for stored procedures that modify the Orders table
将数据库对象视为文件
show me /database/stored_procedures/dbo/GetCustomerOrders.sql
修改存储过程
I need to update GetCustomerOrders to include email.
Create a draft, test it with CustomerId=123, then deploy.
安全数据修改
Start a transaction, update Customer set Status='Active' where Id=123,
show me the result, then commit.
性能分析
Analyze performance of GetDailySalesReport and show execution stats
建筑
第一阶段:只读基础
- 数据库对象的虚拟文件系统
- 连接池(只读池)
- 带错误处理的查询执行
- 发现和模式检查工具
第二阶段:安全写入
- SQL验证和注入预防
- 具有超时保护的事务管理器
- 合规性审计日志
- 编写操作工具
第3阶段:SP管理
- 使用SPVersionHistory表进行版本控制
- 安全测试方案草案
- 部署/回滚工作流
- 部署前自动备份
第四阶段:高级功能
- 依赖性分析
- DMV的性能监控
- 参考文献检索
安全特性
- SQL验证:阻止危险的关键字和模式
- 参数化查询:防止SQL注入
- 行限制:防止意外的大规模更新
- 交易超时:5分钟后自动回滚
- 审计跟踪:将所有操作记录到文件中
- 单独的凭据:可选的只读和读写连接
测试
完整的测试环境包含在 test/ 目录:
cd test
./setup.sh init
这将使用SQL Server 2022和测试数据库建立一个Docker容器(MCPTestDB)预填充有:
- 示例表(客户、产品、订单等)
- 13测试存储程序
- 视图和功能
- 用于测试所有MCP功能的样本数据
用于测试的连接字符串:
Server=localhost,1433;Database=MCPTestDB;User Id=sa;Password=McpTest123!;TrustServerCertificate=true
运行测试
设置测试数据库后:
# Run all tests
npm run test:all
# Or run specific tests
npm run test:connection # Basic connectivity test
npm run test:db # Database object verification
npm run test:scenarios # Comprehensive functionality tests
看 test/README.md 详细的测试场景和管理命令。
发展
# Development mode with auto-reload
npm run dev
# Build
npm run build
# Run production build
npm start
# Lint
npm run lint
# Format
npm run format
项目结构
sql-server-mcp/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # MCP server setup
│ ├── types/ # TypeScript interfaces
│ ├── config/ # Configuration and logging
│ ├── database/ # Connection, query execution, transactions
│ ├── filesystem/ # Virtual filesystem protocol
│ ├── tools/ # MCP tool implementations
│ │ ├── discovery/ # Search and discovery
│ │ ├── schema/ # Schema inspection
│ │ ├── execution/ # Query execution
│ │ ├── sp-management/ # SP lifecycle
│ │ └── transactions/ # Transaction control
│ ├── security/ # Validation, audit logging
│ └── utils/ # Version manager, helpers
├── test/ # Test environment (Docker + SQL Server)
│ ├── docker-compose.yml # SQL Server 2022 container
│ ├── setup.sh # Management script
│ ├── init-scripts/ # Database initialization
│ └── backups/ # Database backups
├── .env.example # Configuration template
└── package.json
许可证
麻省理工学院
贡献
欢迎投稿!请确保所有工具都遵循安全最佳实践。