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 的非阻塞操作和安全性处理。
- MCP 服务器实现与注册的工具集合
-
安装步骤
- 需要具备 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 可以根据需要传入额外参数,此处为占位空数组。
-
基本使用方法
- 启动与准备
- 确保 Gemini CLI 运行于一个 tmux 会话中,且会话名符合仓库的约定(如 gemini-cli)。
- 安装并构建完成后,启动 MCP 服务器进程(如通过 MCP 客户端命令或直接运行 node dist/self_command.js)。
- 调用与响应
- 客户端通过 MCP 标准的 JSON-RPC 调用调用已注册的工具(如 self_command、yield_turn、watch_log 等)。
- 服务器返回 JSON-RPC 响应,包含结果文本、错误信息等。
- 监控与通知
- 许多工具会在后台完成后通过 tmux 通道发送通知,告知客户端任务完成、命令结果或日志变化等。
- 启动与准备
-
注意事项
- 运行依赖 tmux 与 Gemini CLI,且需要在合理的 tmux 会话中执行。
- 工具以唯一请求 ID 进行跟踪(请在客户端实现中保持对应关系)。
- 某些工具具有严格的使用约束,例如 yield_turn 必须是单一操作,不应与其他工具混用,以免破坏会话状态。