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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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