Featured image of post 使用C#构建MCP服务器并在VS Code中运行AI代理

使用C#构建MCP服务器并在VS Code中运行AI代理

本文详细介绍了如何利用C#构建自定义MCP服务器,通过VS Code中的MCP客户端实现与AI代理的实时通信,使LLM能够访问特定领域数据并生成精准响应。

构建基于MCP协议的AI代理

大型语言模型(如GPT-4o、Claude或Gemini)在处理通用问题时表现优异,但往往难以应对特定领域查询(例如"仅显示戴尔设备信息")。这是因为它们缺乏访问专有/内部数据的渠道。Model Context Protocol(MCP)通过提供上下文数据解决了这一痛点。

核心组件

  1. MCP Host:支持MCP的IDE(如VS Code)
  2. MCP Server:托管工具并通过MCP协议暴露上下文数据
  3. MCP Client:连接Host与Server的桥梁

实现步骤

1. 创建MCP服务器项目

使用C# SDK构建自定义服务器,关键代码如下:

1
2
3
4
5
6
7
8
9
var builder = WebApplication.CreateBuilder(args);
try {
    builder.Services
        .AddMcpServer()
        .WithStdioServerTransport()
        .WithToolsFromAssembly();
} catch (Exception ex) {
    Console.WriteLine($"Error: {ex.Message}");
}

AddMcpServer()方法将项目转换为MCP服务器,WithToolsFromAssembly()自动扫描并注册工具。

2. 开发MCP工具

工具元数据(标题和描述)帮助LLM进行语义匹配。示例工具代码:

1
2
3
4
5
6
7
8
[McpServerToolType]
public class BYODTool {
    [McpServerTool(Description = "获取外设信息")]
    public string GetPeripherals(string message) {
        // 实现API调用逻辑
        return JsonConvert.SerializeObject(responseData);
    }
}

3. 配置VS Code工作区

在.vscode目录创建mcp.json配置文件:

1
2
3
4
5
6
7
8
9
{
    "servers": {
        "my-mcp-server": {
            "type": "stdio",
            "command": "dotnet",
            "args": ["run","--project","/path/to/project.csproj"]
        }
    }
}

4. 运行流程

  1. MCP客户端通过VS Code连接服务器
  2. 用户在Copilot聊天窗口输入提示(如"仅显示戴尔设备")
  3. LLM根据工具描述选择执行GetPeripherals工具
  4. 工具从安全API获取数据后,LLM生成最终响应

架构优势

  • 模块化设计:工具可独立开发和部署
  • 上下文感知:动态获取实时数据
  • 安全通信:支持Bearer Token认证
  • 跨平台支持:基于标准stdio通信

该方案显著提升了AI代理处理领域特定任务的能力,同时保持了系统的可扩展性和可维护性。

图示说明:MCP架构实现了从用户提示→工具选择→数据获取→响应生成的全自动闭环流程。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计