Jeha MCP 服务端

项目简介

Jeha 中的 MCP 服务端实现了 MCP 协议的核心能力之一:通过一个 JSON-RPC 框架,向 LLM 客户端暴露工具集供调用,并在服务器内部与 Zigbee2MQTT 和自动化引擎等组件进行协同工作,提供统一的上下文与功能入口。

主要功能点

  • MCP 服务器核心实现:接收与处理 MCP 客户端发来的 JSON-RPC 请求,返回标准化的 JSON-RPC 响应。
  • 工具(Tools)注册与调用:实现 tools/list、tools/call 等接口,向 LLM 客户端暴露可用的工具及其调用能力,并把调用结果回传。
  • 初始化与握手:实现 initialize、notifications/initialized 等债务,完成与 MCP 客户端的协商与启动协同。
  • 与 Jeha 生态对接:通过现有的状态管理、MQTT、Circadian、夜间模式、自动化等模块,确保工具调用能够触发实际的后端动作并同步状态。
  • 可扩展性:设计上可在 MCP 服务器的基础上扩展资源、Prompts 等能力,满足更丰富的 MCP 场景。

安装与运行步骤

  • 构建与运行
    • 需要先编译 Rust 项目,并确保系统搭建好 TCP 监听环境。
    • 运行后端 Daemon 时,会在 MCP 端口(默认 127.0.0.1:8420,可通过配置调整)启动 MCP 服务器。
  • 启动顺序要点
    • 服务器启动后,客户端(LLM)通过 MCP 的 JSON-RPC 接口进行 tool 列表获取、逐步调用等操作。
    • Jeha 的其它组件(MQTT、Circadian、自动化引擎等)会持续工作,MCP 服务器通过工具调用连接到这些组件并返回结果。

服务器配置(供 MCP 客户端使用的配置信息)

下面的配置用于 MCP 客户端在本地或网络中连接 Jeha 提供的 MCP 服务端。请注意:MCP 客户端需要至少知道服务器的启动命令与参数,以便在需要时自动启动服务器并建立连接。实际启动由客户端/外部调度器决定,Jeha 提供的服务器在启动后监听指定端口并提供 JSON-RPC 服务。

{ "server_name": "jeha-mcp-server", "command": "jeha", "args": [ "run", "--config", "/path/to/config.toml", "--mcp-bind", "127.0.0.1:8420" ], "description": "Jeha MCP 服务端,用于向 MCP 客户端暴露工具与能力。配置中 server_name 为标识名,command 为启动二进制,args 为启动参数(示例为 Jeha 的 run 指令及 MCP 绑定地址)。" }

说明:

  • server_name:服务器实例的名称标识,便于在多实例场景中区分。
  • command/args:启动 Jeha 并使其包含 MCP 服务的参数。此处示例对应 Jeha 的 CLI 选项,实际使用时请按环境中的实际可执行文件与参数来配置。
  • 端口与绑定:默认 MCP 端口为 8420,可在 Jeha 的配置中通过 mcp.bind 设置,客户端需指向该地址进行连接。

基本使用方法

  • 客户端对接
    • 向 Jeha 的 MCP 端口发送标准的 JSON-RPC 请求,如 initialize、tools/list、tools/call 等,以获取工具并执行。
    • 根据返回结果进行后续流程控制,将工具调用结果作为 LLM 的上下文信息来驱动对话或对外操作。
  • 安全与扩展
    • 通过适当的身份校验与传输层安全措施,保障 MCP 请求的合法性与安全性。
    • 如需扩展资源、Prompts、更多工具等,可以在 MCP 服务器端增加相应的暴露能力,保持与 Jeha 生态的向后兼容。

使用场景要点

  • LLM 通过 MCP 调用工具,控制 Zigbee2MQTT 的设备、场景与 circadian/夜间模式等行为。
  • MCP 服务器作为后端的上下文服务入口,确保 LLM 可以获取实时系统状态、执行外部动作并接收结果。

服务器信息