
Terminal sessions for agents
Real terminal sessions for agents: run commands, stream output, type into programs, kill trees.
- tools
- 6
- transport
- STDIO
- last updated
- Nov 9, 2026
Tools
6 toolsPublic tool metadata for what this MCP can expose to an agent.
terminal_startStart a session. Without `command`: your login shell (zsh/bash) with command tracking. With `command` + `args`: any program in a PTY (python, vim, ssh, a dev server). Returns `session_id`, state and the first screen.
Start a session. Without `command`: your login shell (zsh/bash) with command tracking. With `command` + `args`: any program in a PTY (python, vim, ssh, a dev server). Returns `session_id`, state and the first screen.
No parameter schema in public metadata yet.
terminal_execRun one command line in a shell session and wait (default 20 s) for it to finish. Returns only that command's output, `exit_code` and the new `cwd`.
Run one command line in a shell session and wait (default 20 s) for it to finish. Returns only that command's output, `exit_code` and the new `cwd`.
No parameter schema in public metadata yet.
terminal_writeType text (`input`) and/or named `keys` (`enter`, `ctrl+c`, `up`, `escape`, `f1`...). Waits until output settles or `until` matches and returns the new output.
Type text (`input`) and/or named `keys` (`enter`, `ctrl+c`, `up`, `escape`, `f1`...). Waits until output settles or `until` matches and returns the new output.
No parameter schema in public metadata yet.
terminal_readRead without sending input. `cursor` returns only newer output and a `next_cursor`; `wait_for` can block for `output`, `command_end` or `exit`; `until` waits for a regex; `view: "screen"` returns the rendered screen for full-screen programs.
Read without sending input. `cursor` returns only newer output and a `next_cursor`; `wait_for` can block for `output`, `command_end` or `exit`; `until` waits for a regex; `view: "screen"` returns the rendered screen for full-screen programs.
No parameter schema in public metadata yet.
terminal_listAll sessions with state, exit code, busy/idle, current command, cwd and cursor.
All sessions with state, exit code, busy/idle, current command, cwd and cursor.
No parameter schema in public metadata yet.
terminal_killTerminate a session and its whole process tree (SIGHUP, then SIGKILL after `escalate_after_ms`).
Terminate a session and its whole process tree (SIGHUP, then SIGKILL after `escalate_after_ms`).
No parameter schema in public metadata yet.
Sponsors
Readme
terminal-mcp
An MCP server that gives agents real terminals. A client can start shells or programs in a pseudo-terminal, run commands and get back exactly their output and exit code, keep reading output of long-running processes by cursor, type into interactive programs (REPLs, prompts, vim), see whether a session is busy, idle, waiting for input or exited, and terminate a session with its whole process tree.
It works with any MCP client. Local clients launch it over stdio; remote or hosted clients (such as Manus) connect over Streamable HTTP with a bearer token. It serves both the 2025-era protocol and the 2026-07-28 revision.
Demo: an MCP client starts a shell, runs commands, reads a long job by cursor, answers a prompt, drives a Python REPL and a web server, then kills every session
Details
- Repository
- github.com/ryamgoh/terminal-mcp
- Category
- Developer Tools
- Package
@ryamgoh/terminal-mcp- Transport
- STDIO
- Registry
- MCP registry, active