{
  "markdown": "# Interminal\n\n<!-- mcp-name: io.github.QiuwenZheng/interminal -->\n\nLightweight MCP server that gives AI assistants terminal access — SSH and local shells — with support for interactive and long-running commands.\n\n## Installation\n\n```bash\n# Run directly, no install needed (recommended)\nuvx mcp-interminal\n\n# Or install permanently\npip install mcp-interminal\n```\n\nRequires Python ≥ 3.11.\n\n## MCP Client Configuration\n\n**Claude Desktop** (`claude_desktop_config.json`):\n```json\n{\n  \"mcpServers\": {\n    \"interminal\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-interminal\"]\n    }\n  }\n}\n```\n\n**Cursor / other clients**: same `command` + `args` format above.\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `connect_ssh` | Connect to an SSH server; returns `session_id` and welcome banner |\n| `execute` | Run a command locally (no session needed) or over SSH; returns output or `status=partial` + `command_id` |\n| `read_output` | Poll a running command for new output without sending input |\n| `respond` | Send text input to a command waiting at a prompt |\n| `send_control` | Send control keys: `ctrl+c`, `ctrl+z`, arrow keys, F-keys, etc. |\n| `disconnect` | Close an SSH session and release all resources |\n\n## Persistent State\n\nEach `execute` call runs in an isolated channel — there is no persistent shell between calls. For simple tasks, chaining with `&&` works.\n\nFor **multi-step workflows** (project development, debugging, deployment), a terminal multiplexer (like Zellij) provides persistent state that survives across calls. The AI agent can create a persistent session where `cd`, environment variables, virtual environments, and long-running processes carry over naturally.\n\n## Key Behaviors\n\n- **Stateless execute** — each call is an isolated channel; `cd /foo` does not persist. Simple tasks: chain with `&&`. Multi-step workflows: use a terminal multiplexer.\n- **Long-running commands** return `status=\"partial\"` with a `command_id`; poll with `read_output` or send input with `respond`\n- **SSH PTY** is 500×200 xterm-256color so multiplexer sessions render at your actual terminal size\n\n## Optional Dependencies\n\n```bash\npip install \"mcp-interminal[pty]\"       # Windows PTY support (pywinpty)\npip install \"mcp-interminal[ansi]\"      # ANSI escape rendering (pyte)\npip install \"mcp-interminal[pty,ansi]\"  # both\n```\n",
  "bytes": 2340,
  "sha": "f37d52dbd0bf2d888ee319db757b523f7109b49fd46d814ccb51da46118234b9",
  "repo_slug": "qiuwenzheng/interminal",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_qiuwenzheng_interminal_7b41fa9b/readme"
}