使用说明

项目简介

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 的任何平台上运行。

安装步骤

  1. 确保已安装 .NET SDK。
  2. 在您的 .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 服务器需要特定的环境变量,可以在这里配置。
  • '"models"': 此部分配置与 MCP 服务器无关,是示例客户端 ('MCPSharp.Example.OllamaChatCLI') 连接 Ollama 模型的配置。在实际 MCP 客户端配置中,您只需要关注 '"mcpServers"' 部分。

重要提示: 请根据您实际构建的 MCP 服务器项目,修改 '"args"' 中的 DLL 文件路径。确保 MCP 客户端可以正确找到并运行您的服务器程序。

基本使用方法

  1. 定义工具类: 创建一个 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}!";
        }
    }
  2. 注册工具: 在服务器启动代码中,使用 'MCPServer.Register<T>()' 注册包含工具的类。

    using MCPSharp;
    using MCPSharp.Example; // 假设 MyTools 类在 MCPSharp.Example 命名空间下
    
    MCPServer.Register<MyTools>(); // 注册 MyTools 类中的工具
    
    await MCPServer.StartAsync("MyMCPSharpServer", "1.0.0"); // 启动 MCP 服务器
  3. 启动服务器: 调用 'MCPServer.StartAsync()' 启动 MCP 服务器,并指定服务器名称和版本。

  4. 配置 MCP 客户端: 根据上述 服务器配置 示例,配置 MCP 客户端,指定正确的 'command' 和 'args' 以连接到您的 MCP 服务器。

  5. 客户端调用工具: MCP 客户端可以使用 MCP 协议与服务器通信,列出可用的工具,并调用已注册的工具。

通过以上步骤,您可以快速使用 MCPSharp 构建并运行一个简单的 MCP 服务器,并将其集成到支持 MCP 协议的 LLM 应用中。

信息

分类

开发者工具