mcp-tmux
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_TMUX_CONFIG | No | Override path to the TOML configuration file. Defaults to ~/.config/mcp-tmux/config.toml |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| tmux_commandA | Run an arbitrary tmux command and return its raw result. This is the universal escape hatch — it runs Returns {"stdout", "stderr", "exit_code"}. Non-zero exit codes are returned, not raised, so you can inspect failures.
|
| tmux_queryA | Evaluate a tmux format string (e.g. "#{pane_current_path}"). Uses |
| tmux_versionB | Report the target's tmux version and whether it is supported (1.8+). |
| tmux_list_targetsA | List configured targets: 'local' plus any named profiles from config. |
| tmux_kill_serverA | Kill the tmux server on the target (destructive: ends ALL sessions). |
| tmux_list_sessionsB | List all sessions on the target with id, name, window count, etc. |
| tmux_has_sessionB | Check whether a session exists. Returns {"exists": bool}. |
| tmux_new_sessionA | Create a new session (detached by default). Optional |
| tmux_rename_sessionC | Rename a session. |
| tmux_kill_sessionB | Kill a session (destructive). Ends all its windows and panes. |
| tmux_list_windowsA | List windows. With |
| tmux_new_windowB | Create a window. Set select=False to create it in the background (-d). Returns the new window's {"id", "index", "name"}. |
| tmux_select_windowC | Make a window the active one (e.g. window="mysess:2"). |
| tmux_last_windowA | Switch to the previously selected window (last-window). With |
| tmux_next_layoutA | Rotate a window to its next preset layout (next-layout). With |
| tmux_rename_windowC | Rename a window. |
| tmux_move_windowC | Move/renumber a window from |
| tmux_swap_windowD | Swap two windows. |
| tmux_respawn_windowA | Restart the command in a window (respawn-window), reusing it in place. Like Returns {"respawned": True, "window": window}. |
| tmux_kill_windowC | Kill a window (destructive). |
| tmux_list_panesA | List panes. Scope to a |
| tmux_split_windowB | Split a pane. By default splits left/right; vertical=True splits
top/bottom. Returns the new pane's {"id", "index"}. |
| tmux_select_paneC | Make a pane the active one. |
| tmux_last_paneA | Switch to the previously active pane (last-pane). With |
| tmux_set_pane_titleA | Set a pane's title (select-pane -T, tmux 2.6+). The title is the Returns {"pane": target_pane, "title": title} (or {"notes": [...]}). |
| tmux_resize_paneC | Resize a pane by a number of cells in one or more directions. |
| tmux_swap_paneC | Swap two panes. |
| tmux_kill_paneC | Kill a pane (destructive). |
| tmux_clear_historyA | Wipe a pane's scrollback history (clear-history -t pane). Use this before a Returns {"cleared": True, "pane": target_pane}. |
| tmux_respawn_paneA | Restart the command in a pane (respawn-pane), reusing it in place. Useful for retrying a crashed command or supervising a service without
recreating the window layout. By default tmux only respawns a pane whose
command has already exited; set kill=True (-k) to force-restart one that
is still running. Returns {"respawned": True, "pane": target_pane}. |
| tmux_select_layoutC | Apply a named layout (even-horizontal, even-vertical, main-horizontal, main-vertical, tiled) or a layout string to a window. |
| tmux_send_keysA | Send input to a pane. Two modes (provide exactly one of
|
| tmux_capture_paneA | Capture (read) the visible contents and/or scrollback of a pane. This is the primary way to observe output. Returns {"content": }. |
| tmux_set_optionB | Set a tmux option.
|
| tmux_show_optionsC | Show tmux options for a scope. Returns {"options": {name: value}}. |
| tmux_list_buffersB | List paste buffers with their names and sizes. |
| tmux_set_bufferC | Set a paste buffer's contents (optionally named with -b). |
| tmux_paste_bufferC | Paste a buffer into a pane. delete=True removes the buffer after (-d). |
| tmux_delete_bufferB | Delete a named paste buffer. |
| tmux_save_bufferA | Write a paste buffer to a file (save-buffer).
Returns {"saved": path, "name": name}. |
| tmux_load_bufferA | Load a file's contents into a paste buffer (load-buffer).
Returns {"loaded": path, "name": name}. |
| tmux_set_environmentA | Set or unset an environment variable for a session (or globally). Set To clear a variable, pass Returns {"set"/"removed"/"unset": name, ...}. |
| tmux_show_environmentA | Show a session's environment (or the global one with With Returns {"environment": {name: value_or_None}, "removed": [names...]}. |
| tmux_wait_for_textA | Wait until
Caveat: the pane also shows the command you typed, so a pattern can match
your own echoed input line rather than the command's output. To wait for
a command to finish and get just its output, prefer |
| tmux_wait_for_idleA | Wait until a pane's visible content stops changing. Returns once the capture is unchanged for |
| tmux_runA | Run a shell command in a pane and return just its output + exit code. Types Intended for NON-interactive commands at a shell prompt. Returns {"completed", "exit_code", "output", "elapsed"}; on timeout, completed is False and output holds the raw capture so far. |
| tmux_list_clientsA | List clients attached to the server. With |
| tmux_server_infoC | Report basic server facts: pid, socket path, and tmux version. Returns {"pid", "socket_path", "version", "supported"}. |
| tmux_display_messageA | Show a message on a client's status line. Unlike |
| tmux_link_windowA | Link a window into another location (it then appears in both).
|
| tmux_unlink_windowA | Unlink a window (remove one of its links). Fails if the window is only linked once, unless it is not the last —
tmux refuses to leave a window with no links. Use |
| tmux_break_paneB | Break a pane out into a new window of its own.
|
| tmux_join_paneA | Join pane By default splits left/right; vertical=True stacks top/bottom.
|
| tmux_find_windowA | Find windows whose name, title, or current command matches
(tmux's own |
| tmux_pipe_paneB | Pipe a pane's output to a shell command (great for logging). With |
| tmux_set_hookA | Set (or unset) a hook that runs a tmux command on an event.
|
| tmux_show_hooksA | Show the hooks set on the server/session. Returns {"hooks": {name: command}}. |
| tmux_run_shellA | Run a shell command from tmux via background=True (-b) runs it without waiting. Note: tmux surfaces the
command's stdout in a message/copy buffer rather than returning it here,
so |
| tmux_if_shellA | Run a tmux command conditionally with Runs |
| tmux_list_keysA | List key bindings, optionally restricted to one key |
| tmux_bind_keyB | Bind
|
| tmux_unbind_keyA | Unbind a key. Provide |
| tmux_copy_modeA | Enter (or exit) copy mode in a pane. page_up=True (-u) scrolls up one page on entry. exit=True leaves copy
mode instead (sends the copy-mode |
| tmux_copy_scrollB | Scroll within copy mode.
|
| tmux_copy_searchA | Search the scrollback in copy mode for backward=True searches towards the top of history (the usual direction for finding recent output); set backward=False to search forward. Enters copy mode first if needed. Requires tmux 2.4+. Returns {"searched": ...}. |
| tmux_stream_startA | Open (or reuse) a control-mode stream attached to Starts a persistent Pass |
| tmux_stream_resizeA | Set a stream's control-client size (refresh-client -C WxH, tmux 2.4+). Use this when pane output wraps at the wrong width — a control client defaults to 80x24. The size sticks across auto-reconnects. Returns {"stream_id", "width", "height"}. |
| tmux_stream_readA | Long-poll new events from a stream (blocks until output or Returns {"events", "cursor", "alive", "lagged"}. Each event has a Filter with |
| tmux_stream_sendA | Run a tmux command over the stream's control connection.
|
| tmux_stream_listA | List active control-mode streams and their state. Returns {"streams": [{stream_id, session, target, alive, buffered, panes, ...}]}. |
| tmux_stream_stopA | Stop a stream: detach the control client (the session keeps running) and free the connection. Returns {"stopped": stream_id}. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| sessions_resource | All sessions on the local tmux server, as JSON. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/laszlopere/mcp-tmux'
If you have feedback or need assistance with the MCP directory API, please join our Discord server