使用说明
tmux mcp
MCP服务器,允许AI代理直接访问tmux。
诞生于对华而不实的IDE集成的沮丧,这些集成会让你头晕目眩。相反,这是一个终端优先、防分心的工作流程,人工智能在tmux窗格中与你一起工作,而不是接管你的屏幕。
灵感来自 每个项目的Primeagen .tmux 文件相同的想法,但作为YAML布局,AI代理可以一次性执行。
它做什么
20个工具。一个Python文件。这就是全部。
会话/窗格基础知识: 创建会话、拆分窗格、发送命令、读取输出。
窗口管理: 创建、列出、选择、重命名窗口。
驱动另一个TUI(例如,另一个窗格中的工作者Claude会话): 清除一个 半键入输入行,安全发送(多行)消息,检测是否 目标正忙或空闲,只读取新输出,或在中执行整个往返 一个电话。见下文。
macOS保持清醒(keep_awake): 防止Mac进入睡眠状态,这样远程/无头tmux会话才能存活下来——当你合上盖子并通过SSH驱动它时很方便。见下文。
布局引擎: 在中定义您的项目设置 .tmux-layout.yaml,呼叫 run_layout,一次完成整个工作空间:
session: myproject
root: ~/dev/myproject
windows:
- name: server
command: make dev
- name: frontend
panes:
- command: npm run dev
- direction: horizontal
command: npm run test -- --watch
- name: shell
focus: server
一个工具调用。四扇窗户。拆分窗格。都跑了。完成。
从Claude会话中驱动另一个Claude会话
一个双窗格设置—— 操作员 左边的克劳德 工人 克劳德在
右——需要可靠的跨窗格消息传递。生的 send-keys 进入TUI
脆性:多标记键字符串按字面意思键入,新文本连接到
只要打了一半,你就只能读回整个屏幕。这些工具
修复该问题:
| 工具 | 它做什么 |
|---|---|
send_keys |
发送命名密钥。 "C-a C-k" 发送Ctrl-A和Ctrl-K(每个标记都是一个单独的tmux键),而不是文本。 |
send_text |
类型 字面的 通过括号粘贴文本(多行安全——换行不会提前提交)。 |
clear_input |
清空半键入的输入行(ctrl-c 清除克劳德提示; ctrl-u / kill-line 对于贝壳)。 |
send_message |
向工作人员发送TUI消息的安全方法:清除现有输入,粘贴(多行)文本,按Enter键——全部输入 一 tmux呼叫。 |
pane_status |
是目标Claude窗格吗 busy (生成)或 idle (准备好了)? |
read_pane_delta |
仅返回输出 自上次读取后添加 对于那个窗格,而不是整个屏幕。 |
send_and_await_reply |
无缝往返:发送消息,等待工作人员忙碌→闲置,只返回回复。 |
为速度而建。 send是一个单链tmux调用,没有固定的
睡眠(约8毫秒的开销),以及 send_and_await_reply 通过以下方式检测完成情况
看着窗格,而不是等待固定的优雅窗户——所以是往返
成本大致 模型生成时间+a~0.25s稳定,仅此而已。
operator> send_and_await_reply("dev:0.1", "Run the tests and report failures")
worker (goes busy… then idle)
operator< "3 tests failed in test_auth.py: ..." # just the new reply
保持Mac唤醒(macOS)
当您希望tmux会话在您离开后继续运行时,或者关闭
盖上盖子,通过SSH驱动机器-- keep_awake 切换macOS电源管理
这样Mac就不会在你的会话下睡不着。
| 行动 | 它的作用 |
|---|---|
keep_awake("on") |
开始 caffeinate -dimsu 在名为的专用tmux会话中 keepawake盖子必须固定 打开;不需要管理员。Idempotent-不会双启动。 |
keep_awake("on", lid_closed=True) |
也运行 pmset disablesleep 1 (通过a osascript 管理员提示),这样Mac就会保持清醒状态 关闭. |
keep_awake("off") |
杀死 keepawake 会话+its caffeinate,并且始终重置 pmset disablesleep 0 (安全网——Mac永远不会陷入睡眠状态)。 |
keep_awake("status") |
报告是否 这个工具的 保持清醒是活跃的,电流 pmset SleepDisabled 价值。 |
检测是 仅限于工具自身的资源 --the keepawake 终端复用器
会议和具体 caffeinate -dimsu 它发射。一个无关的
caffeinate 在机器上运行(例如,您的终端或另一个应用程序
started)不会注册为保持清醒,并且 off 不会杀死它。
⚠️ 电池:
lid_closed=True(pmset disablesleep)使Mac保持唤醒状态 电池也会耗尽。只有插上电源后才能使用,然后运行keep_awake("off")以恢复。默认设置(仅限咖啡因)是安全选项。
安装
uv pip install .
添加到您的Claude Code MCP配置或任何兼容MCP的客户端:
{
"tmux-mcp": {
"command": "uv",
"args": ["--directory", "/path/to/tmux-mcp", "run", "tmux-mcp"]
}
}
测试
uv sync --extra dev
uv run pytest # unit tests + live tmux integration (skips if tmux absent)
uv run ruff check src/ tests/
故意打架
这是一个工作工具,不是抛光产品。它做了我需要它做的事情。
如果你也认为正确的AI编码UI是一个噪音较小的终端——欢迎PR。叉它,打破它,把它变成你的。
许可证
麻省理工学院