用途:在 .NET 应用中按 MCP 协议实现互操作,既可暴露 MCP 服务端能力,也可作为客户端连接已有 MCP 服务器,并检查协商后的能力再使用可选特性。
包选择:仅需客户端或低层服务端 API 用 ModelContextProtocol.Core;多数项目从 ModelContextProtocol 起步,含托管、DI、特性发现与 stdio 服务端;远程 HTTP 服务端用 ModelContextProtocol.AspNetCore(已包含主包)。
传输选择:本地子进程服务端用 StdioClientTransport 或 WithStdioServerTransport(),适合本地工具与编辑器集成;远程或需 HTTP 可达时用 HttpClientTransport 配合 Streamable HTTP(推荐,支持流式与会话恢复);SSE 仅用于兼容旧服务器,不应作为新服务端默认。
建模:用 [McpServerToolType] + [McpServerTool]、[McpServerResourceType] + [McpServerResource]、[McpServerPromptType] + [McpServerPrompt] 声明工具、资源、提示;过滤器仅用于横切策略或协议扩展。
用法要点:服务端先 AddMcpServer() 再选 WithStdioServerTransport() 或 WithHttpTransport(),HTTP 用 app.MapMcp("/mcp");客户端用 McpClient.CreateAsync(...),取工具后可传入 IChatClient,并先查 ServerCapabilities 再使用补全、日志、订阅或提示/资源列表变更。
限制与注意:stdio 服务端日志必须写 stderr,否则破坏协议流;工具异常通常表现为 CallToolResult.IsError == true;可选特性须按协商能力处理;实验 API 有 MCPEXP 诊断,应有意识地抑制。资料中未提供具体价格、平台或效果数据。