claude-sessions-mcp
Lets Claude manage tmux sessions on Linux — start long-running ML training jobs, check their output, send keystrokes, and kill them.
README
Claude tmux Sessions
Lets Claude Desktop on Linux start, monitor, and control long-running jobs inside tmux sessions. Designed for ML training, data pipelines, and anything else you want to survive beyond a single conversation.
Claude can start a detached training run, check on it an hour later by capturing the last N lines of its pane, send keystrokes (including Ctrl+C), and kill the session when done. You can tmux attach -t <name> from any real terminal to watch the same session live — Claude and a human can observe simultaneously.
Requirements
- Linux with
tmuxinstalled:sudo apt install tmux - Works with the default per-user tmux server (no shared-server setup needed).
Install (Claude Desktop)
- Download the latest
Sessions.mcpbfrom the Releases page. - In Claude Desktop: Settings → Extensions → Extension Developer → Install Extension → pick the
.mcpb. - Enable the extension.
Tools
| Tool | Annotation | What it does |
|---|---|---|
list_sessions |
read-only | All tmux sessions with name, windows, created/activity timestamps, attached flag |
has_session |
read-only | Exact-match check for a session name |
list_windows |
read-only | Windows within a session (index, name, active, pane count) |
capture_pane |
read-only | Last N lines of the session's active pane (default 100, max 10000) |
new_session |
destructive | Start a detached session; optionally run an initial shell command |
send_keys |
destructive | Send key combos or text to the active pane (Enter appended by default) |
kill_session |
destructive | Terminate a session (sends SIGHUP to all processes inside) |
Example workflows
Start a training run:
"Start training run
b8-c1: activate myrdna4-trainvenv and run 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"
Check on it later:
"Is training
b8-c1still going? Show me the last 50 lines."
capture_pane name=b8-c1 lines=50
Interrupt a hung run:
"The training is stuck — send Ctrl+C."
send_keys name=b8-c1 keys="C-c" enter=false
Wrap up:
"Kill the session."
kill_session name=b8-c1
Key notation
send_keys accepts either literal text (sent as keystrokes) or tmux key names. Common ones:
| Keys | Effect |
|---|---|
C-c |
Ctrl+C (interrupt) |
C-d |
Ctrl+D (EOF / logout) |
Escape |
Escape key |
Up, Down, Left, Right |
Arrow keys |
Enter |
Enter (also appended automatically when enter is true) |
Space |
Space |
Pass enter: false when sending raw combos so you don't get an extra Enter after.
Privacy policy
This extension runs entirely on your local machine and shells out only to the tmux binary. No data leaves your machine. No network I/O. No sockets. No files written outside of tmux's own per-user server socket (default /tmp/tmux-$UID/default).
The information visible to Claude includes session names, pane contents (the text you or your programs have printed), and session metadata (created/activity timestamps, window/pane counts). send_keys and kill_session can affect any process running inside a managed session, so treat it with the same trust level you'd give to a user typing into your terminal.
Troubleshooting
"tmux is not installed" — run sudo apt install tmux.
"can't find pane" errors — generally means the named session was killed mid-operation. Call has_session first, or use list_sessions to see what's actually running.
Session name restrictions — names cannot contain ., :, |, or whitespace. The . and : are tmux target separators; | is this server's field delimiter; whitespace is rejected on principle.
Session doesn't survive my initial command — by design, new_session always starts a shell; the command argument is sent as keystrokes into that shell. That's what keeps the session alive after the command finishes. If you passed command directly to tmux new-session it would exit when the command did.
Development
Single ~300-line Node.js script, zero npm dependencies. Rebuild the .mcpb:
cd bundle-source
zip -j ../Sessions.mcpb manifest.json package.json server.js README.md LICENSE icon.png glama.json
License
MIT. See LICENSE.
Related
- claude-terminal-mcp — shell, filesystem, and background jobs (for shorter-lived commands where tmux would be overkill).
- claude-linux-mcp — X11 desktop control.
- claude-rocm-mcp — AMD GPU monitoring; use alongside this one to check GPU health during training.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.