Skip to main content
Glama

tmux-mcp

MCP server that gives AI assistants full visibility into your tmux sessions — browse sessions, windows, and panes, read terminal output, and send commands.

Watch your AI agent work in real-time. Enable TMUX_MCP_ALWAYS_USE to force every shell command through a named tmux session instead of direct Bash — every command your AI runs appears live in your terminal, fully auditable.

Works with Claude Code, OpenCode, Cursor, Windsurf, and any MCP-compatible host.

What it can do

Read your terminal state

  • List every active tmux session with window count, creation time, and attached status

  • List windows inside a session — index, name, pane count, which one is active

  • List panes inside a window — size, running command, which one is active

See what's on screen

  • Capture the visible output of any pane — up to 5 000 lines of scrollback

  • Read logs, compiler errors, server output, test runs — anything in your terminal

Create and organise

  • Create sessions, windows, and panes with a working directory and an initial command

  • Split panes horizontally or vertically

  • Rename sessions and windows for reliable targeting

Clean up

  • Kill sessions, windows, or individual panes

Control panes

  • Send shell commands to any pane and immediately read the output

  • Send raw key sequences: C-c to interrupt, Escape to exit, arrow keys, etc.

  • Configurable wait time before capturing so long-running commands have time to finish

Error-safe

  • Bad target? No tmux server? Returns a readable error message instead of crashing

Related MCP server: Ryan's Tmux MCP Server

Tools

list_sessions

Lists all active tmux sessions. No parameters.

Returns: session name, number of windows, creation time, attached/detached status.

list_windows

Lists windows inside a session.

Parameter

Type

Description

session

string

Session name (from list_sessions)

Returns: window index, name, pane count, whether it's the active window.

list_panes

Lists panes inside a session or window.

Parameter

Type

Description

target

string

Session name (work) or session:window (work:0)

Returns: pane index, title, dimensions (e.g. 220x50), whether it's active, running command.

capture_pane

Captures the current terminal output of a pane.

Parameter

Type

Default

Description

target

string

Pane target: session:window.pane (e.g. work:0.0)

lines

number

150

Lines of scrollback to include (max 5000)

Returns: raw terminal text as it appears on screen.

Security note: pane output can contain environment variables, API keys, tokens, and credentials if they were printed to the terminal. Only use this server in trusted local environments.

send_keys

Sends a command or key sequence to a pane and captures the result.

Parameter

Type

Default

Description

target

string

Pane target: session:window.pane

keys

string

Command or tmux key notation (C-c, Escape, Up, etc.)

enter

boolean

true

Press Enter after the keys

capture_lines

number

50

Lines to capture after sending

wait_ms

number

400

Milliseconds to wait before capturing

Returns: confirmation + pane output after the command ran.

new_session

Creates a new detached tmux session.

Parameter

Type

Description

name

string

Session name. Omit to let tmux auto-assign one.

cwd

string

Working directory for the session.

command

string

Shell command to run immediately in the first window.

new_window

Creates a new window inside an existing session.

Parameter

Type

Description

session

string

Session to create the window in.

name

string

Window name.

cwd

string

Working directory for the new window.

command

string

Shell command to run immediately.

split_pane

Splits a pane into two.

Parameter

Type

Default

Description

target

string

Pane or window to split: session:window.pane

direction

horizontal | vertical

horizontal

horizontal = left/right split, vertical = top/bottom

cwd

string

Working directory for the new pane.

command

string

Shell command to run in the new pane.

size

number

Size of the new pane as a percentage (1–99).

kill_session

Kills a session and all its windows and panes. Destructive — cannot be undone.

Parameter

Type

Description

session

string

Session name to kill.

kill_window

Kills a window and all its panes. Destructive.

Parameter

Type

Description

target

string

Window target: session:window

kill_pane

Kills a single pane and its running process. Destructive.

Parameter

Type

Description

target

string

Pane target: session:window.pane

rename_session

Parameter

Type

Description

session

string

Current session name.

new_name

string

New name.

rename_window

Parameter

Type

Description

target

string

Window target: session:window

new_name

string

New name.

Target format

All tools use tmux's standard session:window.pane notation:

work           →  session named "work"
work:0         →  window 0 of session "work"
work:0.0       →  pane 0, window 0, session "work"
work:editor.1  →  pane 1 of window named "editor" in session "work"

Use list_sessionslist_windowslist_panes to discover the right target before calling capture_pane or send_keys.

Install

npm install -g @fr1sk/tmux-mcp

Configure

OpenCode (~/.config/opencode/opencode.json)

