@so2liu/pty-mcp-server
v1.0.11
Published
MCP server for debugging PTY/TTY/TUI programs. Enables Claude Code to control Claude Code, vim, and other TUI apps.
Downloads
181
Maintainers
Readme
PTY Debug MCP Server
MCP server for debugging PTY/TTY/TUI programs. Enables Claude Code to spawn, interact with, and capture screen output from any terminal-based program.
Use Case: TUI Debugging
This MCP server allows Claude Code to control Claude Code itself, vim, top, and other TUI programs. This enables:
- Automated TUI testing
- Debugging terminal applications
- Screen scraping from interactive programs
- CI/CD integration for TUI apps
Demo: Claude Code controlling Claude Code
1. spawn_session({ command: "claude" })
2. send_input({ specialKey: "shift+tab" }) // cycle modes
3. send_input({ input: "what is 1+1?" })
4. send_input({ specialKey: "enter" })
5. get_snapshot() // see Claude's responseDemo: Claude Code controlling vim
1. spawn_session({ command: "vim", args: ["test.txt"] })
2. send_input({ input: "i" }) // enter INSERT mode
3. send_input({ input: "Hello World!" }) // type text
4. send_input({ specialKey: "escape" }) // exit INSERT mode
5. send_input({ input: ":wq" }) // save command
6. send_input({ specialKey: "enter" }) // executeInstallation
Claude Code
claude mcp add pty-debug -- npx -y @so2liu/pty-mcp-server@latestClaude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"pty-debug": {
"command": "npx",
"args": ["-y", "@so2liu/pty-mcp-server@latest"]
}
}
}VS Code / Copilot
Add to VS Code settings or .vscode/mcp.json:
{
"mcpServers": {
"pty-debug": {
"command": "npx",
"args": ["-y", "@so2liu/pty-mcp-server@latest"]
}
}
}Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"pty-debug": {
"command": "npx",
"args": ["-y", "@so2liu/pty-mcp-server@latest"]
}
}
}Cline
Add to Cline MCP settings:
{
"mcpServers": {
"pty-debug": {
"command": "npx",
"args": ["-y", "@so2liu/pty-mcp-server@latest"]
}
}
}Gemini CLI
gemini mcp add pty-debug -- npx -y @so2liu/pty-mcp-server@latestCodex CLI
codex mcp add pty-debug -- npx -y @so2liu/pty-mcp-server@latestMCP Tools
| Tool | Description |
|------|-------------|
| spawn_session | Start a TUI program in a PTY |
| send_input | Send text or special keys |
| get_snapshot | Capture current screen state |
| resize_terminal | Change terminal dimensions |
| list_sessions | List active sessions |
| close_session | Terminate a session |
Special Keys
Supports all common shortcuts:
- Basic:
enter,tab,shift+tab,escape,backspace,delete - Arrows:
up,down,left,right - With modifiers:
shift+up,ctrl+right,alt+left, etc. - Control:
ctrl+atoctrl+z - Alt:
alt+atoalt+z - Function:
f1tof12 - Navigation:
home,end,pageup,pagedown
Screen Snapshot Format
-------------------------------------------------------------------------------------
1 |Processes: 643 total, 3 running, 640 sleeping 17:57:23 |
2 |Load Avg: 2.38, 2.75, 2.88 CPU usage: 13.13% user, 4.49% sys |
3 |... |
-------------------------------------------------------------------------------------Development
# Install dependencies
bun install
# Development mode
bun run dev
# Build
bun run build
# Lint
bun run lintTech Stack
- Node.js (runtime)
- TypeScript
- node-pty (PTY spawning)
- @xterm/headless (terminal emulation)
- @modelcontextprotocol/sdk (MCP server)
Publishing
Releases are automatically published to npm via GitHub Actions.
Setup (one-time)
Create npm granular token at https://www.npmjs.com/settings/tokens/granular-access-tokens/new
- Expiration: 90 days
- Packages:
@so2liu/pty-mcp-server - Permissions: Read and write
Add
NPM_TOKENsecret at https://github.com/so2liu/pty-mcp/settings/secrets/actionsSet calendar reminder to rotate token every 90 days
Release new version
- Update version in
package.json - Create a GitHub release with tag (e.g.,
v1.0.1) - GitHub Actions will automatically publish to npm
License
MIT
