使用说明
SQL Server MCP服务器
蟒蛇 模型上下文协议(MCP) 允许AI助手(Claude Desktop、GitHub Copilot、OpenAI客户端)安全查询Microsoft SQL server、检查模式和运行存储过程的服务器,包括自动生成存储过程的T-SQL单元测试。
为什么存在
通过LLM处理SQL Server通常意味着手动复制粘贴模式和查询。此MCP服务器提供AI助手 结构化,允许列出的工具 直接完成这项工作:发现模式、运行参数化查询、检查存储过程和生成测试脚手架,而无需向模型公开原始凭据。
最初是为了加速T-SQL而构建的 存储过程单元测试生成 (见 TEST_USP_*.sql 示例),Claude分析proc,识别边缘情况,并发出可运行的测试套件。
亮点
- 🧰 11个MCP工具 涵盖连接、查询、模式发现、存储过程执行和参数模板生成
- 🤝 多客户端支持 --Claude Desktop、基于OpenAI的客户端(GPT-4)、直接Python客户端
- 🛡️ 参数化查询 --pyodbc具有显式参数绑定,无字符串concat SQL
- 🔐 授权灵活性 --通过Windows身份验证或SQL身份验证
.env - 🧪 存储过程测试生成 --提交的示例输出
TEST_USP_AHS_*.sql - 🐍 纯 Python --无需构建步骤,易于扩展
建筑
┌────────────────────┐ MCP / stdio ┌─────────────────────┐
│ Claude Desktop / │ ─────────────────────▶ │ server.py │
│ GitHub Copilot / │ ◀───────────────────── │ (MCP server) │
│ OpenAI client │ tool results │ ├─ 11 tools │
└────────────────────┘ │ └─ pyodbc backend │
└──────────┬──────────┘
│ ODBC
▼
┌─────────────────┐
│ SQL Server │
└─────────────────┘
MCP工具暴露
| # | 工具 | 用途 | R/W |
|---|---|---|---|
| 1 | connect_database |
打开连接(Win身份验证或SQL身份验证) | -- |
| 2 | disconnect_database |
安全关闭连接 | -- |
| 3 | execute_query |
运行参数化SQL查询 | R/W |
| 4 | list_tables |
列出架构中的表 | R |
| 5 | describe_table |
列、类型、键、索引 | R |
| 6 | get_related_tables |
走FK关系 | R |
| 7 | list_stored_procedures |
枚举架构中的进程 | R |
| 8 | get_procedure_details |
参数签名、定义 | R |
| 9 | execute_stored_procedure |
使用命名参数 | R/W运行进程 |
| 10 | generate_query_from_template |
从保存的模板构建查询 | R |
编写功能强大的工具(
execute_query,execute_stored_procedure)应与a配对 只读数据库角色 在生产中。推荐模式:仅授予连接用户db_datareader+EXECUTE在精心策划的proc列表上。
快速入门
先决条件
- Python 3.8+
- 用于SQL Server的Microsoft ODBC驱动程序17
- 访问SQL Server实例
安装并运行
git clone https://github.com/ajay-fitbit/MCP.git
cd MCP\mcp-server-python
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
# Edit .env with your connection details
python test_connection.py # sanity check
python server.py # start the MCP server (stdio)
连接到克劳德桌面
添加 claude_desktop_config.json (完整说明见 CLAUDE_DESKTOP_GUIDE.md):
{
"mcpServers": {
"sqlserver": {
"command": "python",
"args": ["C:\\path\\to\\mcp-server-python\\server.py"]
}
}
}
提供了一个工作示例文件: claude_desktop_config.json.
使用OpenAI/GPT-4
包含一个独立的OpenAI客户端和聊天启动器——请参阅 OPENAI_SETUP_GUIDE.md:
.\start_openai_chat.bat
示例:生成存储过程单元测试
You: Generate a unit test for usp_AHS_AG_Care_Staff_Activities_Get_Init.
Agent: [calls get_procedure_details → analyzes parameters and result sets]
[calls execute_stored_procedure with synthesized realistic params]
[emits T-SQL test scaffold with setup, exec, assert, cleanup]
提交真实生成的示例:
配置参考
| 变量 | 目的 | 示例 |
|---|---|---|
DB_SERVER |
SQL Server主机/实例 | localhost 或 host\SQLEXPRESS |
DB_NAME |
数据库名称 | MyAppDb |
DB_USER |
SQL身份验证用户名(Win身份验证省略) | app_reader |
DB_PASSWORD |
SQL身份验证密码 | *** |
OPENAI_API_KEY |
可选,用于OpenAI客户端示例 | sk-... |
文件索引
COMPLETE_GUIDE.md--完整的操作员指南CLAUDE_DESKTOP_GUIDE.md--克劳德整合OPENAI_SETUP_GUIDE.md--OpenAI/GPT-4集成COMPLETE_TEST_SUITE_GENERATION_GUIDE.md--存储过程测试工作流TECHNICAL_DOCUMENTATION.md--内部构件PRESENTATION_SLIDES.md--概览甲板
安全和负责任的使用
- 最小权限 --为非写工作负载推荐专用的只读数据库登录
- 参数化查询 --pyodbc参数全程绑定,无字符串连接
- 回购中没有秘密 —
.env被忽视;仅作为示例.env.example - 允许列表模式 --客户端应限制模型可以调用哪些工具
- 工具输出未作为指令重新输入 --减轻结果数据的快速注入
路线图
- []存储过程的覆盖率报告工具
- []Sprint感知 未经测试的更改 工具(git+DB diff)
- []容器化部署(Docker+Azure容器应用程序)
- []评估套件(RAGAS/promptfoo)用于工具布线精度
- []铸造代理集成
相关项目
AI-Resume-Filter--基于语义匹配+RAG的多智能体简历筛选CLR-Project--SQL Server CLR修复程序 INSERT EXEC不能嵌套 错误(由测试生成工作流使用)
技术栈
Python 3.8+ · MCP SDK · pyodbc · python-dotenv · OpenAI SDK (可选客户端)· Microsoft ODBC Driver 17
作者
阿贾伊·辛格 --解决方案架构师·代理AI·MCP·LLM应用 投资组合 · 领英 · GitHub
许可证
麻省理工学院