SQL Server MCP服务器

一个生产就绪的Microsoft SQL Server模型上下文协议(MCP)服务器,提供全面的存储过程管理、虚拟文件系统协议和安全写入操作。

  • by jpcanter
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 jpcanter/sql-server-mcp

使用说明

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

许可证

麻省理工学院

贡献

欢迎投稿!请确保所有工具都遵循安全最佳实践。