使用说明
项目简介
Mcp.Net 是一个Model Context Protocol (MCP) 的 .NET 实现库,用于快速构建MCP服务器。MCP服务器旨在为大型语言模型 (LLM) 应用提供标准化的上下文服务,主要功能包括:
- 工具 (Tools) 管理: 注册和执行外部功能,允许LLM通过标准协议调用工具。
- 资源 (Resources) 管理: 托管和管理数据资源,为LLM提供数据访问能力。
- Prompt 模板 (Prompts) 管理: 定义和渲染Prompt模板,支持定制化的LLM交互模式。
Mcp.Net 提供了服务端和客户端库,以及丰富的示例,方便开发者快速上手和集成。
主要功能点
- MCP协议实现: 完整实现了MCP协议,支持JSON-RPC通信,确保与MCP客户端的兼容性。
- 双传输协议支持:
- Stdio: 适用于命令行工具和直接模型交互,轻量高效。
- SSE (Server-Sent Events): 适用于Web应用和浏览器集成,支持多客户端并发连接。
- 工具动态注册与发现: 支持动态注册工具,客户端可以自动发现和调用已注册的工具。
- 参数JSON Schema验证: 支持使用JSON Schema对工具参数进行验证,确保参数的有效性。
- 同步与异步工具: 支持同步和异步工具方法,满足不同场景的需求。
- 灵活的部署方式: 可以作为独立服务器运行,也可以嵌入到ASP.NET Core应用中。
安装步骤
-
安装 NuGet 包: 根据需要安装服务端或客户端包。
-
服务端: 用于构建MCP服务器
dotnet add package Mcp.Net.Server -
客户端: 用于构建MCP客户端,与MCP服务器通信
dotnet add package Mcp.Net.Client
-
-
创建 MCP 服务器: 在 .NET 项目中,可以使用 'McpServerBuilder' 或直接创建 'McpServer' 实例来构建服务器。
-
示例代码 (快速开始):
using Mcp.Net.Server; using Mcp.Net.Core.Attributes; using System.Reflection; using System.Threading.Tasks; public class ExampleServer { public static async Task Main(string[] args) { var server = new McpServer( new ServerInfo { Name = "Example MCP Server", Version = "1.0" } ); // 注册工具 (示例工具类) server.RegisterToolsFromAssembly(Assembly.GetExecutingAssembly(), null); // 连接 Stdio 传输并启动服务器 await server.ConnectAsync(new StdioTransport()); Console.WriteLine("MCP Server started. Press any key to exit."); Console.ReadKey(); } } // 示例工具类 [McpTool("Calculator", "Math operations")] public class CalculatorTools { [McpTool("add", "Add two numbers")] public string Add( [McpParameter(required: true, description: "First number")] double a, [McpParameter(required: true, description: "Second number")] double b) { return $"The sum of {a} and {b} is {a + b}"; } }
-
服务器配置
MCP客户端需要配置MCP服务器的启动命令 (command) 及其参数 (args) 才能与之建立连接。以下是基于 Mcp.Net 仓库信息生成的服务器配置信息示例 (JSON 格式):
{ "server name": "Mcp.Net Server", "transport": "stdio", "command": "dotnet run", "args": [ "--project", "path/to/Mcp.Net.Examples.SimpleServer/Mcp.Net.Examples.SimpleServer.csproj", "--", "--stdio" ], "description": "启动 Mcp.Net 示例 MCP 服务器 (Stdio 传输)", "notes": "请根据实际项目路径调整 'command' 和 'args' 中的项目路径。" }
配置参数说明:
- 'server name': 服务器的名称,自定义,用于客户端识别。
- 'transport': 传输协议类型,这里配置为 'stdio' (标准输入输出)。如果使用SSE,则不需要此配置,客户端通过URL连接。
- 'command': 启动 MCP 服务器的命令,通常是 'dotnet run'。
- 'args': 传递给 'dotnet run' 命令的参数列表。
- '--project': 指定 MCP 服务器项目文件路径 ('Mcp.Net.Examples.SimpleServer.csproj')。需要根据实际 SimpleServer 项目的路径进行调整。
- '--': 分隔符,用于分隔 'dotnet run' 命令和应用程序的参数。
- '--stdio': 告知 SimpleServer 示例应用使用 Stdio 传输模式。
- 'description': 服务器配置的描述信息,方便用户理解配置用途。
- 'notes': 配置注意事项,提示用户根据实际情况修改路径。
基本使用方法
-
启动 MCP 服务器: 运行配置好的 MCP 服务器启动命令。对于 Stdio 传输,服务器将在控制台启动并监听标准输入输出。对于 SSE 传输,服务器将作为 Web 应用运行,监听配置的端口。
-
构建 MCP 客户端: 使用 'Mcp.Net.Client' 库构建 MCP 客户端应用,根据服务器的传输协议选择合适的客户端类型 ('StdioMcpClient' 或 'SseMcpClient')。
-
客户端连接服务器: 配置客户端连接到 MCP 服务器。对于 Stdio 传输,客户端和服务器通常通过管道或直接的标准输入输出连接。对于 SSE 传输,客户端需要提供服务器的 URL。
-
客户端调用工具: 客户端可以使用 'IMcpClient' 接口提供的方法,例如 'ListTools()' 获取可用工具列表,使用 'CallTool()' 调用具体的工具,并处理工具返回的结果。
-
示例客户端代码 (调用 'add' 工具):
using Mcp.Net.Client; using Mcp.Net.Core.Content; public class ExampleClient { public static async Task Main(string[] args) { // 创建 Stdio MCP 客户端 var client = new StdioMcpClient("ExampleClient", "1.0"); await client.Initialize(); // 调用 "add" 工具 var result = await client.CallTool("add", new { a = 10, b = 5 }); if (result.Content.FirstOrDefault() is TextContent textContent) { Console.WriteLine($"Tool Response: {textContent.Text}"); } client.Dispose(); } }
-
注意: 以上使用说明基于仓库信息和示例代码生成,实际使用时请参考 Mcp.Net 仓库的完整文档和示例。
信息
分类
开发者工具