煅汾付 发表于 2025-6-3 00:30:32

【译】微软与 Anthropic 合作为 MCP 创建官方 C# SDK

  微软正在与 Anthropic 合作,为模型上下文协议(MCP)创建一个官方的 C# SDK。MCP 已经在人工智能社区得到了迅速的应用,这次合作旨在增强人工智能模型与 C#应用程序的集成。
  该 SDK 是作为一个开源项目在 modelcontextprotocol GitHub 组织中开发的,这使得开发人员很容易找到并在项目上进行协作。该库的 NuGet 包叫 ModelContextProtocol。
  这个库的起点是一个名为 mcpdotnet 的项目,由 Peder Holdgaard Pederson 发起。我们非常感谢 Peder 和其他贡献者所做的工作,他们为官方的 C# MCP 库奠定了坚实的基础。
MCP 是什么?


  模型上下文协议(MCP)是由 Anthropic 创建的一个开放协议,用于实现 LLM 应用程序与外部工具和数据源之间的集成。它最初于2024年11月发布,最近进行了更新,增加了新的流功能。该协议被设计为可扩展和灵活的,允许开发人员创建可用于 LLM 的自定义工具和数据源。
  许多微软产品已经增加了对 MCP 的支持,包括 Copilot Studio、VS Code 的新 GitHub Copilot Agent 模式和 Semantic Kernel。许多微软产品正在创建 MCP 服务器来访问它们的功能。GitHub MCP Server 和 用于浏览器自动化的 Playwright MCP 都是很受欢迎的例子,还有更多的正在开发中。
为什么是 C#?

  C# 是一种流行的编程语言,被许多开发人员使用,尤其是在企业领域。通过为 MCP 创建官方 C# SDK,微软旨在使开发人员更容易将 AI 模型集成到他们的 C# 应用程序中,并使用 C# 构建 MCP 服务器。C# SDK 还利用了现代 .NET 中显著的性能改进,为人工智能应用程序提供了出色的速度和效率。有了.NET 优化的运行时和对容器化的支持,服务在本地开发场景中表现良好。微软的许多核心产品都是用 C# 编写的,包括 Visual Studio、大部分 Azure 服务、支持 Microsoft Teams 和 XBOX 的服务等等。所有这些产品都可以从 MCP 中受益,C# SDK 为此提供了基础。
MCP的简要说明

  AI 应用程序可以使用 MCP 连接到外部工具和数据源,然后将其作为其上下文的一部分提供给 LLM。通过让 LLM 访问和使用外部数据和工具,增强其功能,使其能够执行更复杂的任务。
  AI 应用程序在 MCP 中称为 Host,通过 MCP 客户端与 MCP 服务器通信。MCP 客户端理解 MCP 协议,可以向 MCP 服务器发送请求,然后 MCP 服务器处理请求并返回响应。如下图所示:

  MCP 客户端和服务器端可以交换一组标准消息,包括:
消息
描述
InitializeRequest
该请求在客户端第一次连接时从客户端发送到服务器,要求服务器开始初始化
ListToolsRequest
从客户端发送请求服务器拥有的工具列表
CallToolRequest
客户端用来调用服务器提供的工具
ListResourcesRequest
从客户端发送,请求服务器拥有的资源列表
ReadResourceRequest
从客户端发送到服务器,读取特定的资源URI
ListPromptsRequest
从客户端发出,请求服务器所持有的提示词和提示词模板列表
GetPromptRequest
客户端用于获取服务器提供的提示词
PingRequest
由服务器或客户端发出的一种ping,用于检查对方是否还活着
CreateMessageRequest
服务器向客户端发出的通过客户端对大语言模型(LLM)进行采样的请求。客户端可以自主决定选择使用哪个模型。此外,客户端应在开始采样之前告知用户,以便用户能够检查该请求(引入人工干预环节),并决定是否批准该请求。
SetLevelRequest
从客户端到服务器的请求,以启用或调整日志记录
  正如您所看到的,MCP 协议被设计为灵活和可扩展的,允许开发人员创建可与 LLM 一起使用的自定义工具和数据源。而且已经有很多 MCP 服务器可用,每天都有更多的服务器被创建。modelcontextprotocol/servers repo 中的自述文件包含了参考服务器、第三方服务器和社区服务器的列表,这些服务器总共有数百个。
一个简单的例子——Echo 服务器

  使用官方 C# SDK 创建一个简单的 MCP 服务器非常容易。这里我们将演示 SDK README 中包含的示例 Echo 服务器。Echo 服务器只是回显它从客户机接收到的任何消息,并以“hello”为前缀。
  从一个新的 dotnet 控制台应用程序开始,添加 Microsoft.Extensions.Hosting 和 ModelContextProtocol NuGet 包:
dotnet add package Microsoft.Extensions.Hosting
dotnet add package ModelContextProtocol --prerelease  然后,将 Program.cs 文件中的代码替换为以下代码:
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using ModelContextProtocol.Server;
using System.ComponentModel;

var builder = Host.CreateApplicationBuilder(args);
builder.Logging.AddConsole(consoleLogOptions =>
{
    // Configure all logs to go to stderr
    consoleLogOptions.LogToStandardErrorThreshold = LogLevel.Trace;
});
builder.Services
    .AddMcpServer()
    .WithStdioServerTransport()
    .WithToolsFromAssembly();
await builder.Build().RunAsync();


public static class EchoTool
{
   
    public static string Echo(string message) => $"hello {message}";
}  注意:MCP C# SDK 处于预览阶段,Api 可能会发生变化。随着 SDK 的发展,我们将不断更新这个博客,但是如果您遇到上述代码的任何问题,请尝试使用 mcp-csharp README 中的“Getting Started (Server)”部分中的第一个代码示例。
  现在要查看服务器的运行情况,可以使用 MCP Inspector,这是 MCP 服务器的可视化测试工具。
  由于 MCP Inspector 是一个 node 应用程序,您不需要安装它,只需使用 npx 运行它即可。Inspector 的参数是一个将运行服务器的命令。在本例中,我们希望在当前目录下运行服务器,所以我们可以使用 dotnet run:
npx @modelcontextprotocol/inspector dotnet run  系统可能会提示您安装 Inspector ,您可以按 y 并按 enter 键来安装。Inspector 将启动并执行用于启动服务器的命令。您会在终端上看到一些输出,表明服务器正在启动,然后它会显示一条消息,表明 Inspector UI 准备好了:

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 【译】微软与 Anthropic 合作为 MCP 创建官方 C# SDK