duh MCP 服务器实现
使用说明(Markdown 格式)
-
项目简介
- duh 提供一个面向多模型共识的后端生态,其中包括一个专门的 MCP 服务器实现,用以向 LLM 客户端提供资源、工具和 Prompt 模板等上下文信息,并通过标准化的 JSON-RPC 协议进行请求与响应。MCP 服务器负责会话管理、能力声明,以及对外暴露的读取资源、执行工具和获取 Prompt 的能力。
-
主要功能点
- 资源(Resources)托管与访问:后端提供对可用资源的统一管理和读取能力。
- 工具(Tools)注册与执行:LLM 客户端可以通过 MCP 调用外部功能,服务器端负责路由和执行。
- Prompt 模板定义与渲染:支持按需求渲染可定制的 Prompt 模板,方便不同的交互模式。
- JSON-RPC 通信:与客户端以 JSON-RPC 风格进行请求/响应交互,统一格式与错误处理。
- 会话与能力声明:支持会话管理、能力声明,确保客户端能了解服务器提供的能力。
- 多传输协议支持:包括标准输入输出、Server-Sent Events、WebSocket 等,提升集成灵活性与实时性。
- 安全性与可扩展性:提供鉴权、会话隔离、以及便于扩展的新工具与资源类型。
-
安装步骤
- 克隆代码库并进入项目目录。
- 建议在虚拟环境中安装依赖(若项目提供 requirements 文件,请按照文件安装)。
- 运行 MCP 服务器(该仓库中存在名为 MCP 的服务器实现及对应 CLI 命令,通常通过项目的入口命令启动)。
- 根据需要配置传输协议与监听端口,确保客户端能够通过 JSON-RPC 与服务器通信。
-
服务器配置(MCP 客户端配置服务器端使用信息)
- 配置描述:MCP 客户端需要一份服务器配置,以便知道如何连接到 MCP 服务器、启动命令以及相关参数。以下为示例描述信息(JSON 格式,不作为代码块展示,便于直接阅读与理解):
- 示例 JSON 配置要点
- server_name: duh-mcp
- command: 启动 MCP 服务器的命令数组,例如 ["python", "-m", "duh.mcp.server"]
- args: 启动参数,例如 ["--host", "0.0.0.0", "--port", "9000"]
- transport: 建议使用的传输协议,如 "websocket"(也支持 stdio、SSE 等,按实际部署选择)
- endpoints/能力说明: 服务器暴露的能力列表(Resources、Tools、Prompts 的访问接口等)
- 注释说明
- server_name 用于标识 MCP 服务器实例,便于客户端进行管理与监控。
- command 与 args 共同决定服务器的启动方式,客户端通过这些信息在需要时直接启动或连接服务器。
- transport 说明了客户端与 MCP 服务器之间的通信通道,WebSocket 常用于实时交互,StdIO 适用于本地进程间通信。
- 服务器应实现对资源、工具、Prompts 的统一接口,并返回符合 MCP 定义的 JSON-RPC 响应。
- 具体字段名称和格式请按实际实现使用的字段为准,本文给出可读性强的配置示意。
-
基本使用方法
- 客户端需先了解服务器的启动命令和连接参数(如端口、协议、鉴权方式等),再建立连接。
- 请求类型举例(具体方法名与参数以实现为准):
- 读取资源(Resources)信息
- 调用工具(Tools)并处理返回结果
- 获取并渲染 Prompt 模板
- 在连接建立后,客户端以 JSON-RPC 的请求格式向 MCP 服务器提交请求,服务器返回 JSON-RPC 响应或通知信息。
- 生产环境中可将 MCP 服务器与 REST、WebSocket、或本地进程之间的通信桥接,以实现与前端 UI 或 LLM 客户端的对接。
-
基本使用案例
- 启动后端 MCP 服务,监听端口 9000,传输协议为 WebSocket。
- 客户端通过 JSON-RPC 提交请求,获取资源、执行工具、加载并渲染 Prompt 模板,形成后续对话上下文。
-
备注
- 该实现结合了多模型共识引擎的背景,提供面向 LLM 客户端的可扩展上下文服务能力,便于在各类对话场景中高效地进行资源访问、工具调用和提示渲染。