break_pane
Breaks a pane out into a new workspace
Run a command in a cmux tab and read its scrollback back, split and rearrange panes and workspaces by id, and post progress bars, status entries and log lines into the sidebar while a job runs.
LABSCO SUMMARY
Running a command and reading the output is the part every terminal server has; this one also owns the furniture around it. set_progress, set_status and log put the state of a job where a person glancing at the window will see it, and new_workspace, new_split and rename_tab let a task build the layout it needs and close it afterwards. The reach ends at cmux — nothing here drives another terminal emulator, and the built-in browser arrives as a single tool taking a subcommand string rather than as typed tools per action.
A control surface for the cmux terminal — its windows, workspaces, panes and surfaces, the sidebar beside them, and cmux's built-in browser — spread across 72 tools.
Cmux itself, running and reachable — ping answers on its socket and version reports the build. No account and no environment variables; every tool addresses a window, workspace, pane or surface that already exists on the machine.
One command — npx -y cmux-mcp
USE CASES
Send the command into a surface, block on the signal rather than polling the tab, and let the sidebar and a notification carry the state while you work elsewhere.
Open a workspace already running the command, split it into the panes the task wants, name the tabs so they are recognisable, and close the whole thing when the task ends.
Capture what the pane holds, or pipe it into a command that trims it, then park the result in a named buffer and paste it where it is needed.
Write levelled log lines and keyed status entries into the workspace sidebar as the work happens, and read them back to see what the last session was doing.
Drive cmux's built-in browser from the same session that ran the deploy, and open the notes or report beside it in a formatted panel.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
break_paneBreaks a pane out into a new workspace
browserControls the cmux built-in browser. Subcommands: open, open-split, navigate/goto, back, forward, reload, url, snapshot, eval, wait, click, dblclick, hover, focus, check, uncheck, scroll-into-view, type, fill, press, keydown, keyup, select, scroll, screenshot, get, is, find, frame, dialog, download, cookies, storage, tab, console, errors, highlight, state, addinitscript, addscript, addstyle, identify
capture_paneCaptures pane content (tmux-compatible)
clear_historyClears terminal scrollback history
clear_logClears log entries
clear_notificationsClears all notifications
clear_progressClears the progress bar
clear_statusClears a status entry
close_surfaceCloses a specific surface (tab)
close_windowCloses a specific cmux window
close_workspaceCloses a specific workspace
current_windowShows the current window info
current_workspaceShows the current workspace info
display_messageDisplays a message overlay
drag_surface_to_splitDrags a surface to create a split in a direction
find_windowSearches for a window by content or title
focus_paneFocuses a specific pane
focus_panelFocuses a specific panel
focus_surfaceFocuses (activates) a specific surface (tab)
focus_windowFocuses a specific cmux window
identifyShows identity info for the current surface/workspace
join_paneJoins a pane into another pane
last_paneSwitches to the last active pane
last_windowSwitches to the last active window
list_buffersLists all buffers
list_logLists log entries
list_notificationsLists all notifications
list_panelsLists all panels in a workspace
list_panesLists all panes in the current workspace
list_statusLists all status entries
list_surfacesLists all surfaces (tabs) in the current workspace with their IDs and titles
list_windowsLists all cmux windows
list_workspacesLists all workspaces in the current window
logWrites a log entry to the workspace sidebar
markdown_openOpens a markdown file in a formatted viewer panel with live reload
move_surfaceMoves a surface to a different pane, window, or position
move_workspace_to_windowMoves a workspace to a different window
new_paneCreates a new pane (split) in the workspace
new_splitSplits the current surface into a new pane
new_surfaceCreates a new terminal tab in the current pane
new_windowCreates a new cmux window
new_workspaceCreates a new workspace (shown in the left sidebar)
next_windowSwitches to the next window
notifySends a notification
paste_bufferPastes a buffer into the terminal
pingPings the cmux socket
pipe_panePipes pane output to a shell command
previous_windowSwitches to the previous window
read_terminal_outputReads the output from the active cmux terminal
refresh_surfacesRefreshes all surfaces
rename_tabRenames a tab (surface)
rename_windowRenames the current window
rename_workspaceRenames a workspace
reorder_surfaceReorders a surface within its pane
reorder_workspaceReorders a workspace within the sidebar
resize_paneResizes a pane in a given direction
respawn_paneRespawns a pane (restarts the shell)
select_workspaceSelects (switches to) a specific workspace
send_control_characterSends a control character to the active cmux terminal (e.g., Control-C, or special sequences like ']' for telnet escape)
set_app_focusSets the app focus state
set_bufferSets a named buffer with text content
set_hookSets or lists event hooks
set_progressSets a progress bar in the sidebar (0.0 to 1.0)
set_statusSets a status entry in the sidebar
sidebar_stateShows the current sidebar state
surface_healthChecks health of surfaces in a workspace
swap_paneSwaps two panes
treeShows the full tree structure of windows/workspaces/panes/surfaces
trigger_flashTriggers a visual flash on the terminal
versionShows cmux version
wait_forWaits for a named signal
write_to_terminalWrites text to the active cmux terminal - often used to run a command in the terminal
BEFORE YOU INSTALL
72 tools when we connected.
CONTEXT COST
Rated by the size of the 72 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y cmux-mcp/plugin marketplace add daegweon/cmux-mcp
/plugin install cmux-mcp@cmux-tools{
"mcpServers": {
"cmux-mcp": {
"command": "npx",
"args": [
"-y",
"cmux-mcp"
]
}
}
}Clone and build the server
Needs macOS and Node.js 18 or newer.
git clone https://github.com/daegweon/cmux-mcp.git
cd cmux-mcp
npm install && npm run buildAdd this to ~/Library/Application Support/Claude/claude_desktop_config.json
<YOUR_PATH_TO_CMUX_MCP> is the folder you cloned into. Restart Claude Desktop.
{
"mcpServers": {
"cmux-mcp": {
"command": "node",
"args": [
"<YOUR_PATH_TO_CMUX_MCP>/build/index.js"
]
}
}
}Clone and build the server
Needs macOS and Node.js 18 or newer.
git clone https://github.com/daegweon/cmux-mcp.git
cd cmux-mcp
npm install && npm run buildPoint your MCP client at the built server
cmux-mcp talks over stdio. <YOUR_PATH_TO_CMUX_MCP> is the folder you cloned into.
{
"mcpServers": {
"cmux-mcp": {
"command": "node",
"args": [
"<YOUR_PATH_TO_CMUX_MCP>/build/index.js"
]
}
}
}