OpenFang MCP 服务器端实现

使用说明(Markdown)

  • 项目简介
    • OpenFang 中的 MCP 服务器实现提供了一个标准化的后端服务,用于向大语言模型(LLM)客户端提供可访问的资源、可调用的工具,以及可渲染的提示模板。服务器通过 JSON-RPC 与客户端通信,负责会话管理、能力声明,并支持多种传输方式(如 Stdio、SSE、WebSocket)。
  • 主要功能点
    • 资源(Resources)托管与数据访问:服务端管理可被 LLM 客户端读取的资源集合,提供安全、可扩展的数据访问能力。
    • 工具(Tools)注册与执行:注册外部功能工具,支持 LLM 客户端调用并将结果回传给客户端。
    • 提示模板(Prompts)的定义与渲染:定义系统及上下文相关的 Prompt 模板,渲染成可用于 LLM 的系统提示与对话上下文。
    • 会话管理与能力声明:服务器端维护会话状态,声明所具备的能力与所需的权限控制。
    • 多传输协议支持:实现或集成对 Stdio、SSE、WebSocket 等传输的支持,确保灵活部署。
  • 安装步骤
      1. 获取代码并进入工作区:克隆仓库或在包含 MCP 组件的工作区中构建。
      1. 构建整个工作区:在项目根目录执行 cargo build --workspace --release,以编译包含 MCP 服务器的相关 crate。
      1. 启动服务器:运行包含 MCP 服务器实现的可执行目标(通常为 OpenFang 的内核/服务组件的一部分),按项目文档的启动方式启动 MCP 服务。
      1. 确认依赖加载:确保资源、工具、提示模板等在运行时可访问并已正确注册。
  • 服务器配置(MCP 客户端连接需的最小配置)
    • 说明:MCP 客户端需要向 MCP 服务器进行连接,配置中通过 server name、command、args 指定服务器实例及启动参数。以下 JSON 示例用于 MCP 客户端的连接描述;实际客户端实现可能放在客户端侧的启动配置中,服务器端不需要该配置,但用于帮助理解连接信息。
    • 配置示例(JSON,供 MCP 客户端读取用于连接服务器): { "server_name": "openfang-mcp-server", "command": "openfang", "args": ["start-mcp-server", "--host", "127.0.0.1", "--port", "4200"] }
    • 注释说明(非代码块文本):server_name 表示 MCP 服务器实例的标识;command 指定启动 MCP 服务的可执行文件名;args 是启动参数,包含主机与端口等连接信息。该配置属于客户端侧连接信息,服务器端实现无需客户端读取的配置模板。
  • 基本使用方法
    • 客户端启动后通过 JSON-RPC 请求向 MCP 服务器提交:
      • 资源读取请求:请求读取某个资源的元数据或实际内容。
      • 工具调用请求:请求执行某个工具,获取执行结果及日志。
      • Prompt 获取/渲染请求:请求获取或渲染系统提示模板,按上下文生成最终提示文本。
    • MCP 服务器响应将以标准的 JSON-RPC 结构返回,包括结果数据、状态码与错误信息(如有)。
    • 会话与鉴权:服务器端维护会话、能力声明,并对敏感操作应用相应的安全策略,确保上下文服务的安全可靠。

服务器信息