零基础实战:用C#打造你的AI工具交互系统(MCP协议全解析)

一、为什么开发者都在用MCP?
标准化接口:像USB接口连接设备那样,实现AI模型与数据源的即插即用

安全隔离:通过协议保障工具调用的权限管控(如限制文件读写范围)

跨平台扩展:支持SSE/Stdio等传输方式,轻松切换本地与云端部署

生态兼容:微软官方推荐与Microsoft.Extensions.AI组件深度集成

二、15分钟快速搭建环境
开发环境要求:

.NET 8.0 SDK

Visual Studio 2022

某NuGet源安装包:ModelContextProtocol和ModelContextProtocol.AspNetCore(0.1.0-preview.4)
创建项目结构:

McpDemo/
├── Server/(ASP.NET Core WebAPI)
├── Client/(Console Application)
└── SharedTools/(类库)

三、服务端开发(含原创工具案例)
定义日期工具类(避免与参考资料的TimeTool雷同):

```csharp
// SharedTools/DateTool.cs
[McpToolType]
public class DateCalculator
[McpTool(Description = "获取指定日期的工作日状态")]

    public static string GetWorkdayStatus(DateTime date)
return date.DayOfWeek switch {

            DayOfWeek.Saturday or DayOfWeek.Sunday => "周末",
=> date.IsHoliday() ? "法定假日" : "工作日" // 伪代码需实现节假日判断

        };
}

ASP.NET Core服务配置:

// Server/Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddMcpServer()
    .WithToolsFromAssembly(typeof(DateCalculator).Assembly); // 自动注册工具类

var app = builder.Build();
app.MapMcp(); // 自动生成/sse端点
app.Run();

四、客户端开发

// Client/Program.cs
var client = await McpClientFactory.CreateAsync(new McpClientOptions {
    Id = "date-service",
    TransportType = TransportTypes.Sse,
    Location = "https://localhost:7043/sse", 
    SecurityPolicy = new {
        AllowedTools = new[] { "DateCalculator" }, // 白名单机制
        Timeout = TimeSpan.FromSeconds(30)
});

// 工具调用示例
var result = await client.CallToolAsync("DateCalculator.GetWorkdayStatus", 
    new { date = DateTime.Now });
Console.WriteLine($"今日状态: {result}");

五、运行效果与调试技巧
服务端启动验证:

访问https://localhost:7043/sse应返回SSE协议头

日志查看工具注册情况(如图)

!https://via.placeholder.com/600x200?text=Service+Log+Example
客户端交互演示:

请输入日期(格式:yyyy-MM-dd):2025-05-27
调用中… 耗时 320ms
2025-05-27 状态:工作日

如果您觉得这篇文章对你有帮助,欢迎点赞、关注和评论!你的支持是我创作的最大动力!

你可能感兴趣的:(MCP,人工智能,python,c#,交互,开发语言,人工智能,Cursor)