使用说明
项目简介
MCPSharp 是一个用于构建 Model Context Protocol (MCP) 服务器和客户端的 .NET 库。它旨在帮助开发者轻松创建符合 MCP 协议的应用后端,以便为 AI 模型(如 Anthropic 的 Claude)提供工具和资源。通过 MCPSharp,您可以将现有的 .NET 代码快速暴露为 MCP 端点,无需深入了解底层的协议细节。
主要功能点
- 工具 (Tools) 注册和调用: 使用 '[McpTool]' 特性轻松将 .NET 方法标记为 MCP 工具,供 LLM 客户端调用。支持自动参数验证和类型转换。
- 资源 (Resources) 管理: 使用 '[McpResource]' 特性声明和暴露资源,支持定义资源 URI 和 MIME 类型,方便 LLM 客户端访问数据。
- 动态工具注册: 允许在运行时动态注册工具,并提供自定义的实现逻辑。
- Semantic Kernel 集成: 支持通过 Semantic Kernel 的 '[KernelFunction]' 特性注册工具,方便集成现有的 Semantic Kernel Skills。
- Microsoft.Extensions.AI 集成: 客户端可以轻松获取工具列表并将其用于 'IChatClient',实现与 Microsoft AI 平台的无缝集成。
- JSON-RPC 通信: 内置 JSON-RPC 支持,自动处理请求和响应的序列化和反序列化。
- XML 文档支持: 自动从 XML 注释中提取工具和资源的描述信息,方便生成文档。
- 跨平台: 基于 .NET Standard 2.0,可在支持 .NET Standard 的任何平台上运行。
安装步骤
- 确保已安装 .NET SDK。
- 在您的 .NET 项目中,使用 NuGet 包管理器或 .NET CLI 添加 MCPSharp 包:
dotnet add package MCPSharp
服务器配置
MCP 服务器通常以独立的进程运行,并通过标准输入输出 (stdio) 与 MCP 客户端通信。客户端需要配置服务器的启动命令和参数。
以下是一个基于 'MCPSharp.Example/Program.cs' 生成的 JSON 格式 服务器配置示例,用于配置 MCP 客户端连接到使用 MCPSharp 构建的服务器:
{ "mcpServers": { "TestServer": { // 服务器名称,客户端可以自定义 "command": "dotnet", // 启动服务器的命令,这里假设使用 dotnet 运行 "args": [ // 命令参数 "MCPSharp.Example.dll" // 指定要运行的 MCP 服务器 DLL 文件,根据实际情况修改为您的服务器 DLL 文件路径 ], "env": {} // 环境变量,如果服务器需要特定的环境变量,可以在这里配置,本例为空 } }, "models": { "ollama": { // 模型配置,与 MCP 服务器配置无关,这里仅为示例客户端的配置 "endpoint": "http://localhost:11434/api/chat", "modelId": "llama2", "systemPrompt": "You are a helpful AI assistant." } } }
配置说明:
-
'"mcpServers"': 定义 MCP 服务器的配置。可以配置多个服务器。
- '"TestServer"': 服务器的名称,可以自定义。客户端使用此名称引用服务器。
- '"command"': 启动 MCP 服务器的可执行命令。对于 .NET 应用,通常是 'dotnet'。
- '"args"': 传递给启动命令的参数列表。对于 .NET 应用,通常是服务器 DLL 文件的路径 ('MCPSharp.Example.dll')。请务必根据您实际生成的服务器 DLL 文件路径进行修改。
- '"env"': 可选的环境变量字典。如果您的 MCP 服务器需要特定的环境变量,可以在这里配置。
- '"TestServer"': 服务器的名称,可以自定义。客户端使用此名称引用服务器。
-
'"models"': 此部分配置与 MCP 服务器无关,是示例客户端 ('MCPSharp.Example.OllamaChatCLI') 连接 Ollama 模型的配置。在实际 MCP 客户端配置中,您只需要关注 '"mcpServers"' 部分。
重要提示: 请根据您实际构建的 MCP 服务器项目,修改 '"args"' 中的 DLL 文件路径。确保 MCP 客户端可以正确找到并运行您的服务器程序。
基本使用方法
-
定义工具类: 创建一个 C# 类,并使用 '[McpTool]' 特性标记需要暴露为 MCP 工具的方法。使用 '[McpParameter]' 特性描述工具的参数。
using MCPSharp; public class MyTools { /// <summary> /// 问候用户 /// </summary> /// <param name="name">用户的名字</param> /// <returns>问候语</returns> [McpTool("greet", "向用户问好")] public static string GreetUser([McpParameter(true, "用户的名字")] string name) { return $"Hello, {name}!"; } } -
注册工具: 在服务器启动代码中,使用 'MCPServer.Register<T>()' 注册包含工具的类。
using MCPSharp; using MCPSharp.Example; // 假设 MyTools 类在 MCPSharp.Example 命名空间下 MCPServer.Register<MyTools>(); // 注册 MyTools 类中的工具 await MCPServer.StartAsync("MyMCPSharpServer", "1.0.0"); // 启动 MCP 服务器 -
启动服务器: 调用 'MCPServer.StartAsync()' 启动 MCP 服务器,并指定服务器名称和版本。
-
配置 MCP 客户端: 根据上述 服务器配置 示例,配置 MCP 客户端,指定正确的 'command' 和 'args' 以连接到您的 MCP 服务器。
-
客户端调用工具: MCP 客户端可以使用 MCP 协议与服务器通信,列出可用的工具,并调用已注册的工具。
通过以上步骤,您可以快速使用 MCPSharp 构建并运行一个简单的 MCP 服务器,并将其集成到支持 MCP 协议的 LLM 应用中。
信息
分类
开发者工具