Terminal History MCP vs Pty MCP — MCP Server Comparison | AllMCPs
Side-by-Side Model Context Protocol Comparison
Terminal History MCP vs Pty MCP
In-depth architectural comparison of the Terminal History MCP and Pty MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Terminal History MCP
Command Line · Local stdio
Quality: 60/100 (Good) | Auth: No auth required
Pty MCP
Command Line · Local stdio
Quality: 52/100 (Good) | Auth: No auth required
Verdict Summary: Choose Terminal History MCP if you need specialized Command Line tools running via a local process. Choose Pty MCP if your workspace requires Command Line integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Terminal History MCP when:
You need dedicated capabilities in the Command Line domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: No auth required (Free / Open Source).
Full-text search over your shell history (zsh / bash / fish) via SQLite FTS5. Local-only. 11-pattern secret redaction runs BEFORE insert. Captures cwd / exit code / duration via opt-in shell hook. Tools: searchhistory, recentindir, failedcommands, commandchains, reindex.
Interactive PTY sessions for AI agents — local shells, SSH with persistent sessions (ai-tmux daemon for attach/detach), and serial ports. Single Go binary, no tmux dependency.
Category & Scope
Tools & Capabilities Breakdown
Terminal History MCP Tools (5)
reindex
Re-parses the local shell history files (`~/.zsh_history`, `~/.bash_history`) and the hook's extended log into the SQLite index. Idempotent — already-indexed commands are skipped by hash, so it is safe to call repeatedly. Run it after a burst of shell activity to make recent commands searchable. Reads only local files; writes only to `~/.terminal-history-mcp/`. Takes no arguments. Returns counts of parsed / inserted / skipped entries.
search_history
Read-only. Full-text search (SQLite FTS5, stemmed, Unicode-aware) over all indexed shell commands. Supports keyword and prefix queries — e.g. `docker build`, `git reb*`. Returns the most recent matches first, each with timestamp, shell, cwd, and exit code when available. Local index only; nothing is sent anywhere. If a query returns nothing you may need `reindex` first.
recent_in_dir
Read-only. Lists the most recent commands that were run with a given working directory — answers "what was I doing in this project?". Requires the shell hook to have been installed (legacy entries have no cwd and won't appear). Returns newest first with timestamps and exit codes. Local index only.
failed_commands
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Terminal History MCP is categorized under Command Line and uses a local stdio subprocess. In contrast, Pty MCP belongs to Command Line using local stdio subprocess. Select Terminal History MCP when you need capabilities focused on command line and Pty MCP when you require tools for command line.
Read-only. Lists recent commands that exited non-zero — a quick "what just broke?" feed. Optionally restrict to commands after a given epoch-millisecond timestamp. Requires the shell hook for exit-code capture (legacy entries have no exit code). Newest first. Local index only.
command_chains
Read-only. For each command matching `query`, returns the commands run within a time window around it (default ±5 min) — surfacing multi-step sequences like `cd → npm run build → deploy`. Useful for reconstructing "how did I do X last time?". Returns up to `limit` chains, each a time-ordered list of command rows. Local index only.
Pty MCP Tools (12)
create_local_session
Start a local interactive terminal (bash, python3, node, etc.)
create_ssh_session
SSH to a remote host (supports SSH config aliases)
create_serial_session
Connect to a serial port device
send_input
Send a command and wait for output to settle
read_output
Read output, optionally wait for a pattern (`wait_for`, `timeout`, `context_lines`, `tail_lines`)
send_control
Send control keys (ctrl+c, ctrl+d, arrows, tab, etc.)
send_secret
Prompt the human operator for a secret via GUI dialog; sends it to the PTY session without exposing it to AI context or logs ¹
list_sessions
List all active sessions
close_session
Close a session (terminates remote PTY)
detach_session
Disconnect but keep remote PTY running
resize_session
Resize the terminal window (rows/cols) for any session type