使用说明

项目简介

EdisonTalk MCP Server 是一个基于 Model Context Protocol (MCP) 的示例服务器实现,旨在演示如何使用 MCP C# SDK 构建应用后端,为 LLM 客户端提供上下文信息和工具能力。该项目包含 ConsoleHost 和 WebHost 两种服务器运行方式,以及一个客户端示例,方便开发者理解和使用 MCP 协议。

主要功能点

  • 工具 (Tools) 注册与执行: 支持注册和执行外部功能(Tools),例如获取时间、天气信息等,允许 LLM 通过 MCP 协议调用这些工具。
  • 资源 (Resources) 管理 (示例): 虽然示例中未明确展示资源管理,但 MCP 服务器框架已具备资源管理能力,可以扩展用于托管和管理数据资源。
  • Prompt 模板 (Prompts) 支持 (框架): MCP 服务器框架支持 Prompt 模板定义和渲染,虽然示例中没有具体展示 Prompt 模板的使用,但具备扩展 Prompt 管理的能力。
  • Stdio 和 SSE 传输协议: 提供基于标准输入输出流 (Stdio) 和服务器发送事件 (SSE) 两种传输协议的服务器实现,满足不同场景下的连接需求。
  • JSON-RPC 通信: 使用 JSON-RPC 协议与 MCP 客户端进行通信,实现结构化的请求和响应。
  • 能力声明: MCP 服务器可以声明自身提供的能力,例如支持的工具列表,供客户端发现和使用。

安装步骤

  1. 克隆仓库: 将 GitHub 仓库 EdisonTalk.AI.Agents 克隆到本地。
    git clone https://github.com/EdisonTalk/EdisonTalk.AI.Agents.git
  2. 安装 .NET SDK: 确保已安装 .NET SDK 8.0
  3. 导航到服务器目录: 使用命令行工具导航到 'src/EDT.McpServer.ConsoleHost' 或 'src/EDT.McpServer.WebHost' 目录。

服务器配置

1. ConsoleHost (Stdio 传输)

ConsoleHost 使用 Stdio 传输协议,通过命令行启动。客户端需要配置 MCP 服务器的启动命令。

MCP 客户端配置 (JSON 格式):

{
  "serverName": "ConsoleMCP",
  "transportType": "Stdio",
  "transportOptions": {
    "command": "path/to/EDT.McpServer.ConsoleHost.exe"  //  请替换为 EDT.McpServer.ConsoleHost.exe 的实际路径
  }
}

参数说明:

  • 'serverName': MCP 服务器的名称,客户端用于识别连接的服务器。
  • 'transportType': 传输协议类型,这里设置为 "Stdio" 表示使用标准输入输出流。
  • 'transportOptions': 传输协议选项,对于 Stdio 传输,需要配置 'command' 指定服务器可执行文件的路径。

启动 ConsoleHost 服务器:

在 'src/EDT.McpServer.ConsoleHost' 目录下,使用 .NET CLI 构建并运行服务器:

dotnet run

2. WebHost (SSE 传输)

WebHost 使用 SSE 传输协议,通过 Web 服务方式运行。客户端需要配置 MCP 服务器的 SSE 端点 URL。

MCP 客户端配置 (JSON 格式):

{
  "serverName": "WebMCP",
  "transportType": "Sse",
  "location": "https://localhost:8443/sse" //  WebHost 服务器的 SSE 端点 URL,默认为 https://localhost:8443/sse
}

参数说明:

  • 'serverName': MCP 服务器的名称。
  • 'transportType': 传输协议类型,这里设置为 "Sse" 表示使用服务器发送事件。
  • 'location': SSE 端点的 URL,客户端通过此 URL 建立 SSE 连接。

启动 WebHost 服务器:

在 'src/EDT.McpServer.WebHost' 目录下,使用 .NET CLI 构建并运行服务器:

dotnet run

WebHost 服务器默认监听 'https://localhost:8443' 端口。

基本使用方法

  1. 启动 MCP 服务器: 根据选择的 ConsoleHost 或 WebHost 方式启动 MCP 服务器。
  2. 运行 MCP 客户端: 导航到 'src/EDT.McpClient' 目录,配置 'Program.cs' 中的客户端连接参数 (选择 Stdio 或 SSE 连接方式),并运行客户端程序。
    dotnet run
  3. 客户端与服务器交互: 客户端程序会连接到 MCP 服务器,并展示以下交互流程:
    • 列出可用工具: 客户端获取并打印服务器声明的可用工具列表。
    • 直接调用工具: 客户端直接调用 'GetCurrentTime' 工具,并显示执行结果。
    • LLM 驱动的工具调用: 客户端集成 OpenAI ChatClient,通过 MCP 服务器提供的工具,实现 LLM 驱动的工具调用示例。用户可以在命令行中与 LLM 助手进行对话,助手可以根据用户问题调用 MCP 服务器提供的工具获取信息。

注意: 运行客户端的 LLM 驱动示例需要配置 'appsettings.json' 文件,填入有效的 OpenAI API Key 和 Endpoint (或其他兼容的 LLM API 服务)。

信息

分类

AI与计算