MSSQL服务器的MCP服务器
用于MSSQL server的综合模型上下文协议(MCP)服务器,具有高级DDL支持、细粒度权限控制、综合操作日志记录和企业级连接管理。
🚀 主要特点
核心能力
- 完全SQL支持:完整的DDL和DML操作支持,具有SQL注入保护
- 高级权限控制:通过环境变量对DDL、DROP、DELETE操作进行精细控制
- 综合录井:完成请求/响应日志记录、SQL操作跟踪和连接池监控
- 企业连接管理:自动创建连接池、运行状况监视和故障转移恢复
- MCP协议合规性:具有工具发现和执行功能的完整模型上下文协议实现
- 多编辑器支持:与Cursor、VS Code和其他MCP兼容编辑器无缝集成
高级功能
- 架构自动前缀:多租户环境的自动模式处理
- 连接池优化:智能连接重用和性能调优
- 错误处理:全面的错误记录和优雅的故障恢复
- 安全功能:SQL注入预防、参数化查询支持和操作验证
📦 安装
NPM安装
全局安装(推荐)
npm install -g @liangshanli/mcp-server-mssqlserver本地安装
npm install @liangshanli/mcp-server-mssqlserver手动安装
git clone https://github.com/liliangshan/mcp-server-mssqlserver.git
cd mcp-server-mssqlserver
npm install⚙️ 配置
环境变量
数据库连接设置
| 环境变量 | 默认值 | 描述 | 必填 | |||||
|---|---|---|---|---|---|---|---|---|
MSSQL_SERVER | localhost | MSSQL服务器主机地址 | ✅ | |||||
MSSQL_PORT | 1433 | MSSQL服务器端口号 | ✅ | |||||
MSSQL_USER | sa | 数据库用户名 | ✅ | |||||
MSSQL_PASSWORD | `` | Database password | ✅ | MSSQL_DATABASE | `` | 目标数据库名称 | ✅ | |
MSSQL_SCHEMA | dbo | 默认架构名称 | ✅ | |||||
MSSQL_ENCRYPT | false | 启用加密 | ❌ | |||||
MSSQL_TRUST_SERVER_CERTIFICATE | true | 信任服务器证书 | ❌ |
权限控制设置
| 环境变量 | 默认值 | 描述 | 安全级别 |
|---|---|---|---|
ALLOW_DDL | false | 允许CREATE、ALTER、DROP操作 | 🔴 高风险 |
ALLOW_DROP | false | 允许DROP TABLE操作 | 🔴 高风险 |
ALLOW_DELETE | false | 允许DELETE操作 | 🟡 中等风险 |
日志记录配置
| 环境变量 | 默认值 | 描述 |
|---|---|---|
MCP_LOG_DIR | ./logs | 日志目录路径 |
MCP_LOG_FILE | mcp-mssqlserver.log | 日志文件名 |
安全配置示例
开发环境(高权限)
export ALLOW_DDL=true
export ALLOW_DROP=true
export ALLOW_DELETE=true测试环境(中等权限)
export ALLOW_DDL=true
export ALLOW_DROP=false
export ALLOW_DELETE=true生产环境(受限权限)
export ALLOW_DDL=false
export ALLOW_DROP=false
export ALLOW_DELETE=false🚀 用法
启动服务器
方法1:CLI启动
npm start方法2:直接服务器执行
npm run server方法3:管理模式
npm run start-managed方法4:开发模式(带调试)
npm run dev完整环境设置示例
# Database Connection
export MSSQL_SERVER=your-mssql-server.com
export MSSQL_PORT=1433
export MSSQL_USER=your-username
export MSSQL_PASSWORD=your-secure-password
export MSSQL_DATABASE=your-database
export MSSQL_SCHEMA=your-schema
# Security Permissions
export ALLOW_DDL=true
export ALLOW_DROP=false
export ALLOW_DELETE=true
# Logging Configuration
export MCP_LOG_DIR=/var/log/mcp
export MCP_LOG_FILE=mssqlserver.log
# Start Server
npm start🛠️ 可用工具
1.sql_query
使用完整的DDL和DML支持执行SQL查询。
参数:
sql(字符串,必填):要执行的SQL语句
特征:
- 自动模式前缀
- 权限验证
- 全面的错误处理
- SQL注入保护
例子:
{
"name": "sql_query",
"arguments": {
"sql": "SELECT * FROM users WHERE id = 1"
}
}支持的操作:
- ✅ SELECT查询
- ✅ INSERT操作
- ✅ 更新操作
- ✅ 删除操作(如果允许)
- ✅ 创建表(如果DDL允许)
- ✅ ALTER TABLE(如果DDL允许)
- ✅ DROP表(如果允许DROP)
2.get_database_info
检索全面的数据库信息和配置详细信息。
参数: 无
退货:
- 数据库列表
- 当前数据库的表列表
- 当前配置
- 权限状态
- 连接信息
例子:
{
"name": "get_database_info",
"arguments": {}
}3.get_operation_logs
访问详细的操作日志以进行监控和调试。
参数:
limit(number,可选):要返回的日志条目数(默认值:50)offset(数字,可选):分页的起始位置(默认值:0)
日志信息:
- 请求/响应详细信息
- SQL执行结果
- 错误消息和堆栈跟踪
- 连接池状态
- 性能指标
例子:
{
"name": "get_operation_logs",
"arguments": {
"limit": 100,
"offset": 0
}
}4.检查权限
验证当前权限配置和访问权限。
参数: 无
退货:
- 当前权限设置
- 环境变量状态
- 配置验证
- 安全建议
例子:
{
"name": "check_permissions",
"arguments": {}
}📊 日志记录与监视
日志类别
1.请求/响应日志
- 所有MCP方法调用
- 参数验证
- 响应生成
- 错误处理
2.SQL操作日志
- SQL语句执行
- 查询结果
- 性能指标
- 错误详细信息
3.连接池日志
- 池创建/销毁
- 健康检查结果
- 连接失败
- 恢复尝试
4.系统事件日志
- 服务器启动/关闭
- 配置更改
- 权限更新
- 安全事件
日志文件位置
- 默认:
./logs/mcp-mssqlserver.log - 可定制的:通过
MCP_LOG_DIR和MCP_LOG_FILE环境变量
日志格式
2025-01-15T10:30:00.000Z | method_name | {"param1": "value1"} | SUCCESS | RESPONSE: {"result": "data"}
2025-01-15T10:30:01.000Z | SQL: SELECT * FROM users | SUCCESS🔒 安全功能
权限控制
- 细粒度访问控制:针对不同操作类型的细粒度权限管理
- 基于环境的安全:通过环境变量进行安全配置
- 操作验证:SQL执行前的实时权限检查
- 审计日志:完成所有业务的审计跟踪
SQL注入保护
- 参数化查询:支持编写发言稿
- 输入验证:全面的输入净化
- 错误屏蔽:安全的错误消息处理
- 查询日志记录:完成SQL操作跟踪
连接安全性
- 加密连接:支持SSL/TLS加密
- 证书验证:可配置的证书信任设置
- 连接池:安全连接管理
- 超时保护:可配置的连接和请求超时
🎯 编辑器集成
光标编辑器配置
- 创建
.cursor/mcp.json在项目根目录中:
{
"mcpServers": {
"mssqlserver": {
"command": "npx",
"args": ["@liangshanli/mcp-server-mssqlserver"],
"env": {
"MSSQL_SERVER": "your_host",
"MSSQL_PORT": "1433",
"MSSQL_USER": "your_user",
"MSSQL_PASSWORD": "your_password",
"MSSQL_DATABASE": "your_database",
"MSSQL_SCHEMA": "your_schema",
"MSSQL_ENCRYPT": "false",
"MSSQL_TRUST_SERVER_CERTIFICATE": "true",
"ALLOW_DDL": "false",
"ALLOW_DROP": "false",
"ALLOW_DELETE": "false"
}
}
}
}VS代码配置
- 安装VS代码MCP扩展
- 创建
.vscode/settings.json:
{
"mcp.servers": {
"mssqlserver": {
"command": "npx",
"args": ["@liangshanli/mcp-server-mssqlserver"],
"env": {
"MSSQL_SERVER": "your_host",
"MSSQL_PORT": "1433",
"MSSQL_USER": "your_user",
"MSSQL_PASSWORD": "your_password",
"MSSQL_DATABASE": "your_database",
"MSSQL_SCHEMA": "your_schema",
"MSSQL_ENCRYPT": "false",
"MSSQL_TRUST_SERVER_CERTIFICATE": "true",
"ALLOW_DDL": "false",
"ALLOW_DROP": "false",
"ALLOW_DELETE": "false"
}
}
}
}直接使用MCP服务器
服务器通过stdin/stdout与MCP客户端通信:
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2025-06-18"}}🔧 连接池管理
自动功能
- 自动创建:连接池在上自动创建
notifications/initialized - 健康监测:每隔5分钟进行一次健康检查
- 自动恢复:故障时自动游泳池娱乐
- 性能优化:智能连接重用
- 优雅地关闭:服务器终止时正确清理连接
配置选项
- 池大小:可配置的最小和最大连接
- 超时设置:可定制的连接和请求超时
- 重试逻辑:失败连接的可配置重试尝试
- 负载平衡:智能连接分配
🚨 故障排除
常见问题
1.连接失败
症状:
- “连接被拒绝”错误
- 超时错误
- 身份验证失败
解决:
- 验证MSSQL服务器是否正在运行
- 检查防火墙设置
- 验证连接参数
- 确认网络连接
2.权限错误
症状:
- “不允许操作”错误
- “拒绝访问”消息
- 权限验证失败
解决:
- 检查环境变量配置
- 验证数据库用户权限
- 确认ALLOW\_\*设置
- 审查安全配置
3.日志问题
症状:
- 缺少日志文件
- 日志条目不完整
- 权限被拒绝错误
解决:
- 检查日志目录权限
- 验证磁盘空间可用性
- 确认日志文件路径有效性
- 检查文件系统权限
调试模式
启用详细调试信息:
npm run dev调试信息:
- 详细的SQL执行日志
- 连接池状态
- 权限验证详细信息
- 错误堆栈跟踪
- 性能指标
🏗️ 发展
项目结构
mcp-server-mssqlserver/
├── bin/
│ └── cli.js # CLI startup script
├── src/
│ └── server-final.js # Main server implementation
├── start-server.js # Managed startup script
├── package.json # Project configuration
├── README.md # English documentation
├── README.zh-CN.md # Chinese documentation
└── SCHEMA_USAGE.md # Schema usage guide建造和测试
# Install dependencies
npm install
# Run basic tests
npm test
# Run comprehensive tests
npm run test-full
# Start development server
npm run dev
# Build for production
npm run build发展特征
- 热重新加载:代码更改时自动重新启动服务器
- 调试日志记录:全面的调试信息
- 错误处理:详细的错误报告和堆栈跟踪
- 性能监控:实时性能指标
📄 许可证
MIT许可证-有关详细信息,请参阅许可证文件
🤝 贡献
我们欢迎捐款!请参阅我们的投稿指南:
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
贡献领域
- 漏洞修补:报告并修复错误
- 功能开发:添加新功能
- 文档:改进文件
- 测试:添加测试覆盖率
- 演出:优化性能
🔗 相关链接
📞 支持
获取帮助
- GitHub问题:报告错误和请求功能
- 文档:综合指南和示例
- 例子:工作示例和用例
- 社区:加入我们的开发者社区
版本兼容性
- Node.js:18.x或更高
- MSSQL服务器:2012年或更高
- MCP协议:2025-06-18或兼容版本
