hop MCP 服务器端实现

使用说明

  • 项目简介
    • hop 在代码中实现了一个 MCP 服务器,向 AI 客户端提供对 Hop 配置、连接信息、分组、历史记录等资源的访问,以及对连接执行相关操作的工具接口。默认提供只读工具,开启 --allow-exec 后可暴露远程执行能力。服务器通过 JSON-RPC 通过标准输入输出进行通信,方便与 Claude/Codex 等 AI 助手进行集成。
  • 主要功能点
    • 资源接口(Resources):hop://config、hop://connections、hop://connections/{id}、hop://groups,方便外部助手查询配置、所有连接、单个连接以及分组信息。
    • 工具接口(Tools,均为只读,默认暴露):list_connections、search_connections、get_connection、resolve_target、list_groups、get_history、build_ssh_command;可选开启远程执行工具 exec_command。
    • 远程执行(Exec 工具):通过 --allow-exec 开启,允许 AI 助手在匹配目标上执行 Shell 命令,输出带限(每主机输出上限、并发等)并汇总。
    • 安全与日志:服务器日志输出到标准错误,避免污染 JSON-RPC 传输;默认禁用远程执行,需显式开启。
    • 服务器启动与传输:通过 hop mcp 启动 MCP 服务器,使用 MCP 的 stdio 传输实现与客户端通信,方便在 Claude、Codex 等环境中作为后端服务接入。
  • 安装步骤
    • 安装 Go 环境并获得代码(仓库中包含完整实现,非简单示例)。
    • 构建 hop 二进制并启用 MCP 服务:
      • 使用 Makefile 的构建目标或 go 构建,生成 hop 二进制后执行 mip mcp 子命令来启动 MCP 服务器。
    • 启动 MCP 服务器
      • 在命令行执行 hop mcp,默认以只读工具对外暴露,使用 --allow-exec 启用远程执行工具。
    • 配置客户端接入(示例,供 MCP 客户端使用)
      • MCP 客户端需要在配置中指向 MCP 服务器的启动命令及参数,以建立 JSON-RPC 通道。
  • 服务器配置(给 MCP 客户端的连接信息 JSON)
    • MCP 客户端通过如下配置连接 Hop 的 MCP 服务器(示例,路径需要替换为实际执行 hop 的可执行文件路径): { "mcpServers": { "hop": { "command": "path/to/hop", "args": ["mcp"] } } }
    • 说明
      • mcpServers 是 MCP 客户端配置的字段名,hop 是服务器的名称标识。
      • command 指向启动 Hop 的可执行文件路径,args 指定应传给 hop 的参数,这里为 mcp,表示启动 MCP 服务。
      • 实际使用中也可以通过 hop mcp --print-client-config 生成客户端可用的具体配置(包含实际的可执行路径和参数),直接拷贝到客户端配置中。
  • 基本使用方法
    • 启动服务器
      • 运行 hop mcp 启动 MCP 服务(默认为只读工具,若需要远程执行则加上 --allow-exec)。
    • 连接与操作
      • 将 AI 助手配置为连接 Hop 的 MCP 服务器,启动后即可通过工具查询资源、搜索连接、获取连接详情、解析目标、列出分组等。
    • 常见客户端用法
      • 使用读入的资源和工具,AI 助手可以执行诸如“列出 prod 项目的所有连接”、“查询某一连接的详细信息”、“解析目标模式的匹配结果”等操作。

服务器信息