
mcp server for unix pty control
@ianks
The native MCP server for Unix PTY control gives AI models authentic, low-latency terminal access by spawning true pseudo-terminals—not brittle AppleScript hacks—so you can open persistent Bash, Python, or SSH sessions, run commands like “ssh prod.server,” and stream only fresh o
概览
What is mcp server for unix pty control?
It is an MCP server that gives AI models real terminal access by spawning Unix pseudo-terminal sessions, running commands, and reading output. It is designed for developers who need native, low-latency shell interaction for AI agents.
How to use mcp server for unix pty control?
Install with cargo install --git https://github.com/ianks/terminal-mcp, then add to Claude Code using claude mcp add --scope user terminal-mcp. AI models can then call tools like create_session, execute_command, and list_sessions via JSON-RPC.
Key features of mcp server for unix pty control
- True Unix ptys, not AppleScript or workarounds
- Async I/O powered by Tokio
- Smart buffering that only returns new output
- Session persistence across tool calls
- Multi-session support to run several terminals at once
Use cases of mcp server for unix pty control
- AI-assisted remote server debugging via SSH
- Running long-lived shell commands with async output polling
- Automating multi-step development workflows (build, test, deploy)
- Interactive REPL sessions (Python, bash) controlled by an agent
- Switching between multiple terminal contexts in a single conversation
FAQ from mcp server for unix pty control
What tools does the server expose?
It provides create_session, execute_command, execute_command_async, read_streaming_output, list_sessions, destroy_session, and send_control_character.
How does it differ from script-based terminal access?
It uses real pseudo-terminals (ptys) rather than simulated or hacked I/O, giving proper shell interaction with features like ctrl-c, process groups, and terminal signaling.
Can I run multiple terminals at the same time?
Yes. The server supports multi-session management, allowing you to spawn several named sessions (e.g., bash, ssh, python) and switch between them.
How do I run a long-running command without blocking?
Use the execute_command_async tool to start the command, then poll progress with read_streaming_output until completion. Sessions stay alive between calls.
What runtime dependencies does it require?
A Unix-like system with Rust installed (to compile via Cargo) and support for Unix ptys. The server is compiled as a native binary and communicates over MCP (stdio transport by default).