{
  "mcp": {
    "tmux": {
      "type": "local",
      "command": ["tmux-mcp"]
    }
  }
}

Claude Code (~/.claude/settings.json)

{
  "mcpServers": {
    "tmux": {
      "command": "tmux-mcp"
    }
  }
}

Cursor / Windsurf (mcp.json)

{
  "mcpServers": {
    "tmux": {
      "command": "tmux-mcp"
    }
  }
}

Usage examples

What tmux sessions do I have running?
Show me the output of my dev server — it's in the work session
My tests are failing, check what's in work:1.0
Run git status in my work session and show me the output
Send Ctrl-C to work:0.0, the process is stuck
Tail the last 300 lines from the logs pane in my api session
Create a new session called 'dev' in ~/Projects/myapp and run npm run dev
Split work:0.0 vertically and run npm test in the new pane
Rename session 'new' to 'api'
Kill the old session named 'temp'

Environment variables

Set these in your MCP client config under environment to control agent behavior.

Variable

Default

Description

TMUX_MCP_DEFAULT_SESSION

Session name the agent routes commands to when alwaysUseTmux is on

TMUX_MCP_ALWAYS_USE

false

Set to "true" to route all shell commands through tmux instead of direct Bash

When both are set, the get_config tool returns an instructions field the agent uses to automatically route every shell command through send_keys in the configured session.

Example (OpenCode):

{
  "mcp": {
    "tmux": {
      "type": "local",
      "command": ["tmux-mcp"],
      "environment": {
        "TMUX_MCP_ALWAYS_USE": "true",
        "TMUX_MCP_DEFAULT_SESSION": "dev"
      }
    }
  }
}

Security

This server provides unrestricted local shell access through tmux:

  • capture_pane — returns raw terminal output, which may include environment variables, API keys, tokens, database passwords, and SSH private keys if they were printed to the terminal.

  • send_keys — executes arbitrary shell commands in the target pane. Any command the AI sends runs in your shell with your permissions.

  • command parameter on new_session, new_window, and split_pane — passed directly to tmux, which runs it via $SHELL -c. No validation or sandboxing.

Only use this server in trusted local development environments. Never expose it to network-accessible MCP hosts or untrusted AI assistants.

Requirements

  • Node.js 18+

  • tmux on $PATH

Available Tools

14 tools
capture_paneA

Capture current output of a tmux pane. Target format: 'session:window.pane' (e.g. 'work:0.0'). Use list_sessions → list_windows → list_panes to build the target. WARNING: pane output may contain environment variables, API keys, tokens, and credentials — do not call if the pane may contain sensitive data unless the user has confirmed it is safe. AFTER displaying the output, always ask the user what to do next with these options: Refresh (call capture_pane again), Send command (ask what command then call send_keys), Switch pane (restart from list_sessions), Done (stop). Loop until the user picks Done.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNoLines of scrollback to include (default: 150)
targetYesPane target: 'session:window.pane'

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It warns about sensitive output (environment variables, API keys) and instructs asking user what to do next after displaying output. However, it does not explicitly state side effects or idempotency, though the read-only nature is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with five sentences, each serving a distinct purpose: purpose, target format, building the target, security warning, and post-capture workflow. It is front-loaded with the most critical information and contains no redundant phrases.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description fully covers the tool's behavior: it captures pane output, displays it, and provides a follow-up loop. The security warning addresses a potential risk, and the parameters are well-documented via the schema and clarified examples. All necessary context for an agent to use the tool correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both parameters. The description adds value beyond the schema by providing the target format example ('work:0.0') and the method to obtain the target via list tools. The 'lines' parameter has a default mentioned in the schema but not repeated in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Capture current output of a tmux pane', clearly stating the action and resource. It specifies the target format 'session:window.pane' and distinguishes from siblings by referencing how to build the target using list_sessions, list_windows, and list_panes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: use list_sessions→list_windows→list_panes to build the target, warns against calling on panes with sensitive data without user confirmation, and outlines the post-capture workflow with options (Refresh, Send command, Switch pane, Done).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_configA

Returns the current tmux-mcp configuration: whether tmux is installed, the default session name, and whether the agent is configured to always route shell commands through tmux. Call this at the start of any task to check how the agent should behave. If alwaysUseTmux is true, route all shell commands through send_keys in the configured session instead of direct Bash for the remainder of the task.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description fully carries the burden. It discloses that the tool is a read-only query returning configuration state, with no side effects. Slight deduction for not mentioning auth or rate limits, though none are expected for a simple getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states the return value, second provides usage guidance. No wasted words, front-loaded with the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with no output schema, the description covers what the tool returns and how to use the result. It is fully adequate for an agent to invoke and interpret correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description adds meaning by detailing the three configuration fields returned, which is valuable context beyond the empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states that the tool returns configuration details (tmux installation, default session name, alwaysUseTmux flag). It clearly distinguishes itself from sibling tools which operate on sessions, windows, and panes, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'Call this at the start of any task to check how the agent should behave.' It also explains the behavioral implication of the returned value (if alwaysUseTmux, route commands through send_keys). This eliminates ambiguity about when and why to use the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kill_paneA

