# terminal-mcp > **native** mcp server for unix pty control. ## what mcp server that gives ai models real terminal access. spawn sessions, run commands, read output. that's it. ```json { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "create_session", "arguments": { "session_name": "prod-debug", "command": "ssh prod.server" } } } ``` ## features - **true ptys** not applescript hacks, real unix terminals - **async everything** tokio-powered non-blocking i/o - **smart buffering** only new output, no duplicates - **session persistence** terminals stay alive between calls - **multi-session support** run multiple terminals at once and switch between them ## concepts - **sessions**: named terminal instances (`bash`, `python`, `ssh`) - **tools**: mcp protocol endpoints the ai calls - **ptys**: pseudo-terminals for proper shell interaction - **managers**: lifecycle and cleanup automation ## tools - `create_session`: spawn a new terminal - `execute_command`: run and get output immediately - `execute_command_async`: start long-running commands - `read_streaming_output`: poll async command progress - `list_sessions`: see what's running - `destroy_session`: cleanup when done - `send_control_character`: ctrl-c and friends ## config claude code: ```bash cargo install --git https://github.com/ianks/terminal-mcp claude mcp add --scope user terminal-mcp ``` ## dev ```bash cargo test -- --nocapture # see test output RUST_LOG=debug cargo run # verbose logging cargo clippy # lint cargo fmt # format ``` ## architecture ``` mcp api layer (json-rpc) ↓ session manager (lifecycle) ↓ pty engine (pty-process) ↓ unix ptys (kernel) ``` ## philosophy > ai can interact with computers like humans do. > no abstractions. just shells. ## license mit