Skip to main content
Glama

pty-mcp

An MCP server for interactive PTY sessions — end-to-end testing of CLI apps, REPLs and TUIs by driving a real pseudo-terminal and reading a clean rendered screen back. Exposed to any MCP client (built for Claude Code) over stdio.

Stack

  • Python 3.14 + venv

  • pexpect — PTY spawn, text/key injection

  • pyte — terminal emulator (clean screen rendering, ANSI stripped)

  • mcp — Python MCP SDK

Related MCP server: ptywright

Tools

Tool

Description

pty_start

Start a PTY session (command, cwd, env, cols, rows)

pty_send

Send raw text

pty_send_key

Send a special key (enter, ctrl+c, arrows…)

pty_expect

Wait for a regex pattern in the output (with timeout)

pty_screen

Current screen state, cleanly rendered (no ANSI)

pty_read

Last N lines of the scrollback buffer

pty_close

Close the session and kill the process

pty_list

List all active sessions

Example — E2E test

pty_start(session_id="myapp", command="python myapp.py", cwd="/path/to/myapp")
pty_expect(session_id="myapp", pattern="Enter your name:", timeout_ms=5000)
pty_send(session_id="myapp", text="Chris\r")
pty_expect(session_id="myapp", pattern="Welcome, Chris", timeout_ms=3000)
pty_screen(session_id="myapp")   # terminal screenshot
pty_close(session_id="myapp")

Run

The server is registered in the MCP client and starts with each session. To test standalone: ./start.sh. Transport is stdio, no network port. Logs in logs/mcp_server.log.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to interact with real terminal sessions across local and remote hosts, driving multi-turn interactive programs like TUIs, REPLs, and SSH prompts through MCP.
    62
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables users to inspect, run, interact with, and debug React/Ink terminal applications locally through MCP by starting processes in a pseudoterminal, sending keystrokes, resizing, waiting for conditions, and inspecting the emulated screen and output.
    MIT