导线mcp
一个轻量级的MCP服务器,用于从任何终端编排Claude Code工作人员。
不需要Chrome。 将TabzChrome的编排能力带到iTerm、Kitty、Alacritty、Windows终端、WezTerm或您喜欢的任何终端。
功能(35工具)
核心工作器工具
| 工具 | 说明 |
|---|
send_keys | 将密钥发送到tmux会话,可选择使用Enter键提交 |
spawn_worker | 创建工作树+tmux会话+注入beads上下文 |
speak | 通过边缘TTS(带音频互斥)发布TTS公告 |
kill_worker | 清理工人会议和可选的工作台 |
list_workers | 列出活动的工作进程 |
get_worker_status | 从/tmp/Claude代码状态读取Claude状态 |
capture_worker_output | 获取最近的终端输出 |
get_context_percent | 从Claude Code状态行解析上下文% |
get_workers_with_capacity | 查找具有剩余上下文容量的工作人员 |
会话和窗口管理
| 工具 | 说明 |
|---|
create_session | 创建新的tmux会话(用于非tmux环境,如Claude Desktop) |
create_window | 在现有会话中创建新窗口 |
窗格管理
| 工具 | 说明 |
|---|
split_pane | 水平或垂直拆分当前窗格 |
create_grid | 创建网格布局(2x2、3x1、4x1等) |
list_panes | 列出所有窗格及其状态 |
focus_pane | 将焦点切换到特定窗格 |
kill_pane | 删除特定窗格 |
spawn_worker_in_pane | 在现有窗格中生成worker |
实时监控
| 工具 | 说明 |
|---|
watch_pane | 通过管道窗格将流窗格输出到文件 |
stop_watch | 停止流式窗格输出 |
read_watch | 从监视文件读取最近的输出 |
同步
| 工具 | 说明 |
|---|
wait_for_signal | 阻塞,直到通道接收到信号(超时) |
send_signal | 在频道上发送信号以解锁服务员 |
弹出通知
| 工具 | 说明 |
|---|
show_popup | 在tmux中显示浮动弹出窗口 |
show_status_popup | 显示员工状态摘要弹出窗口 |
钩子(事件驱动)
| 工具 | 说明 |
|---|
set_pane_hook | 设置在窗格上运行的命令事件(死亡、退出等) |
clear_hook | 移除之前设置的钩子 |
list_hooks | 列出活动挂钩 |
布局和大小调整
| 工具 | 说明 |
|---|
resize_pane | 调整窗格大小(绝对或相对) |
zoom_pane | 切换窗格的全屏缩放 |
apply_layout | 应用布局(平铺、均匀水平等) |
rebalance_panes | 将窗格重新平衡到相等大小 |
配置
| 工具 | 说明 |
|---|
get_config | 获取当前导体配置(只读) |
面向用户的设置(语音、配置文件、布局/时间)在指挥家tui设置面板中进行管理。规范配置: ~/.config/conductor/config.json.
关键差异
tmux MCP execute-command 立即发送键,这会导致Claude/Codex提示创建换行符而不是提交。 send_keys 使用可选延迟修复此问题:
# What tmux MCP does (broken for Claude):
tmux send-keys -t session "prompt" Enter # Too fast!
# What conductor-mcp does (works):
send_keys(session, "prompt") # submit=True by default
# Internally:
# tmux send-keys -t session "prompt"
# sleep 0.8 # Wait for input detection
# tmux send-keys -t session Enter
# Just type without submitting:
send_keys(session, "partial text", submit=False)
安装
# Clone the repo
git clone https://github.com/GGPrompts/conductor-mcp.git
cd conductor-mcp
# Install dependencies
pip install mcp edge-tts
# Add to Claude Code
claude mcp add conductor -- python /path/to/conductor-mcp/server.py
需求
- Python 3.10+
- tmux 3.0+
- 边缘tts(
pip install edge-tts) - mpv、ffplay或vlc(用于音频播放)
- beads CLI(可选,用于spawn_worker上下文注入)
- git(用于工作台管理)
音频挂钩设置(可选)
对于Claude使用工具或完成任务时的自动TTS公告:
1.复制钩子脚本
mkdir -p ~/.claude/hooks/scripts
cp reference/state-tracker.sh ~/.claude/hooks/scripts/
cp reference/audio-announcer.sh ~/.claude/hooks/scripts/
chmod +x ~/.claude/hooks/scripts/*.sh
2.添加到Claude设置(~/.Claude/settings.json)
{
"env": {
"CLAUDE_AUDIO": "1",
"CLAUDE_VOICE": "en-US-AndrewNeural",
"CLAUDE_RATE": "+20%"
},
"hooks": {
"SessionStart": [{"matcher": "", "hooks": [{"type": "command", "command": "~/.claude/hooks/scripts/state-tracker.sh session-start", "timeout": 2}]}],
"PreToolUse": [{"matcher": "", "hooks": [{"type": "command", "command": "~/.claude/hooks/scripts/state-tracker.sh pre-tool", "timeout": 1}]}],
"PostToolUse": [{"matcher": "", "hooks": [{"type": "command", "command": "~/.claude/hooks/scripts/state-tracker.sh post-tool", "timeout": 1}]}],
"Stop": [{"matcher": "", "hooks": [{"type": "command", "command": "~/.claude/hooks/scripts/state-tracker.sh stop", "timeout": 1}]}]
}
}
3.可用语音
列车长自动为工作人员分配独特的声音。可用语音:
- 美国:AriaNeural、GuyNeural、JennyNeural、DavisNeural、AmberNeural、AndrewNeural、EmmaNeural、BrianNeural
- 英国:SoniaNeural、RyanNeural
- AU:娜塔莎神经,威廉神经
音频功能
- 互斥锁:直接
speak() 通话优先于挂机通知 - 防抖:快速发布的工具受到限制
- 缓存:生成的音频缓存在
/tmp/claude-audio-cache/
使用示例
基本:将钥匙发送给工人
# Send and submit (default behavior)
send_keys(session="worker-1", keys="Fix the auth bug")
# Send without submitting
send_keys(session="worker-1", keys="partial input", submit=False)
# Announce status
speak(text="Task assigned to worker 1")
工人视觉网格
# Create a 2x2 grid (4 panes)
grid = create_grid(layout="2x2", start_dir="/path/to/project")
# Spawn workers in each pane
for pane_id, issue_id in zip(grid["panes"], issues):
spawn_worker_in_pane(pane_id=pane_id, issue_id=issue_id, project_dir="/path/to/project")
speak(text=f"Spawned {issue_id}")
来自克劳德桌面(非tmux)
# Bootstrap tmux environment first
session = create_session(name="workers", start_dir="/project")
# Then create grid and spawn workers
create_grid(layout="2x2", session="workers")
实时监控
# Watch a pane's output
watch_pane(pane_id="%5")
# Read recent output
output = read_watch(pane_id="%5", lines=20)
# Stop watching
stop_watch(pane_id="%5")
工人与信号的协调
# Conductor waits for worker to finish
result = await wait_for_signal(channel="done-BD-abc", timeout_s=600)
# Worker signals completion
send_signal(channel="done-BD-abc")
参考
中的遗留实现 reference/:
audio-announcer.sh -带缓存、互斥、去抖动的TTSstate-tracker.sh -Claude钩子用于状态跟踪tmux-status-claude.sh -Tmux状态栏集成
许可证
麻省理工学院