libtmux-mcp 0.1.0.alpha.1 · Source
libtmux-mcp exposes one existing tmux server over MCP standard input and
output. Requiring libtmux/mcp starts no server; the installed
libtmux-mcp executable owns the protocol transport and borrows the selected
tmux daemon.
The default catalog contains tmux_capabilities and tmux_snapshot.
Observation and mutation tools are opt-in, so a client cannot acquire them by
calling an undisclosed name.
Start hereLink to section
- Install configures an MCP client to launch the Ruby server.
- Tools records the actual wire schemas and per-tool policy.
- Guides select an owned socket and enable optional tools.
- Topics explains retained captures, waits, and shell enrollment.
- Examples shows a complete client configuration.
- Language API documents the Ruby embedding surface.
The server requires Ruby 3.3 or newer. Strong process tracking for waits and authored runs requires tmux 3.3 or newer plus native process identity support. The source-owned MCP guide is staged from the same revision as the generated reference.
Install
Choose your client and configuration scope, then run the command or paste the configuration.
With RubyGems installed:
$ claude mcp add tmux -- libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.claude.json (this project)
With RubyGems installed:
$ claude mcp add tmux --scope user -- libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.claude.json (all projects)
With RubyGems installed:
$ claude mcp add tmux --scope project -- libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: .mcp.json (in repo, version-controlled)
With Bundler installed:
$ claude mcp add tmux -- bundle exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.claude.json (this project)
With Bundler installed:
$ claude mcp add tmux --scope user -- bundle exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.claude.json (all projects)
With Bundler installed:
$ claude mcp add tmux --scope project -- bundle exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: .mcp.json (in repo, version-controlled)
With RubyGems installed:
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: claude_desktop_config.json
With Bundler installed:
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: claude_desktop_config.json
With RubyGems installed:
$ codex mcp add tmux -- libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.codex/config.toml
With RubyGems installed:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: .codex/config.toml (in repo)
With Bundler installed:
$ codex mcp add tmux -- bundle exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.codex/config.toml
With Bundler installed:
Codex's CLI doesn't support project scope yet — paste this into .codex/config.toml at the repo root.
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: .codex/config.toml (in repo)
With RubyGems installed:
$ gemini mcp add --scope user tmux libtmux-mcp -- --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.gemini/settings.json
With RubyGems installed:
$ gemini mcp add --scope project tmux libtmux-mcp -- --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: .gemini/settings.json (in repo)
With Bundler installed:
$ gemini mcp add --scope user tmux bundle -- exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.gemini/settings.json
With Bundler installed:
$ gemini mcp add --scope project tmux bundle -- exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: .gemini/settings.json (in repo)
With RubyGems installed:
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: .cursor/mcp.json (in repo)
With RubyGems installed:
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.cursor/mcp.json
With Bundler installed:
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: .cursor/mcp.json (in repo)
With Bundler installed:
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.cursor/mcp.json
With RubyGems installed:
$ grok mcp add --scope user tmux -- libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.grok/config.toml
With RubyGems installed:
$ grok mcp add --scope project tmux -- libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ./.grok/config.toml (in repo)
With Bundler installed:
$ grok mcp add --scope user tmux -- bundle exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.grok/config.toml
With Bundler installed:
$ grok mcp add --scope project tmux -- bundle exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ./.grok/config.toml (in repo)
With RubyGems installed:
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.gemini/config/mcp_config.json
With Bundler installed:
The server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.gemini/config/mcp_config.json
With RubyGems installed:
$ opencode mcp add tmux -- libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.config/opencode/opencode.jsonc
With Bundler installed:
$ opencode mcp add tmux -- bundle exec libtmux-mcp --socket-name libtmux-docs --endpoint localThe server borrows an existing named socket. Start it first with `tmux -L libtmux-docs new-session -d`; `--endpoint` is only its public alias.
Config file: ~/.config/opencode/opencode.jsonc