使用说明
MCP服务器客户端解决方案
A.NET 8.0解决方案,实现了一个模型上下文协议(MCP)服务器,该服务器具有一个智能客户端,该客户端通过配置驱动的架构协调LLM交互和数据库操作。
概述
该解决方案提供了一个完整的MCP生态系统,包括:
- MCP服务器:基于HTTP的JSON-RPC服务器,集成SQL server
- MCP客户端:LLM驱动的客户端,具有智能工具编排功能
- 配置管理:具有特定环境覆盖的集中设置
建筑
MCP服务器
- HTTP服务器 在可配置的主机/端口上运行(默认:
http://localhost:8080/) - 数据库服务 具有SQL Server集成和安全连接处理功能
- JSON-RPC 支持CORS的通信协议
- 工具发现 通过
tools.json配置 - 可配置的 服务器设置通过
appsettings.json
MCP客户端
- LLM编排师 用于智能工具选择和执行
- 动态工具执行器 用于运行时工具调用
- 健康检查器 用于服务器连接验证
- 交互式控制台 用于自然语言数据库查询
- 多LLM支持 具有可配置的提供者(OpenAI、DeepSeek、Gemini)
主要特点
- 智能工具编排:LLM为工具选择提供决策支持
- 动态工具执行:数据库工具的运行时发现和执行
- 多提供商LLM支持:具有API密钥管理的可配置LLM提供程序
- 数据库集成:具有安全连接处理的直接SQL Server连接
- 交互界面:基于控制台的查询界面,带彩色输出
- 配置驱动:通过基于模板的配置文件轻松设置
- 安全第一:请求验证、SQL注入保护和安全凭据管理
先决条件
- .NET 8.0 SDK或更高版本
- SQL Server实例(本地或远程)
- 您首选供应商的LLM API证书
- 目标数据库的网络访问
快速开始
1.克隆和设置
git clone <repository-url>
cd MCP-Agent
2.服务器配置
cd MCPServer
cp appsettings.template.json appsettings.json
# Edit appsettings.json with your database connection string
3.客户端配置
cd MCPClient
cp appsettings.template.json appsettings.json
# Edit appsettings.json with your LLM API keys
4.启动服务器
cd MCPServer
dotnet run
5.运行客户端
cd MCPClient
dotnet run
配置
服务器配置(MCPServer/appsettings.json)
{
"ConnectionStrings": {
"DefaultConnection": "Server=YOUR_SERVER\\INSTANCE;Database=YOUR_DATABASE;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD;TrustServerCertificate=True;MultipleActiveResultSets=true"
},
"ServerSettings": {
"BaseUrl": "http://localhost:8080/"
}
}
客户端配置(MCPClient/appsettings.json)
{
"Server": {
"Host": "localhost",
"Port": 8080,
"RequestTimeoutSeconds": 30,
"MaxRequestSizeMB": 1
},
"LLM": {
"DefaultProvider": "DeepSeek",
"DefaultTemparature": "0.2",
"DefaultMaxTokens": "4096",
"OpenAI": {
"ApiKey": "your-openai-api-key",
"Model": "gpt-3.5-turbo"
},
"DeepSeek": {
"ApiKey": "your-deepseek-api-key",
"Model": "deepseek-chat"
},
"Gemini": {
"ApiKey": "your-gemini-api-key",
"Model": "gemini-1.5-flash"
}
}
}
可用工具
服务器为数据库操作提供了几个内置工具:
| 工具 | 说明 | 参数 |
|---|---|---|
health |
服务器健康检查 | 无 |
executeSQL |
执行SQL查询 | query (字符串) |
getTableSchema |
获取表结构 | tableName (字符串) |
getDatabaseSchema |
获取完整的数据库架构 | 无 |
getTools |
列出可用工具 | 无 |
使用示例
交互式客户端会话
🤖 LLM Orchestrator ready! Type 'exit' to quit.
❓ Question: What tables exist in the database?
❓ Question: Show me the structure of the Users table
❓ Question: exit
👋 Goodbye!
直接API调用
# Health check
curl -X POST http://localhost:8080/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": "health-1", "method": "health", "params": {}}'
# Execute SQL
curl -X POST http://localhost:8080/ \
-H "Content-Type: application/json" \
-d '{"jsonrpc": "2.0", "id": "sql-1", "method": "executeSQL", "params": {"query": "SELECT TOP 5 * FROM Users"}}'
项目结构
MCP-Agent/
├── MCPServer/ # HTTP server with database integration
│ ├── Program.cs # Application entry point
│ ├── Server.cs # HTTP server implementation
│ ├── DatabaseService.cs # Database operations
│ ├── SqlConnectionFactory.cs # Connection management
│ ├── tools.json # Tool definitions
│ ├── appsettings.template.json # Configuration template
│ └── ServerConfiguration.cs # Configuration models
├── MCPClient/ # LLM-powered client
│ ├── Program.cs # Client entry point
│ ├── AppConfig.cs # Configuration management
│ ├── ClientConfig.cs # Client settings
│ ├── LLMOrchestrator/ # LLM integration
│ ├── DynamicExecutor/ # Runtime tool execution
│ ├── HealthChecker.cs # Server connectivity
│ ├── ToolDiscoverer.cs # Tool discovery
│ ├── appsettings.template.json # Configuration template
│ └── README.md # Client documentation
├── MCP-Agent.sln # Solution file
└── README.md # This file
安全功能
服务器安全
- 请求验证:大小限制(1MB)、方法验证、内容类型检查
- 数据库安全性:参数化查询、连接管理、错误处理
- 网络安全:CORS支持,可配置访问控制
客户端安全
- API密钥管理:配置文件中的安全存储
- 凭证保护:基于模板的设置可防止意外提交
- 连接安全性:执行超时和大小限制
发展
添加新工具
- 扩展
tools.json工具定义 - 实现逻辑
DatabaseService.cs - 在中添加方法处理
Server.cs
配置管理
- 使用模板文件进行初始设置
- 支持特定于环境的覆盖
- 安全的凭证存储实践
故障排除
常见问题
- 未找到连接字符串:验证
appsettings.json存在并且格式正确 - 服务器未响应:检查服务器是否正在运行以及端口是否可访问
- API关键错误:验证LLM提供程序凭据是否配置正确
- 数据库访问被拒绝:检查SQL Server权限和连接字符串
日志记录
- 服务器为启动、请求和错误提供控制台输出
- 客户端显示连接状态和工具发现进度
- 数据库错误以适当的详细级别记录
依赖项
- .NET 8.0:运行时和SDK
- 微软。数据。SqlClient:SQL Server连接
- 微软。扩展。配置:配置管理
- LLMKit:多提供商LLM集成(客户端)
性能优化
内置性能特性
MCP服务器现在包括 企业级性能优化 默认情况下:
性能优势
| 度量 | 标准 | 优化 | 改进 |
|---|---|---|---|
| 连接时间 | 50-100ms | 1-5ms | 速度提高90-95% |
| 内存使用 | 高 | 低 | 减少60-80% |
| 并发请求 | 有限 | 高 | 10-20倍以上 |
优化了什么
- 连接池:3-50个连接,具有自动验证功能
- 异步操作:所有数据库调用都是异步的,以获得更好的性能
- 自动清理:每5分钟删除一次死连接
- 资源管理:正确处置和清理
- 简化架构:单人
DatabaseService具有内置池的类
贡献
- 遵循现有的代码模式和命名约定
- 添加适当的错误处理和日志记录
- 包括新工具的参数验证
- 使用各种SQL Server版本进行测试
- 更新新功能的文档
- 维护安全最佳实践
许可证
此项目是MCP Agent解决方案的一部分。使用条款请参考项目许可证。
支持
对于问题和疑问:
- 检查故障排除部分
- 查看单个项目的自述文件
- 检查配置模板
- 验证先决条件和依赖关系