LLM数据库交互协议解决方案

一个基于.NET 8.0的MCP服务器-客户端解决方案,通过配置驱动架构实现LLM交互与数据库操作的智能协调。

  • by MohammedJayyab
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 mohammedjayyab/mcp-agent

使用说明

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密钥管理:配置文件中的安全存储
  • 凭证保护:基于模板的设置可防止意外提交
  • 连接安全性:执行超时和大小限制

发展

添加新工具

  1. 扩展 tools.json 工具定义
  2. 实现逻辑 DatabaseService.cs
  3. 在中添加方法处理 Server.cs

配置管理

  • 使用模板文件进行初始设置
  • 支持特定于环境的覆盖
  • 安全的凭证存储实践

故障排除

常见问题

  1. 未找到连接字符串:验证 appsettings.json 存在并且格式正确
  2. 服务器未响应:检查服务器是否正在运行以及端口是否可访问
  3. API关键错误:验证LLM提供程序凭据是否配置正确
  4. 数据库访问被拒绝:检查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 具有内置池的类

贡献

  1. 遵循现有的代码模式和命名约定
  2. 添加适当的错误处理和日志记录
  3. 包括新工具的参数验证
  4. 使用各种SQL Server版本进行测试
  5. 更新新功能的文档
  6. 维护安全最佳实践

许可证

此项目是MCP Agent解决方案的一部分。使用条款请参考项目许可证。

支持

对于问题和疑问:

  1. 检查故障排除部分
  2. 查看单个项目的自述文件
  3. 检查配置模板
  4. 验证先决条件和依赖关系