Kill a tmux pane and terminate its running process. ALWAYS confirm with the user before calling — this is destructive and cannot be undone. Target format: 'session:window.pane'.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesPane target: 'session:window.pane'

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description clearly states the tool is destructive, cannot be undone, and requires user confirmation. It adds important behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the action followed by a critical warning. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's destructive nature and single parameter, the description fully covers its purpose, usage warning, and target format. Sibling tools provide context for differentiation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single target parameter, and the description repeats the format 'session:window.pane'. No additional meaning is added beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Kill a tmux pane and terminate its running process', using a specific verb and resource. It distinguishes from sibling tools like kill_session and kill_window by focusing on panes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'ALWAYS confirm with the user before calling' and warns that it is destructive and irreversible. Does not mention alternatives or when not to use, but the direct warning is strong guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kill_sessionA

Kill a tmux session and all its windows and panes. ALWAYS confirm with the user before calling — this is destructive and cannot be undone.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYesSession name to kill.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses the destructive, irreversible nature of the tool and that it kills all windows and panes. This is sufficient for an agent to understand the impact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: one for purpose, one for critical usage note. No redundant information; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with no output schema, the description covers purpose, destructiveness, and the need for confirmation. It is nearly complete; minor gap: no description of the return value or confirmation mechanism.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add information beyond the schema for the single parameter 'session'. Since schema coverage is 100%, a baseline of 3 is appropriate. No additional semantic detail is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Kill' and the resource 'tmux session', including the scope 'all its windows and panes'. This distinguishes it from sibling tools like kill_window and kill_pane, which target narrower scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly warns 'ALWAYS confirm with the user before calling — this is destructive and cannot be undone', providing strong usage guidance. It does not explicitly compare to alternatives, but the context of sibling tools implies when to use this vs. kill_window/kill_pane.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kill_windowA

Kill a tmux window and all its panes. ALWAYS confirm with the user before calling — this is destructive and cannot be undone. Target format: 'session:window'.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesWindow target: 'session:window'

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses that the action is destructive, irreversible, and kills all panes in the window.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise, front-loaded sentences with no wasted words; each sentence adds critical information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter destructive tool with no output schema, the description covers all necessary context: what it does, format, and required confirmation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and description repeats the same format info as the schema, adding no new semantic value beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'kill' and resource 'tmux window', and distinguishes from sibling tools like kill_session and kill_pane.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to confirm with user before calling due to destructiveness, and specifies the target format 'session:window'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_panesA

List panes in a tmux target. Pass a session name ('work') or session:window ('work:0'). When only a session name is passed, lists all panes across all windows in that session. Returns pane index, size, active status, and running command. If there is only one pane, auto-select it without asking. If multiple, present them as choices and ask the user which pane to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesSession name or 'session:window'

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses return values (pane index, size, active status, running command) and decision logic (auto-select if one pane, present choices if multiple).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise but comprehensive, front-loaded with main purpose, and every sentence adds value. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a listing tool with one parameter and no output schema, the description fully covers input format, return information, and behavioral aspects. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'target' with schema coverage 100%. The description adds significant context beyond schema: explains different behaviors depending on whether target is session name or session:window, which is valuable for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists panes in a tmux target, specifies target format (session name or session:window), and differentiates from sibling tools like list_sessions and list_windows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes when to use (to list panes) and how the target parameter affects scope (all windows vs specific window). Does not explicitly state when not to use or compare directly with siblings, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sessionsA

