SQL Server MCP服务器

一个Python模型上下文协议(MCP)服务器,允许AI助手安全查询Microsoft SQL Server,检查模式并运行存储过程,包括自动为存储过程生成T-SQL单元测试。

  • by ajay-fitbit
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ajay-fitbit/MCP

使用说明

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列表上。

快速入门

先决条件

安装并运行

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-...

文件索引

安全和负责任的使用

  • 最小权限 --为非写工作负载推荐专用的只读数据库登录
  • 参数化查询 --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

许可证

麻省理工学院