使用说明
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 精简版:本地数据库引擎
- 依赖注入:具有基于接口的服务的干净架构
✨ 特性
可用工具
- get_客户:从数据库中检索前N名客户
- 搜索产品:按名称、价格范围或类别搜索产品
- 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的云端进行人工智能处理
- 不适合敏感数据的生产使用
企业部署建议
对于具有真实数据的生产使用,请实施:
-
只读数据库访问
- 创建仅具有SELECT权限的SQL用户
- 限制对特定表/视图的访问
- 如果可用,请使用行级安全性
-
数据屏蔽/匿名化
- 在返回结果之前过滤PII
- 哈希敏感标识符
- 对敏感数据实施字段级加密
-
自托管AI模型
- 在本地部署开源LLM(Llama、Mistral)
- 构建不向外部API发送数据的自定义MCP客户端
- 将所有数据处理保持在网络内
-
审计日志
- 记录所有MCP工具调用
- 跟踪哪些用户访问了哪些数据
- 实施合规报告
-
速率限制和节流
- 防止过多的数据库查询
- 实施查询复杂性限制
- 添加身份验证/授权层
数据隐私
将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概念。在使用真实数据进行生产使用之前,始终要审查安全影响。