Troubleshooting¶
Symptom-based guide. Find your problem, follow the steps.
Server doesn’t appear in client¶
Symptoms: Client shows no tmux MCP tools, or “server not found” errors.
Check:
Verify the server starts manually:
$ uvx libtmux-mcp
You should see no output (it’s waiting for stdio input). Press Ctrl+C to stop.
Check your client config points to the right command. Common issues:
uvxnot in PATH — install uvTypo in
"command"or"args"in JSON configTOML config syntax errors (Codex CLI)
Restart your MCP client after config changes.
Tools fail with “no sessions found”¶
Symptoms: list_sessions returns empty, other tools
can’t find targets.
Check:
Is tmux running?
$ tmux list-sessions
Are you on the right socket? If
LIBTMUX_SOCKETis set, the server only sees sessions on that socket:$ tmux -L ai_workspace list-sessions
Create a session on the expected socket:
$ tmux -L ai_workspace new-session -d -s test
Wrong tmux socket¶
Symptoms: Server sees different sessions than expected, or sees nothing.
Cause: LIBTMUX_SOCKET in the MCP config selects a different tmux socket.
Your personal sessions are on the default socket.
Fix: Either remove LIBTMUX_SOCKET from the config to use the default socket, or ensure sessions exist on the configured socket.
Pane targeting mismatch¶
Symptoms: Tool targets the wrong pane, or “pane not found” errors.
Cause: Using ambiguous targeting (session name + window name) instead of direct IDs.
Fix: Use pane_id (e.g. %1) for unambiguous targeting. Pane IDs
are globally unique within a tmux server. Run list_panes
first to discover IDs.
Command works in shell but not via MCP¶
Symptoms: send_keys sends the command but output isn’t
what you expect.
Check:
Enter key:
send_keyssends Enter by default (enter=true). If you’re sending a partial command, setenter=false.Special characters: tmux interprets some key names (e.g.
C-c,Enter). If sending literal text, useliteral=true.Timing: For authored shell commands, prefer
run_command; it waits for completion and returns exit status plus output. Usesend_keysorsend_keys_batchfor raw interactive input,capture_sincefor repeated observation, andwait_for_textonly when waiting on output you do not author. Don’t callcapture_paneimmediately after raw input — the command may still be running.
Silent startup failure¶
Symptoms: MCP client says connected but no tools are available.
Check:
Missing dependency — ensure FastMCP is installed:
$ uvx libtmux-mcp
If using pip install, check:
$ python -c "import fastmcp; print(fastmcp.__version__)"
Python version — requires 3.10+:
$ python --version
A toolset is hiding tools¶
Symptoms: Some tools are missing from the tool list, or a call returns “not in this server’s enabled toolsets”.
Cause: LIBTMUX_TOOLSETS does not include the tool’s toolset.
Fix: The default is inspect,manage,execute. Add teardown for the kill commands, or name the tool in LIBTMUX_TOOLS. See Trust model.
How to see logs¶
The MCP server uses Python’s standard logging module. To see debug
output, set the log level before starting:
$ PYTHONUNBUFFERED=1 uvx libtmux-mcp 2>server.log
For Claude Desktop on macOS, MCP server logs are at:
~/Library/Logs/Claude/mcp-server-libtmux.log