MCP server to control tmux sessions, windows, panes, keystrokes, and captures locally or remotely over SSH.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag โ we're steadily working through the catalog.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by MCP Tmux.
A comprehensive, universal MCP server for driving tmux โ sessions, windows, panes, sending keystrokes, and reading pane output โ on the local machine or on remote hosts over SSH.
Source: https://github.com/laszlopere/mcp-tmux
This is the whole point, not a caveat: the agent drives real tmux sessions, not a private sandbox. When you attach to a session the agent is using, you see its keystrokes and command output live, and you can type into the very same pane. Nothing the agent does is hidden from an attached human โ by design.
That makes tmux a natural medium for pair programming with the AI: open a shared session, watch it work, take the keyboard when you want to step in, and hand it back. The agent and you cooperate in one place instead of the agent operating out of sight. (Because writes into an attached session are visible and real, be deliberate with destructive commands โ you're both driving the same terminal.)
tmux_command passthrough runs any tmux subcommand โ so whatever
your tmux supports, this server supports.user@host or a named profile from the config file). Old or
minimal boxes only need tmux + ssh; the server itself runs on a modern
host with Python 3.10+.Requires Python 3.10+ on the host running the server, plus the tmux binary
(and ssh for remote targets).
Installing โ registering. Installing the package only puts the
mcp-tmuxexecutable on your PATH โ it does not tell any MCP client about it. Python wheels can't run post-install code, so registration is always a separate step (see below). If a client "can't find" the server after install, it just hasn't been registered yet.
The package can register itself โ no hand-editing of config files:
User scope matters. mcp-tmux register defaults to --scope user, so the
server is visible from every directory/session. The plain
claude mcp add tmux -- mcp-tmux defaults to local (project) scope, which is
the usual reason a server "doesn't show up" in another session โ it was only
added for the directory you ran it in. To pick a scope explicitly:
After registering, confirm with claude mcp list (you should see
tmux: mcp-tmux - โ Connected). A client session already running must be
restarted to pick up a newly registered server.
Equivalent manual form, if you prefer the raw CLI:
From a checkout, the helper scripts do install and registration together โ the closest thing to "it happens at install time":
To remove everything by hand:
Tools are grouped into toolsets so a session only pays the schema cost of
what it needs. core is always loaded; the rest are opt-in (see
Selecting toolsets). A default session loads
core + automation (~18 tools); ["all"] loads the full surface (60).
| Toolset | Tools |
|---|---|
| core (always loaded) | tmux_command, tmux_query, tmux_version, tmux_list_targets, tmux_has_session, tmux_new_session, tmux_send_keys, tmux_capture_pane, tmux_new_window, tmux_list_panes, tmux_split_window, tmux_list, tmux_kill, tmux_rename, tmux_select |
automation (default) | tmux_wait_for_text, tmux_wait_for_idle, tmux_run |
layout | tmux_next_layout, tmux_move_window, tmux_select_layout, tmux_resize_pane, tmux_set_pane_title, tmux_clear_history, tmux_swap, tmux_last, tmux_respawn, tmux_link_window, tmux_unlink_window, tmux_break_pane, tmux_join_pane, tmux_find_window, tmux_pipe_pane |
buffers | tmux_set_buffer, tmux_paste_buffer, tmux_delete_buffer, tmux_save_buffer, tmux_load_buffer |
config | tmux_set_option, tmux_show_options, tmux_set_environment, tmux_show_environment, tmux_set_hook, tmux_show_hooks, tmux_run_shell, tmux_if_shell |
keybindings | tmux_list_keys, tmux_bind_key, tmux_unbind_key |
copymode | tmux_copy_mode, tmux_copy_scroll, tmux_copy_search |
clients | tmux_server_info, tmux_display_message |
stream | tmux_stream_start, tmux_stream_resize, tmux_stream_read, tmux_stream_send, tmux_stream_list, tmux_stream_stop |
Every tool accepts an optional target (omit / "local", a named profile, or
user@host). For anything not covered by a dedicated tool โ including anything
gated out of the active toolsets โ use tmux_command(args=[...]), which is in
core and reaches every tmux subcommand.
Pick toolsets with the toolsets config key or the MCP_TMUX_TOOLSETS
environment variable (comma-separated; env wins over config). core is always
included. The special value all loads every toolset. An unknown name is a
startup error listing the valid toolsets.
With no setting, the default is ["core", "automation"].
The consolidated tools take a kind discriminator instead of having one
tool per entity โ e.g. tmux_kill(kind="window", id="dev:2"),
tmux_kill(kind="server"), tmux_swap(kind="pane", src="%1", dst="%2"),
tmux_rename(kind="session", id="old", new_name="new"),
tmux_list(kind="window", scope="dev"). Valid kinds: kill โ
session/window/pane/server; rename โ session/window; select/last/swap โ
window/pane; respawn โ pane/window; list โ session/window/client/buffer
(tmux_list returns {items, kind}; panes have their own tmux_list_panes
because they scope by window or session).
The one-shot CLI is the universal default. For watching a pane as it
produces output โ a build, a tail, a long job โ tmux_stream_* opens a
persistent control-mode (tmux -C) connection and lets you long-poll its
event stream instead of repeatedly calling tmux_capture_pane:
tmux_stream_read auto-advances a cursor, so just call it again for the next
batch; filter by pane and/or kinds ("output", "window-add",
"layout-change", โฆ). One connection is shared per (target, session) and
tmux_stream_start is idempotent.
Read-only state is also exposed as MCP resources: tmux://sessions,
tmux://{session}/windows, tmux://{window}/panes (local), plus target-aware
variants tmux://{target}/sessions, tmux://{target}/{session}/windows,
tmux://{target}/{window}/panes.
A typical agent flow:
send_keys text is evaluatedFactual signals from GitHub, npm, and our automated checks โ not a rating.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/laszlopere-mcp-tmux)<a href="https://allmcps.com/mcp/laszlopere-mcp-tmux"><img src="https://allmcps.com/api/badge/laszlopere-mcp-tmux?style=directory" alt="MCP Tmux on AllMCPs" /></a>