使用说明
项目简介
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 服务器可以声明自身提供的能力,例如支持的工具列表,供客户端发现和使用。
安装步骤
- 克隆仓库: 将 GitHub 仓库 EdisonTalk.AI.Agents 克隆到本地。
git clone https://github.com/EdisonTalk/EdisonTalk.AI.Agents.git - 安装 .NET SDK: 确保已安装 .NET SDK 8.0。
- 导航到服务器目录: 使用命令行工具导航到 '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' 端口。
基本使用方法
- 启动 MCP 服务器: 根据选择的 ConsoleHost 或 WebHost 方式启动 MCP 服务器。
- 运行 MCP 客户端: 导航到 'src/EDT.McpClient' 目录,配置 'Program.cs' 中的客户端连接参数 (选择 Stdio 或 SSE 连接方式),并运行客户端程序。
dotnet run - 客户端与服务器交互: 客户端程序会连接到 MCP 服务器,并展示以下交互流程:
- 列出可用工具: 客户端获取并打印服务器声明的可用工具列表。
- 直接调用工具: 客户端直接调用 'GetCurrentTime' 工具,并显示执行结果。
- LLM 驱动的工具调用: 客户端集成 OpenAI ChatClient,通过 MCP 服务器提供的工具,实现 LLM 驱动的工具调用示例。用户可以在命令行中与 LLM 助手进行对话,助手可以根据用户问题调用 MCP 服务器提供的工具获取信息。
注意: 运行客户端的 LLM 驱动示例需要配置 'appsettings.json' 文件,填入有效的 OpenAI API Key 和 Endpoint (或其他兼容的 LLM API 服务)。
信息
分类
AI与计算