SQL数据库自然语言查询服务

一个通过自然语言查询为AI助手提供安全、结构化访问SQL Server数据库的模型上下文协议(MCP)服务器。

  • by gazisdomain
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 gazisdomain/sql-server-mcp-server

使用说明

SQL Server MCP服务器

模型上下文协议(MCP)服务器,通过自然语言查询为Claude等AI助手提供对SQL server数据库的安全、结构化访问。

🎯 什么是MCP?

模型上下文协议(MCP)是一种开放协议,规范了人工智能应用程序如何连接到数据源。您无需为每个AI助手构建自定义集成,而是构建一个可与任何MCP兼容客户端配合使用的MCP服务器。

主要优势:

  • 自然语言接口:使用简明英语而不是编写SQL查询数据库
  • AI编排:AI可以调用多种工具并智能地综合结果
  • 标准化协议:一台服务器可与Claude、未来的人工智能工具和自定义应用程序配合使用
  • 受控访问:仅公开特定的预定义操作,而不是原始数据库访问

🏗️ 建筑

┌─────────────────┐
│  Claude Desktop │ (MCP Client)
└────────┬────────┘
         │ JSON-RPC over stdio
         │
┌────────▼────────┐
│   MCP Server    │ (This Project)
│   (C# .NET 9)   │
└────────┬────────┘
         │ Entity Framework Core
         │
┌────────▼────────────┐
│   SQL Server        │
│ (AdventureWorks2025)│
└─────────────────────┘

🛠️ 技术

  • .NET 9:现代C#运行时
  • Entity Framework Core:采用代码优先方法的数据库ORM
  • 模型上下文协议:通过stdio传输的JSON-RPC 2.0
  • SQL Server 精简版:本地数据库引擎
  • 依赖注入:具有基于接口的服务的干净架构

✨ 特性

可用工具

  1. get_客户:从数据库中检索前N名客户
  2. 搜索产品:按名称、价格范围或类别搜索产品
  3. get_top_selling_产品:按销售量获得最畅销的产品

查询示例

User: "What are our top 5 best-selling products?"
Claude: [Calls get_top_selling_products tool]
Result: Detailed product list with sales metrics

User: "Show me bikes under $1000"
Claude: [Calls search_products with filters]
Result: Filtered product list

User: "What's the average price of our top 10 sellers?"
Claude: [Calls get_top_selling_products, then analyzes]
Result: Calculated insights with context

🚀 安装说明

先决条件

  • .NET 9 SDK
  • SQL Server Express(或任何SQL Server实例)
  • Claude桌面应用程序
  • AdventureWorks2025样本数据库

1.安装AdventureWorks数据库

从下载备份文件 Microsoft SQL Server示例 并恢复它:

RESTORE DATABASE AdventureWorks2025
FROM DISK = 'path\to\AdventureWorksLT2025.bak'

2.克隆和配置

git clone <your-repo-url>
cd SqlServerMcpServer

复制示例配置并使用您的连接字符串进行更新:

copy appsettings.example.json appsettings.json

编辑 appsettings.json:

{
  "ConnectionStrings": {
    "AdventureWorks": "Server=YOUR_SERVER\\SQLEXPRESS;Database=AdventureWorks2025;Trusted_Connection=True;TrustServerCertificate=True;"
  }
}

3.构建和发布

dotnet restore
dotnet build
dotnet publish -c Release -o publish

4.配置克劳德桌面

编辑Claude Desktop的配置文件:

  • 视窗: %APPDATA%\Claude\claude_desktop_config.json

添加您的MCP服务器:

{
  "mcpServers": {
    "sql-server": {
      "command": "dotnet",
      "args": ["<full-path-to-project>\\publish\\SqlServerMcpServer.dll"],
      "cwd": "<full-path-to-project>\\publish"
    }
  }
}

5.重新启动克劳德桌面

关闭并重新打开Claude Desktop。你应该看到一个锤子图标(🔨) 输入框中显示MCP工具可用。

🔒 安全考虑

⚠️ 重要提示:这是一个使用公共样本数据的示范项目。

当前实施情况

  • 使用完整用户凭据执行数据库查询
  • 查询结果被发送到Anthropic的云端进行人工智能处理
  • 不适合敏感数据的生产使用

企业部署建议

对于具有真实数据的生产使用,请实施:

  1. 只读数据库访问

    • 创建仅具有SELECT权限的SQL用户
    • 限制对特定表/视图的访问
    • 如果可用,请使用行级安全性
  2. 数据屏蔽/匿名化

    • 在返回结果之前过滤PII
    • 哈希敏感标识符
    • 对敏感数据实施字段级加密
  3. 自托管AI模型

    • 在本地部署开源LLM(Llama、Mistral)
    • 构建不向外部API发送数据的自定义MCP客户端
    • 将所有数据处理保持在网络内
  4. 审计日志

    • 记录所有MCP工具调用
    • 跟踪哪些用户访问了哪些数据
    • 实施合规报告
  5. 速率限制和节流

    • 防止过多的数据库查询
    • 实施查询复杂性限制
    • 添加身份验证/授权层

数据隐私

将Claude Desktop与此MCP服务器一起使用时:

  • 您的查询和数据库结果将发送到Anthropic的API进行处理
  • Anthropic的数据使用政策适用
  • 仅用于非敏感、非PII数据
  • 对于敏感数据,考虑使用DPA协议的企业合同

🧪 测试

使用MCP检查员进行手动测试

npm install -g @modelcontextprotocol/inspector
cd SqlServerMcpServer\publish
mcp-inspector dotnet SqlServerMcpServer.dll

这将打开一个web UI,您可以在连接到Claude之前测试各个工具。

命令行测试

直接运行服务器并发送JSON-RPC请求:

dotnet run

然后输入:

{"jsonrpc":"2.0","method":"tools/list","params":{},"id":1}

📚 学习资源

🤝 贡献

这是一个展示MCP概念的学习项目。请随意:

  • 叉子和实验
  • 添加新工具(销售分析、客户洞察等)
  • 改进错误处理
  • 添加单元测试

📝 许可证

麻省理工学院许可证-您可以自由地将其用作您自己的MCP服务器的学习资源或起点。

👤 作者

作为一个学习项目,旨在探索人工智能集成模式和模型上下文协议。


备注:此项目使用Microsoft的AdventureWorks示例数据库演示MCP概念。在使用真实数据进行生产使用之前,始终要审查安全影响。