Self Command MCP 服务器

使用说明(Markdown 格式)

  • 项目简介

    • 该仓库实现了一个基于 MCP(Model Context Protocol)的后端服务器,旨在向 LLM 客户端提供资源访问、工具注册/执行、以及提示模板渲染等能力。核心通过一个 MCP 服务器实例暴露若干工具,通过 JSON-RPC 与客户端通信,支持多种传输形式和会话管理,适用于将 LLM 的上下文能力与本地系统的执行能力对接。
  • 主要功能点

    • MCP 服务器实现与注册的工具集合
      • wait_for_idle:等待系统在指定阈值以下若干秒后触发通知。
      • self_command:通过 tmux 将命令注入 Gemini CLI,后台执行并在稳定后通知完成。
      • send_keys、capture_pane、create_pane、close_pane、yield_turn 等 tmux 框架相关工具,提供对 tmux 窗口、面板、输入的控制与交互。
      • run_long_command、gemini_sleep、watch_log、cancel_watch 等用于后台执行、睡眠、日志监控和取消监控的工具。
    • 通过 JSON-RPC 形式让 LLM 客户端调用工具,服务器端负责会话管理、能力声明与通知推送。
    • 基于 tmux 的工具执行与通知机制,确保对 Gemini/CLI 的非阻塞操作和安全性处理。
  • 安装步骤

    • 需要具备 tmux 运行环境和 Node.js。
    • 克隆并安装依赖:
      • npm install
    • 构建命令:
      • npm run build
    • 运行前提条件:在 Gemini CLI 环境中使用 tmux 会话,遵循仓库 README 的前置条件。
  • 服务器配置(MCP 客户端需要的最小配置示例,JSON 格式)

    • server_name: self-command-server
    • command: node dist/self_command.js
    • args: [] 说明:上述配置用于 MCP 客户端创建并连接到服务器进程,命令为启动构建产物的执行命令,参数为空。请在 MCP 客户端对应的连接配置中使用此信息,客户端本身不需要运行这段代码。

    示例配置(JSON 格式,供参考) { "server_name": "self-command-server", "command": "node dist/self_command.js", "args": [] }

    说明:服务器名称应与 MCP 服务端实现一致;启动命令指向编译后的服务器入口;args 可以根据需要传入额外参数,此处为占位空数组。

  • 基本使用方法

    1. 启动与准备
      • 确保 Gemini CLI 运行于一个 tmux 会话中,且会话名符合仓库的约定(如 gemini-cli)。
      • 安装并构建完成后,启动 MCP 服务器进程(如通过 MCP 客户端命令或直接运行 node dist/self_command.js)。
    2. 调用与响应
      • 客户端通过 MCP 标准的 JSON-RPC 调用调用已注册的工具(如 self_command、yield_turn、watch_log 等)。
      • 服务器返回 JSON-RPC 响应,包含结果文本、错误信息等。
    3. 监控与通知
      • 许多工具会在后台完成后通过 tmux 通道发送通知,告知客户端任务完成、命令结果或日志变化等。
  • 注意事项

    • 运行依赖 tmux 与 Gemini CLI,且需要在合理的 tmux 会话中执行。
    • 工具以唯一请求 ID 进行跟踪(请在客户端实现中保持对应关系)。
    • 某些工具具有严格的使用约束,例如 yield_turn 必须是单一操作,不应与其他工具混用,以免破坏会话状态。

服务器信息