模型上下文协议(MCP)是一种开放协议,旨在标准化 AI 应用与外部工具和数据源之间的集成。 通过使用 MCP,开发人员可以增强 AI 模型的功能,使他们能够生成更准确、更相关和上下文感知的响应。
例如,使用 MCP 可将 LLM 连接到资源,例如:
- 记录数据库或存储服务。
- 公开业务数据或逻辑的 Web API。
- 用于管理文件或在用户设备上执行本地任务的工具。
许多Microsoft产品已经支持 MCP,包括:
可以使用 MCP C# SDK 快速创建自己的 MCP 集成并在不同 AI 模型之间切换,而无需进行重大代码更改。
MCP 客户端-服务器体系结构
MCP 使用客户端服务器体系结构,使 AI 驱动的应用(主机)能够通过 MCP 客户端连接到多个 MCP 服务器:
- MCP 主机:通过 MCP 使用上下文资源增强 AI 模型的 AI 工具、代码编辑器或其他软件。 例如,Visual Studio Code 中的 GitHub Copilot 可以充当 MCP 主机,并使用 MCP 客户端和服务器扩展其功能。
- MCP 客户端:主机应用程序用来连接到 MCP 服务器的客户端以检索上下文数据。
- MCP 服务器:通过 MCP 向客户端公开功能的服务。 例如,MCP 服务器可能通过 REST API 或本地数据源提供抽象,以便向 AI 模型提供业务数据。
下图说明了此体系结构:
MCP 客户端和服务器可以交换一组标准消息:
消息 | DESCRIPTION |
---|---|
InitializeRequest |
首次连接时,客户端会向服务器发送此请求,要求它开始初始化。 |
ListToolsRequest |
由客户端发送以请求服务器拥有的工具列表。 |
CallToolRequest |
由客户端用来调用服务器提供的工具。 |
ListResourcesRequest |
客户端发送请求以获取可用的服务器资源列表。 |
ReadResourceRequest |
由客户端发送到服务器以读取特定资源 URI。 |
ListPromptsRequest |
由客户端发送,从服务器请求可用提示和提示模板的列表。 |
GetPromptRequest |
由客户端用来获取服务器提供的提示。 |
PingRequest |
由服务器或客户端发送的 ping 检查对方是否仍然在线。 |
CreateMessageRequest |
服务器通过客户端对 LLM 进行采样的请求。 客户端对要选择的模型具有完全自由裁量权。 客户还应在开始采样之前告知用户,以便他们检查请求(人机交互),并决定是否批准。 |
SetLevelRequest |
客户端向服务器发送的请求,用于启用或调整日志记录。 |
使用 MCP C# SDK 进行开发
作为 .NET 开发人员,可以通过创建 MCP 客户端和服务器来使用 MCP 来增强应用与自定义集成。 MCP 减少了将 AI 模型连接到各种工具、服务和数据源的复杂性。
官方 MCP C# SDK 通过 NuGet 提供,可用于为 .NET 应用和库生成 MCP 客户端和服务器。 SDK 由微软、Anthropic 和 MCP 开放协议组织通过协作进行维护。
若要开始,请将 MCP C# SDK 添加到项目:
dotnet add package ModelContextProtocol --prerelease
通常可以利用或引用来自各种提供程序(如 GitHub 和 Docker)的预生成集成,而不是为每个集成点生成唯一的连接器:
与 Microsoft.Extensions.AI 集成
MCP C# SDK 依赖于 Microsoft.Extensions.AI 库 来处理各种 AI 交互和任务。 这些扩展库提供用于处理 AI 服务的核心类型和抽象,因此开发人员可以专注于针对概念 AI 功能(而不是特定平台或提供程序实现)进行编码。
查看 NuGet 包页上的 MCP C# SDK 依赖项。
更多 .NET MCP 开发资源
.NET 和 Azure 生态系统中提供了各种工具、服务和学习资源,可帮助你构建 MCP 客户端和服务器或与现有 MCP 服务器集成。
请通过以下开发工具开始入门:
- 语义内核 允许为 MCP 服务器添加插件。 语义内核支持通过标准 I/O 的本地 MCP 服务器和通过 HTTPS 通过 SSE 连接的远程服务器。
- Azure Functions 远程 MCP 服务器将 MCP 标准与 Azure Functions 的灵活体系结构相结合。 有关代码示例,请访问 远程 MCP 函数示例存储库 。
- Azure MCP 服务器 实现 MCP 规范,以便将 AI 代理与 Azure 存储、Cosmos DB 等关键 Azure 服务无缝连接。
使用以下资源详细了解 .NET 和 MCP: