使用说明
项目简介
mcpdotnet 是 Model Context Protocol (MCP) 的 .NET 实现,旨在帮助 .NET 开发者轻松构建 MCP 服务器和客户端应用。该库提供了 MCP 协议的核心功能,使得 .NET 应用能够以标准化的方式为大型语言模型 (LLM) 提供上下文信息和功能。
主要功能点
- 核心 MCP 协议实现: 提供完整的 MCP 协议规范的 .NET 实现。
- 资源管理: 支持 MCP 资源的托管和数据访问能力。
- 工具注册与执行: 允许注册和执行工具,供 LLM 客户端调用外部功能。
- Prompt 模板处理: 支持 Prompt 模板的定义和渲染,实现可定制的 LLM 交互模式。
- 传输协议支持: 客户端支持 Stdio 和 SSE 传输协议,服务器端支持 Stdio 传输协议。
- 全面的 MCP 能力支持: 支持 Tool, Resource, Prompt, Sampling, Roots 等 MCP 定义的所有核心能力。
- 易于集成: 提供简洁的 API 和扩展方法,方便 .NET 应用集成 MCP 功能。
安装步骤
-
使用 NuGet 包管理器安装 'mcpdotnet' 包:
dotnet add package mcpdotnet
服务器配置
MCP 服务器需要通过客户端配置连接信息才能使用。以下是一个典型的 JSON 格式服务器配置示例,用于连接一个基于 Stdio 传输的 MCP 服务器:
{ "id": "my-mcp-server", // 服务器的唯一标识符,客户端用此 ID 引用 "name": "我的 MCP 服务器", // 服务器的显示名称,方便用户识别 "transportType": "Stdio", // 传输协议类型,这里指定为 Stdio "transportOptions": { // 传输协议选项,根据 Stdio 协议要求配置 "command": "服务器启动命令", // MCP 服务器的可执行文件启动命令,例如 "dotnet" 或 "node" "arguments": "服务器启动参数" // 启动命令的参数,例如 "MyMcpServer.dll" 或 "server.js" } }
参数注释:
- 'id': 客户端用于唯一标识和引用此服务器配置的 ID,可以自定义,例如 "my-mcp-server"。
- 'name': 服务器的名称,用于在客户端界面显示,例如 "我的 MCP 服务器"。
- 'transportType': 传输协议类型,必须设置为 '"Stdio"' (标准输入输出管道)。
- 'transportOptions': 传输协议的具体配置选项,是一个 JSON 对象。
- 'command': 重要,MCP 服务器的可执行文件启动命令。例如,如果服务器是 .NET 应用,则可能是 '"dotnet"';如果是 Node.js 应用,则可能是 '"node"'。请根据实际服务器的启动方式填写。
- 'arguments': 重要,MCP 服务器启动命令的参数。例如,如果服务器是编译后的 .NET DLL 文件 'MyMcpServer.dll',则参数应为 '"MyMcpServer.dll"';如果是 Node.js 的 'server.js' 文件,则参数应为 '"server.js"'。请根据实际服务器的启动方式和入口文件填写。
注意: 'command' 和 'arguments' 必须根据您实际部署和运行的 MCP 服务器进行配置。上述示例值仅为演示,请替换为您的服务器启动命令和参数。 MCP 客户端会使用这些配置信息来启动并连接到 MCP 服务器。
基本使用方法
创建 MCP 客户端并连接服务器 (客户端)
// 客户端配置选项 var options = new McpClientOptions() { ClientInfo = new() { Name = "MyClientApp", Version = "1.0.0" } }; // 服务器配置信息 (根据上面服务器配置示例修改) var config = new McpServerConfig { Id = "my-mcp-server", Name = "我的 MCP 服务器", TransportType = TransportTypes.Stdio, TransportOptions = new Dictionary<string, string> { ["command"] = "服务器启动命令", // 替换为您的服务器启动命令 ["arguments"] = "服务器启动参数" // 替换为您的服务器启动参数 } }; // 创建 MCP 客户端工厂 var factory = new McpClientFactory( [config], // 传入服务器配置 options, NullLoggerFactory.Instance // 建议使用实际的 LoggerFactory 实例进行日志记录 ); // 获取指定 ID 的 MCP 客户端实例 var client = await factory.GetClientAsync("my-mcp-server"); // 现在可以使用 client 对象与 MCP 服务器进行交互,例如列出工具、调用工具等 var tools = await client.ListToolsAsync();
创建 MCP 服务器 (服务器端)
// 创建主机构建器 var builder = Host.CreateApplicationBuilder(args); // 添加 MCP 服务器服务 builder.Services.AddMcpServer() .WithStdioServerTransport() // 使用 Stdio 传输协议 .WithTools(); // 自动注册当前程序集中的所有工具 // 构建应用 var app = builder.Build(); // 运行应用 (启动 MCP 服务器) await app.RunAsync();
定义工具 (服务器端)
[McpToolType] // 标记为工具类型容器 public static class MyTools { [McpTool(Description = "一个简单的回声工具")] // 标记为 MCP 工具,并添加描述 public static string Echo([McpParameter(true)] string message) // 定义工具方法,message 参数为必需 { return "服务器回显: " + message; } }
更多详细用法和高级功能,请参考仓库中的示例代码和测试用例。
信息
分类
开发者工具