文档管理AI代理

一个基于.NET 10的AI代理解决方案,通过Model Context Protocol (MCP)实现文档管理工具的交互式操作。

  • by Sonu9933
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 Sonu9933/MCPServer

使用说明

# MCPServer+AIAgent

A. .NET 10 演示如何使用 **模型上下文协议(MCP)**该解决方案包含两个项目:

项目 角色
MCPServer MCP服务器通过stdio公开文档工具、资源和提示
AIAgent 连接到MCP服务器和AI模型的交互式控制台AI代理

先决条件


解决方案结构

MCPServer+AIAgent.slnx
├── MCPServer/                               ← MCP Server project
│   ├── Program.cs                           ← Bootstraps the MCP server (stdio transport)
│   ├── InMemoryData/
│   │   └── DocsInMemory.cs                  ← In-memory document store (6 fake docs)
│   └── MCP/
│       ├── Tool/DocumentMCPTool.cs          ← ReadDoc + UpdateDoc tools
│       ├── Resource/DocumentMCPResource.cs  ← docs://documents URI resources
│       └── Prompt/DocumentMCPPrompt.cs      ← Prompt templates
└── AIAgent/                                 ← AI Agent project
    ├── Program.cs                           ← Host bootstrap
    ├── appsettings.json                     ← Provider configuration
    └── Agent/
        ├── AgentService.cs                  ← Chat loop + MCP client wiring
        └── ProviderFactory.cs               ← Builds the IChatClient from config

运行MCP服务器(独立)

MCP服务器通过以下方式进行通信 标准 (JSON-RPC)。独立运行它会导致阻塞——它需要一个MCP客户端来与之通信。

cd MCPServer
dotnet run

使用VS代码副本进行测试

  1. 在安装了GitHub Copilot扩展的VS Code中打开项目。
  2. 点击 配置工具。.. 在“副驾驶”面板中→ 滚动至 stdio-coordinate-server → 选择所有工具→ click 好的.
  3. 使用提示(前缀 /)调用MCP Prompts,以及 + 聊天中的图标,用于附加MCP资源。

与MCP检查员一起进行测试

npx @modelcontextprotocol/inspector dotnet run --project MCPServer/MCPServer.csproj

运行AI代理

步骤1--配置您的提供商

编辑 AIAgent/appsettings.json 并设置 Agent:Provider 到支持的值之一,然后填写相应的凭据部分:

{
  "Agent": {
    "Provider": "OpenAI"
  },
  "OpenAI": {
    "ApiKey": "sk-...",
    "Model": "gpt-4o"
  }
}

看 支持的提供商 对于所有选项。

步骤2--运行代理

cd AIAgent
dotnet run

代理自动将MCP服务器作为子进程启动,发现其工具,并启动交互式聊天会话。

查询示例

You: List all available documents
You: Read the contents of report.pdf
You: Update plan.md with "Phase 1 complete, starting Phase 2"
You: exit

支持的提供商

通过更改来切换提供商 Agent:Provider 在 appsettings.json — 无需更改代码.

开放人工智能 (默认)

"Agent": { "Provider": "OpenAI" },
"OpenAI": {
  "ApiKey": "sk-...",
  "Model": "gpt-4o"
}

支持的型号: gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo


Azure OpenAI

"Agent": { "Provider": "AzureOpenAI" },
"AzureOpenAI": {
  "Endpoint": "https://<your-resource>.openai.azure.com/",
  "ApiKey": "<your-key>",
  "DeploymentName": "gpt-4o"
}

与OpenAI相同的模型,托管在您的Azure订阅中。


奥拉玛 (本地,免费,无API密钥)

  1. 从以下位置安装 https://ollama.com
  2. 拉取模型并启动服务器:
    ollama pull llama3.2
    ollama serve
    
  3. 配置:
    "Agent": { "Provider": "Ollama" },
    "Ollama": {
      "Endpoint": "http://localhost:11434/v1",
      "Model": "llama3.2"
    }
    

支持的型号: llama3.2, mistral, phi4, qwen2.5, deepseek-r1,以及通过以下方式提供的任何型号 ollama pull.


GitHub模型 (免费套餐)

  1. 在以下位置创建GitHub个人访问令牌 github/设置/令牌
  2. 配置:
    "Agent": { "Provider": "GitHub" },
    "GitHub": {
      "Token": "github_pat_...",
      "Model": "gpt-4o"
    }
    

支持的型号: gpt-4o, Phi-4, Meta-Llama-3.3-70B-Instruct,及其他 github/市场/模型.


提供商比较

提供商 成本 数据隐私 需要API密钥
OpenAI 按令牌付费 云(OpenAI) 是
Azure OpenAI 按令牌付费 您的Azure租户 是
Ollama 免费 完全本地化 否
GitHub模型 免费层 云(微软) GitHub PAT

MCP图元

原始 它做什么 示例
工具 AI可以发挥的作用 呼叫 ReadDoc(docId), UpdateDoc(...)
资源 AI可以提供的数据 阅读 按URI docs://documents/{docId}
提示 可重复使用的提示模板 read_document_content_prompt

依赖项

项目 包 版本 目的
MCP服务器 ModelContextProtocol 1.2.0 MCP服务器原语
MCP服务器 Microsoft.Extensions.Hosting 10.0.5 主机/DI
A代理人 Microsoft.Extensions.AI 9.5.0 AI抽象层
A代理人 Microsoft.Extensions.AI.OpenAI 10.3.0 OpenAI+Azure OpenAI集成
A代理人 Azure.AI.OpenAI 2.1.0 Azure OpenAI客户端
A代理人 ModelContextProtocol 1.2.0 MCP客户端
A代理人 Microsoft.Extensions.Hosting 10.0.5 主机/DI/配置