Interminal
Lightweight MCP server that gives AI assistants terminal access — SSH and local shells — with support for interactive and long-running commands.
Installation
# Run directly, no install needed (recommended)
uvx mcp-interminal
# Or install permanently
pip install mcp-interminal
Requires Python ≥ 3.11.
MCP Client Configuration
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"interminal": {
"command": "uvx",
"args": ["mcp-interminal"]
}
}
}
Cursor / other clients: same command + args format above.
Tools
| Tool | Description |
|---|---|
connect_ssh |
Connect to an SSH server; returns session_id and welcome banner |
execute |
Run a command locally (no session needed) or over SSH; returns output or status=partial + command_id |
read_output |
Poll a running command for new output without sending input |
respond |
Send text input to a command waiting at a prompt |
send_control |
Send control keys: ctrl+c, ctrl+z, arrow keys, F-keys, etc. |
disconnect |
Close an SSH session and release all resources |
Recommended: Install Zellij
Each execute call runs in an isolated channel — there is no persistent shell between calls. For simple tasks, chaining with && works. For multi-step workflows (project development, debugging, deployment), a terminal multiplexer provides persistent state that survives across calls.
Zellij is strongly recommended on the host machine (local or remote):
# Linux / macOS / WSL
cargo install zellij # or: brew install zellij
# Check if installed
zellij --version
With Zellij installed, the AI agent will automatically create a persistent session where cd, environment variables, virtual environments, and long-running processes carry over naturally. As a bonus, you can run zellij attach <session-name> to watch the AI's terminal work in real-time.
Key Behaviors
- Stateless execute — each call is an isolated channel;
cd /foodoes not persist. Simple tasks: chain with&&. Multi-step workflows: the AI will use a Zellij session for persistent state - Long-running commands return
status="partial"with acommand_id; poll withread_outputor send input withrespond - TUI apps (zellij, vim, htop) must be started in the foreground — never background with
&; after the server daemonizes, the partial channel can be abandoned - SSH PTY is 500×200 xterm-256color so multiplexer sessions render at your actual terminal size
Optional Dependencies
pip install "mcp-interminal[pty]" # Windows PTY support (pywinpty)
pip install "mcp-interminal[ansi]" # ANSI escape rendering (pyte)
pip install "mcp-interminal[pty,ansi]" # both
Metadata
Release files for mcp-interminal 1.0.19
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_interminal-1.0.19-py3-none-any.whl | Python 3 | none | any | Details |
Release files / mcp_interminal-1.0.19-py3-none-any.whl
| Download URL | mcp_interminal-1.0.19-py3-none-any.whl |
|---|---|
| Size | 17.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
34cb61cdcfc0c5add2cb338ee01f19f857de8ec53a286fc237c939fc27fb1084
|
|
BLAKE2b-256 checksum How to use checksums |
e2dc8547cfff425185c62de461fcc61dfbfdc655bfca43acfc5a780625d9aeb7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|