List all active tmux sessions. Returns session name, window count, creation time, and attached status. WHEN TO CALL: Call this immediately whenever the user mentions tmux, asks to attach a session, wants to see terminal output, check logs, run a command in a pane, or interact with any running process. Do not answer from memory — always call this tool first to get live state. WORKFLOW: After getting sessions, ask the user which session, call list_windows, ask which window, call list_panes, ask which pane, then call capture_pane.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even without annotations, the description clearly states the output contents and implies it is a safe read operation. It does not explicitly state non-destructive behavior, but the context is sufficient for an agent to understand it has no side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections for purpose, return fields, when to call, and workflow. It could be slightly more concise, but the information density is high and all sentences are useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description fully covers what the tool does, why to use it, and how it fits into a larger workflow with sibling tools. No gaps are apparent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0 parameters and 100% schema coverage, the description need not add parameter details. Baseline 4 is appropriate as the description adds value through usage guidance rather than parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all active tmux sessions' and lists the exact return fields (session name, window count, creation time, attached status), making the tool's purpose very specific and distinguishable from sibling tools like list_windows and list_panes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'WHEN TO CALL' instructions: call when user mentions tmux, needs to attach, see output, check logs, etc. Also explicitly warns 'Do not answer from memory — always call this tool first,' which is excellent guidance for agent usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_windowsA

List all windows in a tmux session. Returns window index, name, pane count, and active status. If there is only one window, auto-select it without asking. If multiple, ask the user which window to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYesSession name (from list_sessions)

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses auto-select behavior and return fields, which is more than a simple list. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first defines purpose and output, second explains behavior. No wasted words, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given single parameter and no output schema, description covers functionality and behavior adequately. Missing aspects like error handling but not critical for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only parameter 'session' with description 'Session name (from list_sessions)' adds value beyond schema by referencing another tool. Schema coverage is 100% so baseline 3, plus extra context earns 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states 'List all windows in a tmux session' with specific return fields (index, name, pane count, active status). Clearly distinguishes from siblings list_sessions and list_panes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes auto-select behavior for single window and ask-user for multiple, but lacks explicit when-to-use vs alternatives. Context is clear but no direct exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

new_sessionA

Create a new detached tmux session. Before calling, use list_sessions to check whether a session with the requested name already exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for the session.
nameNoSession name. Omit to let tmux auto-assign one.
commandNoShell command to run immediately in the first window. WARNING: executes in your shell.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Reveals key behaviors: session is detached, command parameter warns of execution. With no annotations, this is sufficient, though missing return values or error states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first gives purpose, second provides usage guidance. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers main purpose and a critical usage hint. Lacks output details (e.g., returns session name), but for a simple creation tool it's mostly adequate given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds value by noting name can be omitted for auto-assignment and warning about command execution.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Create a new detached tmux session.' with a specific verb and resource. Differentiates from sibling tools like list_sessions and new_window.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises to use list_sessions first to avoid duplicate names, providing clear when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

new_windowB

Create a new window in an existing tmux session.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for the new window.
nameNoWindow name.
commandNoShell command to run immediately. WARNING: executes in your shell.
sessionYesSession name to create the window in.

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. Description lacks behavioral details beyond the basic action. Contains a useful warning about the command parameter executing in the shell, but does not disclose if destructive, what happens to existing windows, or auth requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence plus a warning. No unnecessary words. Efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool creates windows with side effects but no output schema. Description lacks explanation of return behavior or what happens after creation (e.g., focus, attachment). Missing details for a non-trivial creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all parameters (100% coverage). Description adds the command warning but does not elaborate on other parameters beyond repeating schema. Baseline 3 achieved.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'create' and resource 'window' with context 'in an existing tmux session'. Distinguishes from sibling tools like 'new_session' and 'split_pane'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description implies usage (requires existing session) but does not explicitly state when to use vs alternatives like split_pane or new_session. No when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_sessionB

Rename an existing tmux session.

ParametersJSON Schema
NameRequiredDescriptionDefault
sessionYesCurrent session name.
new_nameYesNew session name.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description only states the generic rename action. It does not disclose side effects (e.g., whether the session must exist, what happens if the new name is already in use) or any additional behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no fluff. It is front-loaded and gets straight to the point, but could benefit from additional context without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple rename operation, the minimal description may suffice, but it lacks details like error cases (e.g., session not found, new_name conflict) and any output information. With no annotations or output schema, it is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds no extra meaning beyond the schema, so baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Rename') and the resource ('existing tmux session'). It distinguishes itself from sibling tools like rename_window by specifying 'session'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., when to rename a session vs. create a new one). The description does not mention prerequisites or contextual conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rename_windowA

Rename a window in a tmux session. Target format: 'session:window'.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesWindow target: 'session:window'
new_nameYesNew window name.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose behavioral traits beyond the basic action. It lacks details on side effects, authorization needs, or immediate effects of renaming.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no unnecessary details, efficiently conveying the tool's purpose and target format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple rename tool with no output schema and only two parameters, the description is sufficiently complete. It covers the target format and operation, leaving no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds minimal value (target format) beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (rename) and resource (window in a tmux session). The target format is specified, distinguishing it from sibling tools like rename_session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use or alternatives; the target format is hinted but not contextualized against other renaming tools. The description implies its use but lacks when-not or alternative mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

send_keysA

Send keys or a command to a tmux pane, then capture its output. Target format: 'session:window.pane'. Use enter=false for raw tmux key sequences like 'C-c', 'Escape', or arrow keys — these are not shell commands and must not have Enter appended. Use enter=true (default) for shell commands. Set wait_ms higher for long-running commands; 0 captures immediately before output appears. WARNING: this executes arbitrary commands in your shell — only use with trusted input.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysYesCommand or key sequence (tmux notation: 'C-c', 'Escape', 'Up', etc.)
enterNoPress Enter after keys (default: true). Set false for raw key sequences like C-c, Escape, arrow keys.
targetYesPane target: 'session:window.pane'
wait_msNoMilliseconds to wait before capturing (default: 400). Set higher for slow commands, 0 to capture immediately.
capture_linesNoLines to capture after sending (default: 50)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It warns about executing arbitrary commands ('only use with trusted input') and explains behavior of enter and wait_ms. Lacks details on rate limits or side effects, but safety warning adds significant transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is three sentences with a warning, front-loaded with core purpose. Every sentence adds value: first defines action, second details enter flag, third advises wait_ms and includes warning. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all 5 parameters with clear guidance. No output schema but mentions capturing output. Includes safety warning appropriate for a command execution tool. Complete for the complexity level.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description adds meaning beyond schema: explains target format, clarifies enter flag usage, and gives context for wait_ms behavior. No param descriptions are missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sends keys or commands to a tmux pane and captures output, with specific target format 'session:window.pane'. It distinguishes from siblings like capture_pane by combining send and capture.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use enter=false for raw key sequences vs enter=true for commands, and recommends adjusting wait_ms for long-running commands. Does not explicitly compare to sibling tools like capture_pane, but usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

split_paneA

Split a tmux pane horizontally or vertically. 'horizontal' = left/right panes side by side. 'vertical' = top/bottom panes stacked. Target format: 'session:window.pane' or 'session:window'.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNoWorking directory for the new pane.
sizeNoSize of the new pane as a percentage (e.g. 50).
targetYesTarget pane or window to split: 'session:window.pane'
commandNoShell command to run in the new pane. WARNING: executes in your shell.
directionNo'horizontal' splits left/right, 'vertical' splits top/bottom (default: horizontal)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that command executes in shell (warning) and direction defaults, but lacks details on side effects, undoability, or permissions needed. Relies on description alone since no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, front-loaded with action and critical details. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all parameters indirectly, explains direction and target format. Lacks output/return value description, but adequate for a simple tool without output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds meaning beyond schema by clarifying target format ('session:window.pane') and direction descriptions ('left/right side by side', 'top/bottom stacked'). Schema coverage is 100%, but description enhances usability.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool splits a tmux pane, specifies horizontal vs vertical, and explains target format. Differentiates from sibling tools like new_window or kill_pane.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use vs alternatives (e.g., new_window). Only implies usage for splitting panes, with no when-not-to-use or prerequisite conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 14 tool updatesv0.4.1
    • First observedcapture_pane
    • First observedget_config
    • First observedkill_pane
    • First observedkill_session
    • First observedkill_window
    • First observedlist_panes
    • First observedlist_sessions
    • First observedlist_windows
    • First observednew_session
    • First observednew_window
    • First observedrename_session
    • First observedrename_window
    • First observedsend_keys
    • First observedsplit_pane

TDQS

A4.2/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct tmux resource (session, window, pane) or action (list, capture, send, create, kill, rename). No overlapping purposes; even similar operations are clearly separated by resource type.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., list_sessions, kill_pane, rename_window). Verbs are appropriate and uniform, with no mixed naming styles.

Tool Count5/5

14 tools is well-scoped for a tmux server. It covers the core lifecycle of sessions, windows, and panes without excess or shortage.

Completeness4/5

The set covers essential operations: listing, creating, killing, renaming, capturing output, and sending keys. Minor gaps exist (e.g., no pane resizing or moving), but the core workflow is complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for terminal control enabling AI to manage terminal sessions via iTerm2 or tmux, with features like screen reading, keyboard/mouse input, and background execution.
    9
    12 npm
    21
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A comprehensive MCP server for driving tmux sessions, windows, panes, sending keystrokes, and reading pane output locally or over SSH, enabling real-time collaborative pairing with AI.
    71
    4
    MIT