项目简介

这是一个使用 C# 语言实现的 Model Context Protocol (MCP) 服务器和客户端的演示项目。它展示了如何创建一个简单的 MCP 服务器来提供特定功能(如从 YouTube 视频提取字幕),以及如何构建一个 MCP 客户端来连接到该服务器并利用其提供的工具与大型语言模型(LLM)进行交互。

主要功能点

  • MCP 服务器实现: 使用 ASP.NET Minimal API 构建,遵循 MCP 规范,能够向兼容的 MCP 客户端提供服务。
  • 工具注册与提供: 服务器注册了一个名为 "YoutubeSubtitlesExtractor" 的工具,该工具能够接收 YouTube 链接作为输入,并返回视频的字幕文本。
  • 传输协议支持: 服务器通过 HTTP/SSE 协议与客户端通信。
  • MCP 客户端示例: 项目包含一个简单的命令行客户端,能够读取 MCP 配置,连接到列出的 MCP 服务器,发现其提供的工具,并将这些工具与 LLM(示例中使用 OpenAI)结合使用,以处理包含工具调用需求的 Prompt。

安装步骤

  1. 确保您的系统已安装 .NET SDK(建议使用最新版本)。
  2. 从 GitHub 克隆本项目仓库:
    git clone https://github.com/EgorBo/McpClientServerDemo.git
    cd McpClientServerDemo
  3. 构建项目:
    dotnet build

服务器配置 (针对 MCP 客户端)

MCP 服务器本身在启动时不需要特定的 'mcp.json' 配置文件。这里的配置是针对 MCP 客户端 如何发现和连接到此服务器的。客户端需要一个 'mcp.json' 文件来指明可用的 MCP 服务器及其连接信息。

根据此仓库的服务器实现,您可以为客户端创建一个 'mcp.json' 文件,内容示例如下:

{
  "mcp": {
    "servers": {
      "youtube-subtitles-server": { // 服务器的一个客户端友好名称
        "id": "unique-server-id", // 服务器的唯一标识符 (可选)
        "description": "Provides YouTube subtitle extraction tool.", // 服务器功能描述 (可选)
        "type": "sse", // 指定连接协议为 Server-Sent Events (SSE)
        "url": "http://localhost:5000/mcp" // 服务器的访问地址。通常在本地运行,默认端口可能是 5000 或 5001 (HTTPS)。根据实际启动时控制台输出调整。"/mcp" 是服务器暴露 MCP 功能的默认路径。
      }
      // 如果有其他 MCP 服务器,也可以在此处添加配置
      // "other-tool-server": { ... }
    }
  }
}

配置项说明:

  • 'youtube-subtitles-server': 您为这个服务器实例在客户端中指定的名称,客户端代码会使用这个名称来引用。
  • 'id': 服务器的唯一标识符,有助于区分不同的服务器实例。
  • 'description': 关于此服务器提供的功能的人类可读描述。
  • 'type': 客户端应使用的传输协议类型。此服务器示例使用的是 SSE。
  • 'url': MCP 服务器的网络地址。请确保这里的 IP 地址、端口和路径与您实际启动 MCP 服务器时监听的地址一致。

基本使用方法

  1. 启动 MCP 服务器:

    • 打开终端,进入项目根目录下的 'Servers' 文件夹。
    • 运行命令:'dotnet run'
    • 服务器将会启动,并在控制台输出监听的地址(例如 'http://localhost:5000')。
  2. 配置 MCP 客户端:

    • 确保您在项目根目录下的 'Clients' 文件夹中创建了上面提到的 'mcp.json' 文件,并且其中的 'url' 地址与服务器实际监听的地址相符。
    • 设置您的 OpenAI API Key 环境变量。客户端需要此密钥来与 OpenAI 模型交互:
      • 在 Windows PowerShell 中:'$env:OPENAI_API_KEY="您的API密钥"'
      • 在 Linux/macOS 终端中:'export OPENAI_API_KEY="您的API密钥"'
  3. 启动 MCP 客户端:

    • 打开一个新的终端,进入项目根目录下的 'Clients' 文件夹。
    • 运行命令:'dotnet run'
    • 客户端将读取 'mcp.json' 配置,连接到 MCP 服务器,发现其提供的工具(如字幕提取),然后使用 OpenAI 模型和这些工具来处理一个预设的 Prompt(包含 YouTube 链接和股票查询)。
    • 您将在终端看到客户端调用工具并获取结果的过程和最终LLM生成的回答。

信息

分类

开发者工具