claude-sessions-mcp
Sesiones de tmux para Claude
Permite a Claude Desktop en Linux iniciar, supervisar y controlar trabajos de larga duración dentro de sesiones de tmux. Diseñado para entrenamiento de ML, tuberías de datos y cualquier otra cosa que desees que sobreviva más allá de una sola conversación.
Claude puede iniciar una ejecución de entrenamiento en segundo plano, comprobarla una hora después capturando las últimas N líneas de su panel, enviar pulsaciones de teclas (incluyendo Ctrl+C) y finalizar la sesión cuando termine. Puedes usar tmux attach -t <name> desde cualquier terminal real para ver la misma sesión en vivo: Claude y un humano pueden observar simultáneamente.
Requisitos
Linux con
tmuxinstalado:sudo apt install tmuxFunciona con el servidor tmux predeterminado por usuario (no se necesita una configuración de servidor compartido).
Related MCP server: Tmux MCP Server
Instalación (Claude Desktop)
Descarga el archivo
Sessions.mcpbmás reciente desde la página de Releases.En Claude Desktop: Settings → Extensions → Extension Developer → Install Extension → selecciona el archivo
.mcpb.Habilita la extensión.
Herramientas
Herramienta | Anotación | Qué hace |
| solo lectura | Todas las sesiones de tmux con nombre, ventanas, marcas de tiempo de creación/actividad, indicador de adjunto |
| solo lectura | Comprobación de coincidencia exacta para un nombre de sesión |
| solo lectura | Ventanas dentro de una sesión (índice, nombre, activo, recuento de paneles) |
| solo lectura | Últimas N líneas del panel activo de la sesión (predeterminado 100, máximo 10000) |
| destructiva | Inicia una sesión en segundo plano; opcionalmente ejecuta un comando de shell inicial |
| destructiva | Envía combinaciones de teclas o texto al panel activo (Enter se añade por defecto) |
| destructiva | Termina una sesión (envía SIGHUP a todos los procesos internos) |
Flujos de trabajo de ejemplo
Iniciar una ejecución de entrenamiento:
"Inicia la ejecución de entrenamiento
b8-c1: activa mi venvrdna4-trainy ejecuta train.py."
new_session name=b8-c1 command="source ~/.venvs/rdna4-train/bin/activate && python /media/luke/Storage\ Device\ 1/NeuroForge/train.py b8-c1"
Comprobarla más tarde:
"¿Sigue en marcha el entrenamiento
b8-c1? Muéstrame las últimas 50 líneas."
capture_pane name=b8-c1 lines=50
Interrumpir una ejecución bloqueada:
"El entrenamiento está bloqueado: envía Ctrl+C."
send_keys name=b8-c1 keys="C-c" enter=false
Finalizar:
"Finaliza la sesión."
kill_session name=b8-c1
Notación de teclas
send_keys acepta texto literal (enviado como pulsaciones de teclas) o nombres de teclas de tmux. Los más comunes:
Teclas | Efecto |
| Ctrl+C (interrupción) |
| Ctrl+D (EOF / cerrar sesión) |
| Tecla Escape |
| Teclas de flecha |
| Enter (también se añade automáticamente cuando |
| Espacio |
Usa enter: false al enviar combinaciones sin procesar para que no se añada un Enter adicional al final.
Política de privacidad
Esta extensión se ejecuta completamente en tu máquina local y solo interactúa con el binario tmux. Ningún dato sale de tu máquina. Sin E/S de red. Sin sockets. No se escriben archivos fuera del socket del servidor por usuario de tmux (predeterminado /tmp/tmux-$UID/default).
La información visible para Claude incluye nombres de sesión, contenido de los paneles (el texto que tú o tus programas han impreso) y metadatos de la sesión (marcas de tiempo de creación/actividad, recuentos de ventanas/paneles). send_keys y kill_session pueden afectar a cualquier proceso que se ejecute dentro de una sesión gestionada, así que trátalo con el mismo nivel de confianza que le darías a un usuario escribiendo en tu terminal.
Solución de problemas
"tmux is not installed" — ejecuta sudo apt install tmux.
Errores de "can't find pane" — generalmente significa que la sesión nombrada se cerró durante la operación. Llama primero a has_session o usa list_sessions para ver qué se está ejecutando realmente.
Restricciones de nombre de sesión — los nombres no pueden contener ., :, | o espacios en blanco. Los caracteres . y : son separadores de destino de tmux; | es el delimitador de campo de este servidor; los espacios en blanco se rechazan por principio.
La sesión no sobrevive a mi comando inicial — por diseño, new_session siempre inicia un shell; el argumento command se envía como pulsaciones de teclas a ese shell. Eso es lo que mantiene la sesión viva después de que el comando termina. Si pasaras command directamente a tmux new-session, se cerraría cuando el comando terminara.
Desarrollo
Script de Node.js de unas 300 líneas, cero dependencias npm. Reconstruye el .mcpb:
cd bundle-source
zip -j ../Sessions.mcpb manifest.json package.json server.js README.md LICENSE icon.png glama.jsonLicencia
MIT. Consulta LICENSE.
Relacionado
claude-terminal-mcp — shell, sistema de archivos y trabajos en segundo plano (para comandos de menor duración donde tmux sería excesivo).
claude-linux-mcp — control de escritorio X11.
claude-rocm-mcp — monitorización de GPU AMD; úsalo junto con este para comprobar el estado de la GPU durante el entrenamiento.
Available Tools
7 toolscapture_paneARead-only
Capture the last N lines visible in the session's active pane (default 100, max 10000). Returns the joined text. The primary primitive for "is my training still running? show me the latest output".
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Session name. | |
| lines | No | Number of lines to capture (default 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and non-destructive behavior. The description adds that it captures from the 'active pane' and returns 'joined text', which is useful behavioral context beyond annotations.
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: first technical with defaults/limits, second a relatable use case. No wasted words, information is front-loaded and clear.
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-only tool with two parameters and no output schema, the description covers purpose, behavior, parameters, and use case fully. No gaps.
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?
Input schema has 100% coverage with descriptions for both parameters. The description adds the default value for 'lines' (100), which is not in the schema, giving minor additional value. Baseline 3 is appropriate.
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 action ('Capture the last N lines'), the resource ('session's active pane'), defaults and limits, and a concrete use case. It distinguishes from sibling tools which manage sessions or send keys, not capture output.
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 a clear context for use ('is my training still running?') but does not explicitly state when not to use or name alternatives. However, the sibling tools imply that this is the sole tool for capturing output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
has_sessionARead-only
Check whether a named tmux session exists. Cheap precondition for capture_pane, send_keys, or kill_session.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Session name. Cannot contain ".", ":", "|", or whitespace. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. Description adds that the operation is 'cheap', which is valuable behavioral context beyond annotations.
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, no wasted words, front-loaded with purpose. Efficient and clear.
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 simplicity of the tool (one parameter, no output schema), the description is complete: it explains purpose, usage context, and constraint hints.
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 100% with the parameter name described and constraints noted. Description does not add additional semantic meaning beyond what the schema provides, so baseline 3 is appropriate.
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?
Description clearly states the tool checks if a tmux session exists, using a specific verb and resource. It distinguishes itself from sibling tools by mentioning it's a precondition for three specific actions.
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?
Description explicitly states it's a cheap precondition for capture_pane, send_keys, or kill_session, providing clear usage context. No exclusions or alternatives are mentioned, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_sessionADestructive
Terminate a named tmux session. Any processes running inside are sent SIGHUP by tmux. Errors if the session does not exist.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Session name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds beyond annotations: details SIGHUP behavior and error condition if session does not exist. Matches destructiveHint.
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 primary purpose. 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?
Complete for a simple kill tool with one parameter and no output schema. Covers purpose, behavior, and error case.
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 has 100% coverage but only a minimal description for the 'name' parameter. No additional semantics added in tool description.
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?
Clearly states 'Terminate a named tmux session' with a specific verb-resource pair. Distinct from sibling tools like capture_pane or list_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?
Conveys when to use (to terminate a session) and mentions consequences (SIGHUP, error if missing). Could note alternatives but sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sessionsARead-only
List all tmux sessions on the current user's tmux server. Returns name, window count, created/activity timestamps (ISO 8601), and attached status. Returns an empty list when no tmux server is running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and destructiveHint. Description adds beyond that by detailing return fields (ISO 8601 timestamps, attached status) and the edge case of an empty list when no tmux server is running.
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, front-loaded with the main action, and every word adds value. 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?
Given no parameters, no output schema, and annotations, the description fully covers what the tool does, its return values, and a key edge case (no server running).
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?
No parameters exist, and schema coverage is 100% (trivially). Per guidelines for 0 parameters, baseline is 4. Description does not need to add parameter details.
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?
Description clearly states 'List all tmux sessions' with specific return fields (name, window count, timestamps, attached status). It distinguishes from sibling tools like kill_session and new_session by focusing on listing only.
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 for reading sessions, not modifying them. However, it does not explicitly state when not to use or mention alternatives. The context from sibling tools helps, but clarity could be improved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_windowsARead-only
List windows within a named session (index, name, active flag, pane count).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Session name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds the return fields (index, name, active flag, pane count). However, it does not disclose behavior if the session does not exist or any other edge cases. Adds some context but not rich behavioral details.
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, concise sentence (12 words) with no wasted words. It is front-loaded with the action 'List windows' and immediately clarifies scope and return fields.
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-only list tool with 1 parameter and no output schema, the description is fairly complete: it specifies what it does, what it returns, and the required input. It could mention that the session must exist, but that is implied. Sibling tools provide 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?
Schema coverage is 100% (the only parameter 'name' is described as 'Session name'). The description reinforces that the session is named but adds no new semantic meaning beyond the schema. Baseline 3 for high coverage.
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 verb 'List' and the resource 'windows within a named session', and specifies return fields (index, name, active flag, pane count). This distinguishes it from sibling tools like list_sessions (list sessions) and capture_pane (capture pane output).
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 when you have a session name and want to see its windows, but does not explicitly state when to use this tool versus alternatives like list_sessions or when not to use it. No guidance on prerequisites (e.g., session must exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_sessionADestructive
Start a new detached tmux session. Always starts a shell (so the session survives after the initial command finishes). If command is given, it is sent to the shell as keystrokes + Enter, so aliases, venvs, and functions work as expected. Errors if the session name already exists.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Session name (unique). Cannot contain ".", ":", "|", or whitespace. | |
| command | No | Optional initial command to run inside the shell (e.g. "cd /path && python train.py"). | |
| cwd | No | Optional starting working directory for the session. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant behavioral details beyond annotations: detached, always starts shell, command sent as keystrokes enabling aliases, errors on duplicate name. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no waste. First sentence states purpose, second explains key behavior, third clarifies command detail and error condition. Front-loaded and efficient.
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 purpose, behavior, error conditions, and parameter semantics. No output schema needed. Complete for a creation tool with 3 parameters.
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 100%, so baseline is 3. Description adds key nuance: command is sent as keystrokes + Enter, preserving aliases and venvs. This raises the 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 clearly states the tool starts a new detached tmux session, which is a specific verb + resource. It distinguishes from siblings like 'kill_session' by focusing on creation.
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?
Describes when to use (to start a session) and conditions: always starts a shell, errors if name exists. No explicit comparison to alternatives, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_keysADestructive
Send key combos or text to the session's active pane. Use for interrupts (C-c), end-of-input (C-d), or typing a command. Text is sent literally. Enter is appended by default; set enter=false for raw key combos.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Session name. | |
| keys | Yes | Key combo (e.g. "C-c", "C-d", "Escape") or literal text to type. | |
| enter | No | Append an Enter keypress after the keys. Default true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and open-world hints; the description adds detail: text is sent literally, Enter appended by default, and raw combos require enter=false. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, front-loaded with purpose, then specific guidelines. 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 key behavioral aspects; lacks description of return values, but given no output schema and the nature of the action (send), this is acceptable. Sibling tools are listed for 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?
Schema covers 100% of parameters; description enriches meaning by explaining literal sending and enter default behavior, going beyond what the schema provides.
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 verb (send), resource (key combos or text to session's active pane), and specific use cases (interrupts, end-of-input, typing a command). It distinguishes from sibling tools like capture_pane or kill_session.
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 (interrupts, end-of-input, typing) and explains the enter parameter behavior. Does not explicitly mention when not to use or alternatives among siblings, but sibling tools are sufficiently different.
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.
7 tool updates
v0.1.0- First observed
capture_pane - First observed
has_session - First observed
kill_session - First observed
list_sessions - First observed
list_windows - First observed
new_session - First observed
send_keys
TDQS
Scored across 7 tools
Each tool has a clearly distinct purpose: creation, output capture, listing sessions/windows, existence check, input sending, and termination. No two tools overlap in functionality, making misselection unlikely.
All tools follow a consistent verb_noun pattern in lowercase snake_case (e.g., new_session, capture_pane, list_sessions). The naming is uniform and predictable, with no stylistic deviations.
7 tools is a well-scoped set for tmux session management, covering the essential lifecycle operations without redundancy or bloat. Each tool serves a clear purpose.
The surface covers the core lifecycle (create, read, check, update via send_keys, delete) adequately. Minor gaps exist, such as no rename or attach/detach operations, but these are not critical for typical usage and can be worked around.
Maintenance
Related MCP Connectors
Work on your own computers from Claude or ChatGPT: run commands, edit and search files.
Use your Mac, Windows or Linux computer from ChatGPT, Claude or Codex: files, commands, documents.
Run UX research from Claude — create card sort studies, list studies, pull headline stats.
I run shell commands on your private cloud environment (bash, sh, zsh)
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive tmux session management through MCP, allowing users to list sessions, send commands, set up automated messaging timers, and control tmux processes directly from Claude Desktop. Provides both real-time session monitoring and automated workflow features like exit/continue cycles.2MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage local tmux sessions, including creating and controlling sessions, windows, and panes, sending commands, and capturing terminal output.168 npmDo What The F*ck You Want To Public
- FlicenseNot gradedqualityDmaintenanceEnables Claude to execute commands and manage directory-aware panes within tmux sessions for a shared terminal experience. It features smart output capture, interactive prompt detection, and background task management.2-
- AlicenseNot gradedqualityDmaintenanceEnables Claude to control tmux sessions, manage windows and panes, and search/extract text from terminal output.2MIT