.NET AI 和模型上下文协议入门

模型上下文协议(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 的体系结构模式(包括主机、客户端和服务器)的关系图。

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 服务器集成。

请通过以下开发工具开始入门:

使用以下资源详细了解 .NET 和 MCP: