claude-code-mcp
Uses tmux as the terminal multiplexer to keep Claude Code sessions alive, allowing injection of commands and reading output via tmux panes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@claude-code-mcpadd error handling for the database connection"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
claude-code-mcp
It sounds dumb... but its literally that. Using Claude Code through an MCP server. Its meant for orchestrator agents (like Hermes), giving it fine-grained control over interactive Claude Code sessions running inside tmux. Hermes has a built in Claude Code Skill, but let's be honest, it's huge and takes an enormous amount of the context window...
The core value: a long-running Claude Code REPL stays alive in a tmux pane, and
your orchestrator can steer it at any point — send a task without blocking,
watch progress, inject a follow-up mid-run, interrupt a wrong turn, or collect
the final answer. Way better than using it through claude -p.
The server replaces the whole tmux runbook an orchestrator would otherwise have to carry in its prompt: launch dialogs, readiness gating, idle detection, response extraction. Point Hermes at it and delete the skill file.
Why an orchestrator needs this
Need | Tool |
Send a task without blocking on it |
|
Watch progress while it works |
|
Get the final answer back |
|
Steer a follow-up into a running session |
|
Interrupt a wrong-direction turn |
|
Answer a question Claude asked |
|
One-shot task, structured result |
|
Parallel work on one repo |
|
Keep quality up on long sessions |
|
Related MCP server: claude-tmux
The core loop
session_send("work", "implement the auth module", working_dir="/proj")
# → returns immediately: {"dispatched": true, "created": true, ...}
session_tail("work") # progress, any time
session_send("work", "use JWT, not sessions") # steer mid-run
session_wait("work", timeout=300) # → {"response": "...", "timed_out": false}session_wait is resumable. If it times out, nothing is lost — the pending
dispatch survives and the next call keeps waiting:
r = session_wait("work", timeout=300)
while r["timed_out"]:
r = session_wait("work", timeout=300)Why not claude -p?
claude -p exits after one response. There is no channel to inject a
follow-up — every turn spawns a fresh process and loses accumulated context.
This server keeps the interactive REPL alive in a tmux pane, so prompts can be injected at any time, history accumulates inside the running process, and mid-run interrupts work as expected.
Print mode is still available via claude_run for one-shot work — and because
sessions are minted a --session-id up front, a print-mode call can resume a
tmux session's conversation. Start cheap, escalate to interactive.
Features
Non-blocking dispatch —
session_sendreturns as soon as the prompt is injected;session_waitcollects the result whenever you want it.Steer mid-session — send again while Claude is working. Input is queued and the eventual result still spans the whole run.
Launch dialogs handled — workspace trust, the bypass-permissions warning (whose default is "No, exit"), and the effort selector are answered automatically. Anything unrecognised is surfaced as
awaiting_inputinstead of being blind-Entered.Real interrupt — sends Escape, Claude Code's own interrupt, and verifies it took. Ctrl-C is only a fallback (a double Ctrl-C exits the process).
Send & auto-create — no separate
session_startcall required.Shared conversations — a minted
--session-idlets print mode and tmux address the same history.Scoped capability —
allowed_tools,model,effort,add_dir,append_system_prompt,permission_modeper session.Worktree isolation —
worktree="feature-x"for parallel tasks on one repo.Context health —
session_context,session_compact, and an optionalauto_compact_atthreshold onsession_wait.Token-efficient — you get the extracted answer, not the pane dump.
Pure stdlib + mcp SDK — no heavy dependencies.
Requirements
Tool | Version |
Python | ≥ 3.11 |
tmux | ≥ 3.4 |
Claude Code | ≥ 2.0 |
Installation
pip install claude-code-mcpOr with uv:
uv tool install claude-code-mcpFor development:
git clone https://github.com/joschi655/claude-code-mcp
cd claude-code-mcp
pip install -e ".[dev]"MCP configuration
Claude Desktop / Claude Code
{
"mcpServers": {
"claude-code-mcp": {
"command": "claude-code-mcp"
}
}
}With uvx (no install required)
{
"mcpServers": {
"claude-code-mcp": {
"command": "uvx",
"args": ["claude-code-mcp"]
}
}
}Hermes / custom MCP client
{
"mcpServers": {
"claude-code-mcp": {
"command": "python",
"args": ["-m", "claude_code_mcp"]
}
}
}Tools
session_send(name, prompt, ...)
Send a prompt and return immediately. Creates the session if it does not exist. Sending into a session that is already working is a supported steer.
{ "name": "work", "prompt": "implement feature X", "working_dir": "/proj" }Returns {dispatched, name, created, steered, state}.
Launch options (applied only when the session is created): working_dir,
permission_mode, model, effort, allowed_tools, disallowed_tools,
add_dir, append_system_prompt, worktree.
session_wait(name, timeout=300, auto_compact_at=None)
Block until the session finishes, then return the answer. This is the completion trigger — the result comes back as the tool result.
Returns {response, state, timed_out, baseline, elapsed_s, steers}.
timed_out: true— still working. Call again; the pending dispatch survives.baseline: "lost"— the server restarted since the prompt was sent, soresponseis a plain tail of the pane rather than an exact diff.question— present when the session stopped on a prompt.auto_compact_at=70— run/compactautomatically past that context usage.
session_tail(name, lines=40)
Last n lines of pane output, ANSI-stripped. Use this to check on a long task instead of assuming it is stuck.
session_interrupt(name)
Stop the current turn without killing the session. Sends Escape and verifies the session left the busy state; falls back to Ctrl-C only if that fails.
session_respond(name, choice)
Answer a question when state is awaiting_input. choice is an option
number ("1", "2") or a key: up, down, enter, escape. Read the
question from session_status first.
session_status(name) / session_list() / health()
{
"name": "work",
"tmux_alive": true,
"claude_alive": true,
"state": "busy",
"claude_session_id": "02d8d5c3-...",
"working_dir": "/proj",
"context_pct": null,
"pending": true,
"question": null
}state is one of missing, starting, busy, awaiting_input, idle.
session_start(name, ...)
Pre-create a session. Usually unnecessary — session_send does it — but useful
to fix launch options up front. A fresh session is minted a UUID so
claude_run can address the same conversation later.
session_compact(name, focus=None) / session_context(name)
Compress context, or read usage as a percentage. Output quality degrades above
roughly 70% context usage. session_context returns null when the TUI output
cannot be parsed — treat that as unknown, not zero.
session_stop(name) / session_destroy(name)
session_stop kills the tmux session but keeps the conversation, so it can be
resumed later — and so claude_run can address it without transcript
contention. session_destroy forgets it entirely.
claude_run(prompt, session_name=None, ...)
One-shot claude -p with structured output:
{
"result": "...",
"session_id": "75e2167f-...",
"num_turns": 3,
"total_cost_usd": 0.0787,
"duration_ms": 10276
}Pass session_name to resume a managed session's conversation. A live busy
session is refused — two writers corrupt the transcript. fork=True branches
to a new session ID that inherits history, avoiding contention entirely.
Sharing history between print mode and tmux
Sessions get a --session-id at launch, so a conversation is addressable
before it produces any output:
session_send("work", "Remember the codeword: BANANA42")
session_wait("work")
session_stop("work") # free the transcript
claude_run("What was the codeword?", session_name="work")
# → "BANANA42"
session_start("work") # back to interactive, history intactA running TUI holds its history in memory, so it will not display a print-mode
turn until restarted. session_stop first, or use fork=True.
Permissions
Sessions launch with --permission-mode bypassPermissions by default so
unattended runs are not blocked waiting for approval. The real safety control
is allowed_tools — scope each session to what the task actually needs:
session_send("review", "review the diff vs main",
working_dir="/proj", allowed_tools=["Read", "Bash(git *)"])Override per session with permission_mode: acceptEdits, auto,
bypassPermissions, manual, dontAsk, plan.
Parallel work
Independent sessions run concurrently. For several tasks against one repo, use worktrees so they don't collide:
session_send("backend", "fix the auth bug", working_dir="/proj", worktree="auth-fix")
session_send("frontend", "update the header", working_dir="/proj", worktree="header")
session_send("tests", "add API tests", working_dir="/proj", worktree="api-tests")
health() # all sessions and their states at a glanceDevelopment
# Unit tests (no tmux/claude required)
pytest tests/test_parser.py tests/test_session_logic.py -v
# Integration tests (requires tmux + claude, spends tokens)
CLAUDE_TMUX_INTEGRATION=1 pytest tests/test_integration.py -vLicense
MIT — see LICENSE.
Available Tools
15 toolsclaude_runA
Run a one-shot claude -p task and return structured JSON.
Best for work that needs no conversation: review a diff, answer a question, make one contained change. Cheaper and faster than a tmux session.
Pass session_name to resume a managed session's conversation, so one-shot and interactive work share history. A live, busy session is refused (two writers would corrupt the transcript); a live idle one is allowed but the running TUI will not show the turn until restarted. fork=True branches to a new session ID instead, avoiding both issues.
Returns {result, session_id, num_turns, total_cost_usd, duration_ms}.
Always set max_turns to bound cost.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | ||
| fork | No | ||
| model | No | ||
| effort | No | ||
| prompt | Yes | ||
| add_dir | No | ||
| timeout | No | ||
| max_turns | No | ||
| session_name | No | ||
| allowed_tools | No | ||
| permission_mode | No | ||
| disallowed_tools | No | ||
| append_system_prompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses session refusal for busy sessions, TUI behavior for idle ones, fork as a workaround for both, the return format, and a cost-bounding recommendation. Minor gap: no mention of filesystem access or arbitrary command execution, which may be relevant for safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a one-sentence summary, then uses short, purposeful paragraphs for usage guidance, session semantics, and return output. No redundant filler; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 13 parameters, no output schema, and no schema descriptions, this description covers the primary one-shot use case and session interactions well, but is insufficient for full autonomous use because many parameters (permission_mode, allowed_tools, model, effort, etc.) are not explained. It is adequate for basic usage but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains session_name, fork, and max_turns, but leaves cwd, model, effort, add_dir, timeout, allowed_tools, permission_mode, disallowed_tools, and append_system_prompt entirely undocumented, leaving most of the parameter space ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line 'Run a one-shot `claude -p` task and return structured JSON' gives a specific verb and resource, clearly distinguishing it from the session_* siblings. The note about being cheaper and faster than a tmux session further clarifies its unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it: 'Best for work that needs no conversation' with concrete examples. Also provides guidance on session_name and fork behaviors, alternatives, and edge cases like busy vs idle sessions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
healthA
System health check: binary availability + summary of all known sessions.
Returns tmux_available / claude_available (are the binaries on
PATH), session_count, and sessions (SessionInfo dicts).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It explicitly details return values (tmux_available, claude_available, session_count, sessions) and implies a non-destructive read-only health check. It does not explicitly state side effects or prerequisites, but the listed behavior is informative for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences and gets straight to the point: 'System health check' followed by the return payload. Every word earns its place, and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description covers what the tool does and what it returns. It is sufficient for an agent to understand the tool's purpose and output without needing additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage (empty schema), so the description has no parameter details to add. The baseline for 0 params is 4, and the description appropriately focuses on outputs rather than parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'System health check' combining binary availability and session summary. It distinguishes from sibling session-specific tools by including binary path checks and a high-level overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (for a system health check) and provides context that it returns both binary availability and session info. It does not explicitly mention alternatives, but the context is clear enough to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_compactA
Compress the session's context via /compact to recover headroom.
Optionally pass focus to bias what is retained, e.g. "the auth refactor". Output quality degrades above ~70% context usage, so compact before then.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| focus | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the compaction mechanism, optional focus to bias retention, and a quality degradation threshold. However, it does not explicitly state that compaction is lossy or irreversible, nor what happens to existing messages. With no annotations, this leaves meaningful gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the core action. Each sentence adds value: the mechanism, the optional parameter, and the usage threshold. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the primary purpose and includes a practical threshold, but omits the `name` parameter, return value (no output schema), and side effects of compaction. For a session-management tool with no annotations or schema descriptions, this is only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the `focus` parameter with an example but completely omits the required `name` parameter. Given 0% schema description coverage, this is a significant deficiency because the agent has no clue what `name` refers to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action (compress session context) via a specific mechanism (`/compact`) and purpose (recover headroom). This distinguishes it from sibling session-management tools that focus on lifecycle or messaging.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete threshold for when to use (above ~70% context usage) and explains why (output quality degrades). It does not explicitly name alternatives, but the threshold gives clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_contextA
Run /context and report context usage as a percentage.
Returns {name, context_pct}. context_pct is null when the TUI
output cannot be parsed — treat that as unknown, not as zero.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses important behavior: `context_pct` may be null if parsing fails and should be treated as unknown, not zero. This is valuable beyond a generic 'get context usage' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the command and output. The null-handling note is essential and earns its place. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the return format and the null case. However, the meaning of the 'name' parameter is not explained, which is a notable gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one required parameter 'name' with no description, and schema description coverage is 0%. The description does not explain what 'name' refers to (presumably a session name), leaving the agent without needed semantic information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: running `/context` and reporting context usage as a percentage. This is a specific verb+resource pair that distinguishes it from sibling session management tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like session_status or health. There is no mention of prerequisites, exclusions, or preference over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_destroyA
Kill the tmux session and remove its stored metadata.
Do this when a task is finished — tmux sessions outlive this server. Do not
use it to stop a slow run; use session_interrupt for that.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral disclosure burden. It clearly states the destructive action (kill) and side effect (remove metadata), plus relevant context about tmux session longevity. However, it omits details like reversibility or confirmation requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action. The second sentence adds critical usage differentiation without any fluff, making it perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, this is largely complete: it covers the action, when to use, when not to use, and an alternative. Its only gap is not addressing expected return values or permanent termination confirmation, but the core context is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines a single required string parameter 'name' with no description coverage. The tool description implies that 'name' refers to the tmux session, but it never explicitly states this mapping or provides formatting details, leaving some ambiguity for a 0% schema coverage case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses an active verb ('Kill') with a specific resource ('tmux session') and a secondary action ('remove its stored metadata'). It explicitly contrasts with session_interrupt, making the unique purpose clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool ('when a task is finished') and when not to ('Do not use it to stop a slow run'), naming the alternative tool (session_interrupt). This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_interruptA
Stop the current turn without killing the session.
Sends Escape (Claude Code's own interrupt), verifies the session left the
busy state, and only falls back to Ctrl-C if Escape did not take. Follow up
with session_send to redirect.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does excellently. It discloses the internal mechanism: sends Escape, verifies the session leaves busy state, falls back to Ctrl-C, and suggests subsequent redirection. This is rich behavioral context beyond what structured fields would provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise, front-loaded sentences. Every sentence adds value: purpose, method, and follow-up. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema or annotations, the description covers the main behavior, fallback logic, and next steps. However, the missing parameter semantics reduce completeness, so it earns a 4 rather than a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the only parameter 'name' lacks any explanation. The description never states that 'name' is the session identifier. It mentions 'session_send' but does not clarify the required parameter, leaving a significant gap for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Stop the current turn without killing the session.' This clearly differentiates from session_stop, which likely ends the session, by explicitly contrasting with 'not killing the session.' The verb 'stop' and the scope 'current turn' give precise purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical usage context: it interrupts the current turn, verifies the session leaves the busy state, and falls back to Ctrl-C if needed. It also advises a follow-up action ('Follow up with session_send to redirect'). However, it does not explicitly state when not to use it or compare to alternative siblings, but the intent is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_listA
List all managed sessions (metadata) plus any live tmux sessions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the transparency burden. It discloses that the tool returns both managed session metadata and live tmux sessions, which is meaningful behavioral context. The verb 'List' implies a read-only operation, but the description does not explicitly state safety, side effects, or error behavior. For a zero-parameter list tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence containing exactly the necessary information. It has no filler or redundancy, earning a perfect score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (no parameters, no output schema), the description adequately covers what the tool does. It states the contents of the list (metadata and live tmux sessions), though it does not detail the output format. This is sufficient for an agent to invoke the tool correctly in most contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters (0 params, 0 required), so there is nothing for the description to clarify. A baseline score of 4 is appropriate, as the description correctly adds no parameter-specific noise.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and clearly names the resource: 'managed sessions (metadata)' plus 'live tmux sessions'. This distinguishes it from sibling tools like session_status or session_context, which operate on individual sessions rather than enumerate all sessions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (enumerate all sessions) but does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions. The phrase 'plus any live tmux sessions' hints at scope, but there is no direct guidance like 'for status of a specific session, use session_status instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_respondA
Answer an on-screen prompt when state is awaiting_input.
choice is an option number ("1", "2", ...) or a navigation key: up,
down, enter, escape. Read the question first via session_status.
Launch dialogs (workspace trust, bypass-permissions, effort) are handled automatically — this is only for questions Claude itself asks.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| choice | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It explains the trigger condition and valid input format for `choice`, but does not disclose error behavior, side effects, or what happens if called outside the allowed state. The exclusion of launch dialogs is useful context, but more is needed for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is succinct and well-structured: purpose, input format, and exclusion are each covered in distinct, focused sentences. No redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description covers the core usage and preconditions. However, with no output schema, it fails to mention return values or post-response behavior, and the `name` parameter is undefined. These gaps make it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description thoroughly explains the `choice` parameter (option number or navigation key), but leaves the required `name` parameter completely unexplained. Since schema description coverage is 0%, the description must compensate for all parameters, and the omission of `name` is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the tool's function: answering an on-screen prompt, with a specific condition (`state` is `awaiting_input`). This distinguishes it from sibling tools like `session_send` or `session_wait`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use guidance (`state` is `awaiting_input`), a when-not exclusion (launch dialogs are handled automatically), and a prerequisite (read the question via `session_status`). It does not explicitly name an alternative tool for sending input, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_sendA
Send prompt to a session and return immediately (non-blocking).
Creates the session if it does not exist — no session_start needed. Call
session_wait to collect the answer, or session_tail to watch progress.
Sending while Claude is working is supported and is how you steer a run
mid-flight; the input is queued and the pending result still spans the whole
run. The returned steered field says which happened.
Launch options apply only when the session is created. Set working_dir on the first send.
Returns {dispatched, name, created, steered, state}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| model | No | ||
| effort | No | ||
| prompt | Yes | ||
| add_dir | No | ||
| worktree | No | ||
| working_dir | No | ||
| allowed_tools | No | ||
| permission_mode | No | ||
| disallowed_tools | No | ||
| claude_session_id | No | ||
| append_system_prompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden and does so admirably. It discloses non-blocking behavior, automatic session creation, queuing of input while Claude is working, the meaning of the `steered` field, and the return structure. This gives the agent a solid mental model beyond the tool's basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a clear lead sentence, followed by a short creation note, retrieval pointers, and a concise behavioral caveat. It uses emphasis and formatting effectively without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers core usage, non-blocking semantics, session creation, and return value shape, making it complete for typical use cases. However, it omits details about optional parameters (beyond a generic 'launch options' grouping), so advanced or configuration-heavy invocations may require external knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only clarifies `working_dir` ('Set *working_dir* on the first send') and vaguely groups other inputs as 'launch options.' The remaining 10 parameters (e.g., `effort`, `add_dir`, `permission_mode`) are left unexplained, which is a significant gap for a tool with 12 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Send *prompt* to a session and return immediately (non-blocking).' It clearly distinguishes itself from sibling tools by noting that no `session_start` is needed and by pointing to `session_wait` and `session_tail` for result collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states when to use this tool (to send a prompt without blocking) and provides explicit alternatives: 'Call `session_wait` to collect the answer, or `session_tail` to watch progress.' It also explains the mid-flight steering use case and notes that launch options only apply when the session is created, offering clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_set_claude_idA
Bind an existing Claude conversation ID to name for future --resume.
Only needed to adopt a session this server did not create — new sessions are assigned an ID automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| claude_session_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does explain the binding action and the adoption context, but it doesn't disclose whether the operation overwrites an existing binding, validates the session ID, or what happens on conflict. For a mutation-like operation, this leaves some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two crisp sentences deliver the purpose, usage condition, and exclusion. Every word earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two string parameters and no output schema, the description covers the core functionality and required conditions. It misses potential details like error behavior or whether the ID must already exist, but given the simplicity, the description is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description provides the only semantic clue. It does indicate that `name` is the target name and `claude_session_id` is the existing ID to bind, which gives basic meaning. However, it doesn't mention constraints like uniqueness or format of the name/ID, so it only partially compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Bind' and clearly identifies the resource ('an existing Claude conversation ID') and the target ('to *name* for future `--resume`'). It distinguishes this from sibling session tools by explaining it's only for adopting sessions not created by the server, which is a unique purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('Only needed to adopt a session this server did not create') and when not to use ('new sessions are assigned an ID automatically'). This gives clear guidance on the preconditions and distinguishes it from the normal session creation flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_startA
Pre-create a Claude Code session. Usually unnecessary — session_send
creates one on demand — but useful to fix launch options up front.
An existing tmux session called name is returned as-is.
A fresh session is minted a UUID (
--session-id) soclaude_runcan address the same conversation later; a stored or supplied claude_session_id triggers--resumeinstead.permission_mode: one of acceptEdits, auto, bypassPermissions, manual, dontAsk, plan. Defaults to
bypassPermissionsso unattended runs are not blocked by approval prompts — restrict with allowed_tools instead.worktree: run in an isolated git worktree at
.claude/worktrees/<name>.effort: low, medium, high, xhigh, max.
Launch options are stored and reused if the session is recreated.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| model | No | ||
| effort | No | ||
| add_dir | No | ||
| worktree | No | ||
| working_dir | No | ||
| allowed_tools | No | ||
| permission_mode | No | ||
| disallowed_tools | No | ||
| claude_session_id | No | ||
| append_system_prompt | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It thoroughly explains side effects: existing tmux sessions are returned as-is, fresh sessions are minted a UUID, claude_session_id triggers resume, default permission mode is bypassPermissions for unattended runs, worktree creates an isolated git worktree, and launch options are stored and reused. This is excellent transparency about behavior and defaults.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a front-loaded purpose and bullet-pointed details. It avoids fluff, and each bullet adds distinct value. However, it is somewhat longer than necessary, and some details (like effort values) could be implied from schema defaults, though schema has no descriptions. Still, it earns a solid 4 for organization and efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, no annotations, no output schema), the description covers many important behavioral aspects: session behavior, UUID minting, resume, permission mode, worktree, and launch option reuse. It does not explicitly describe return values or error conditions, and it omits explanations for several parameters. However, the coverage is substantial and would likely enable an agent to use the tool correctly in most cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for several parameters: permission_mode with enumerated values and default, worktree with path pattern, effort values, claude_session_id resume behavior, and allowed_tools as a restriction. However, it leaves 5 of 11 parameters unexplained (model, add_dir, working_dir, disallowed_tools, append_system_prompt), some of which are not self-evident. It covers the key parameters but the gaps prevent a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Pre-create a Claude Code session' with a clear verb and resource, and immediately distinguishes from the sibling tool session_send ('creates one on demand'). This goes beyond a simple definition by explaining the specific use case of fixing launch options up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description directly addresses when to use this tool: 'Usually unnecessary' for most cases, but 'useful to fix launch options up front.' It explicitly names session_send as the alternative that creates sessions on demand. This provides clear usage guidance and a when-not-to-use caveat.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_statusA
Return state info for one session.
state is one of: missing, starting, busy, awaiting_input,
idle. When it is awaiting_input, question holds the on-screen
question and its options. pending means a dispatched prompt has not
been collected by session_wait yet. context_pct is null unless
/context output happens to be on screen.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It transparently explains the state enum, the meaning of 'pending', and conditional fields like 'question' and 'context_pct', providing useful context beyond a simple status message.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tight and well-structured, using code-formatted state values and brief clauses. Every sentence adds useful detail without filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers key state semantics and edge cases, such as conditional fields and pending behavior. It could be slightly improved by referencing the name parameter or usage context, but for a narrow single-parameter tool it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description never mentions the required 'name' parameter. The phrase 'one session' implies the name identifies the session, but the description adds no explicit semantic beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('state info for one session'), clearly distinguishing it from session_list. It also enumerates possible state values, reinforcing the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit guidance on when to use this tool versus siblings like session_wait or session_list. The intended use is inferable from the purpose, but no exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_stopA
Kill the tmux session but keep the conversation.
Use this to free a session's transcript — so claude_run can address it
without contention — while keeping the ability to resume it later with
session_start. Use session_destroy to forget it entirely.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It clearly states that the tool kills the tmux session but preserves the conversation, and that resuming is possible later with session_start. This is good behavioral transparency, though it could be more explicit about whether the session is terminated abruptly or any side effects, but it is effective.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the core action, and the following sentences provide usage guidance and alternatives. Every sentence earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, use case, and relationship to sibling tools. For a simple tool with one parameter and no output schema, it is adequately complete. It lacks mention of error handling or prerequisites, but these are not critical for the tool's simple function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not explicitly describe the 'name' parameter. However, the tool name and description make it clear that 'name' refers to the tmux session to stop, and the context adds meaning beyond the generic schema field. Given the single simple parameter, this is adequate but could be improved by explicitly stating the parameter's role.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Kill the tmux session but keep the conversation.' It distinguishes itself from sibling tools by explicitly mentioning session_destroy for forgetting entirely and session_start for resuming, making its unique purpose obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: use this to free a session's transcript so claude_run can address it without contention, and use session_destroy to forget it entirely. It also names session_start for resuming, giving clear when-to-use and alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_tailA
Peek at the last lines of pane output without blocking.
Use this to check on a long-running task instead of assuming it is stuck.
Returns {name, state, output}.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| lines | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the key non-blocking behavior, the read-only nature implied by 'peek', and the return shape {name, state, output}. It does not detail error handling or edge cases, but for a simple read operation it is adequately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, only 26 words, and the primary purpose is front-loaded. Every word earns its place with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description covers the essential context: when to use, the non-blocking nature, and the return structure. It does not elaborate on parameter details or edge cases, but given the simplicity and sibling context, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter explanations. It implicitly references the 'lines' parameter via '*lines*' but does not explicitly explain its meaning or the 'name' parameter beyond hinting it identifies a pane. The schema already provides types and defaults, but additional explicit parameter context would be better.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb ('peek'), a specific resource ('pane output'), and a precise scope ('last *lines*'). It also explicitly contrasts with blocking operations, making it distinct from sibling tools like session_wait.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: 'use this to check on a long-running task instead of assuming it is stuck.' It does not name alternative tools explicitly, but the advice to avoid blocking implies a clear scenario and distinguishes it from blocking wait/status operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_waitA
Block until the session finishes its pending work, then return the answer.
This is the completion trigger: it returns Claude's final response as the tool result.
Resumable. If timeout (seconds, max 3600) elapses while Claude is
still working, this returns timed_out: true with the partial transcript
and keeps the pending dispatch — just call it again. Nothing is lost.
Set auto_compact_at (e.g. 70) to run /compact automatically when context
usage crosses that percentage after the turn completes.
Returns {response, state, timed_out, baseline, elapsed_s, steers}.
baseline: "lost" means this server restarted since the prompt was sent,
so response is a plain tail of the pane rather than an exact diff.
A question field appears when the session stopped on a prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| timeout | No | ||
| auto_compact_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the load. It discloses blocking behavior, resumability, timeout semantics, auto_compact behavior, return fields, and even edge cases like baseline lost and question field. This is exemplary transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening purpose, bolded 'Resumable' for key behavior, and concise paragraphs for parameters and return values. Every sentence adds value, and the formatting enhances scannability without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains all return fields and edge cases. It covers the tool's complexity (timeout, resumability, auto-compact) and is complete for a blocking wait operation. Given the sibling context, it is fully sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It explains 'timeout' with max 3600 and its timeout behavior, and 'auto_compact_at' with an example and effect. 'name' is not explicitly described, but its purpose is clear from context (session name). Overall, the description adds meaningful semantics beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Block until the session finishes its pending work, then return the answer' and explicitly calls it 'the completion trigger,' which distinguishes it from sibling tools like session_send or session_tail. The verb 'block' and resource 'session' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is the completion trigger—implying use after dispatching work—and provides guidance on resumability ('just call it again') and timeout behavior. However, it does not explicitly name alternatives or list scenarios where another tool should be used, so it lacks full exclusionary guidance.
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. Dates show when Glama detected each change.
15 tool updates
v0.1.0- First observed
claude_run - First observed
health - First observed
session_compact - First observed
session_context - First observed
session_destroy - First observed
session_interrupt - First observed
session_list - First observed
session_respond - First observed
session_send - First observed
session_set_claude_id - First observed
session_start - First observed
session_status - First observed
session_stop - First observed
session_tail - First observed
session_wait
TDQS
Most tools have clearly distinct purposes, but session_stop and session_destroy both kill the tmux session, differentiated only by keeping metadata. Also, session_status, session_context, and session_tail all read session state, though they target different aspects. Descriptions clarify the boundaries sufficiently.
The vast majority follow a consistent session_<verb> pattern (list, start, send, wait, tail, respond, interrupt, status, compact, destroy, stop). The claude_run tool deviates by using a different prefix, but it is still a clear, readable name that fits the server's purpose.
At 15 tools, it sits at the upper edge of the ideal range. Each tool covers a distinct aspect of session lifecycle or health, so the count feels justified rather than bloated. It is slightly heavy but not excessive for the domain.
The tool set covers the full session lifecycle: create, send, wait, tail, respond, interrupt, compact, stop, destroy, plus one-shot execution and health/context checks. There are no obvious missing operations that would leave an agent stuck.
Maintenance
Related MCP Connectors
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server that enables multi-agent collaboration with task lists, inter-agent messaging, and tmux-based spawning, making Claude Code's agent teams protocol available to any MCP client.281MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for orchestrating multiple Claude Code instances via tmux, enabling spawning, reading, sending, listing, and killing sessions.182MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that manages interactive CLI agent pools using tmux, enabling creation, control, and communication with agents like Claude and Codex.7-
- AlicenseAqualityDmaintenanceAn MCP server that connects Claude Desktop to an interactive Claude Code session running in a tmux terminal.1MIT
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/joschi655/claude-code-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server