MCPretentious
# MCPretentious - Universal Terminal MCP
[](https://www.npmjs.com/package/mcpretentious)
[](https://github.com/oetiker/MCPretentious/actions/workflows/test.yml)
[](https://opensource.org/licenses/MIT)
MCP server for terminal control. Supports iTerm2 (macOS) via WebSocket API and tmux (cross-platform) via direct commands.
<!-- LATEST-CHANGES-START -->
## 📋 Latest Release (v1.3.0 - 2025-09-03)
### Added
- **Alt key support** - Comprehensive Alt key combinations for `mcpretentious-type` tool
- Alt + Letters (a-z): `alt-a` through `alt-z`
- Alt + Shift + Letters: `alt-shift-a` through `alt-shift-z` for uppercase
- Alt + Numbers (0-9): `alt-0` through `alt-9`
- Alt + Navigation keys: arrow keys, home, end, pageup, pagedown
- Alt + Function keys (F1-F12): `alt-f1` through `alt-f12`
- Alt + Special keys: tab, enter, space, backspace
- Uses standard terminal escape sequences (ESC prefix and CSI modifiers)
For full changelog, see [CHANGELOG.md](CHANGELOG.md)
<!-- LATEST-CHANGES-END -->
## Installation
```bash
npm install -g mcpretentious
```
### Prerequisites
**iTerm2 (macOS):**
- Enable Python API: iTerm2 → Preferences → General → Magic → Enable "Python API"
**TMux (any platform):**
- Install tmux: `brew install tmux` / `apt install tmux` / etc.
## Configuration
### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"mcpretentious": {
"command": "npx",
"args": ["mcpretentious"]
}
}
}
```
### Claude Code
```bash
claude mcp add mcpretentious npx mcpretentious
```
## Main Applications
- **TUI application testing**: Simulates all human interactions - keyboard, mouse, screen reading
- **Remote server management**: Persistent terminal sessions allow remote system control over SSH
## Features
- **Multiple backends**: iTerm2 (WebSocket, 20x faster than AppleScript) and tmux (direct commands)
- **No focus stealing**: Background terminal control
- **Real terminal IDs**: Access existing terminals, not just MCP-created ones
- **Screen reading**: Actual viewport content with cursor position and colors
- **Mouse support**: Full SGR protocol (click, drag, scroll) in both backends
- **Token-optimized screenshots**: 85-98% reduction via layered format
## Backend Comparison
| Feature | iTerm2 | TMux |
|---------|--------|------|
| Platform | macOS | Cross-platform |
| Method | WebSocket + Protobuf | Direct commands |
| Performance | Fastest | Fast |
| Colors | Full RGB | ANSI 256 |
| Authentication | Cookie/key | Unix permissions |
## Tools
- `mcpretentious-open` - Create terminal session
- `mcpretentious-type` - Send text/keys/ASCII codes
- `mcpretentious-screenshot` - Get screen content (configurable layers)
- `mcpretentious-mouse` - Send mouse events (SGR protocol)
- `mcpretentious-resize` - Set terminal dimensions
- `mcpretentious-close` - Close terminal
- `mcpretentious-list` - List active terminals
## Testing
```bash
npx mcpretentious-test # Basic test
npx mcpretentious-test --verbose # Detailed output
```
## Security
Full terminal access - the LLM can run any command you could. Be cautious with:
- Untrusted commands
- System passwords
- Destructive operations
## Documentation
- [API Documentation](API.md)
- [Changelog](CHANGELOG.md)
## License
MIT - Tobias Oetiker <tobi@oetiker.ch>TDQS
Scored across 9 tools
Each tool targets a distinct action: close, info, list, mouse, open, read, resize, screenshot, type. There is no functional overlap; an agent can clearly distinguish between them.
Most tools use an imperative verb form (close, open, list, type, read, resize), but 'mcpretentious-mouse' is a noun rather than a verb, and 'info' is also a noun. This minor inconsistency prevents a top score.
With 9 tools covering open, close, list, info, type, read, resize, screenshot, and mouse input, the count is well-scoped for terminal session management. No tool feels redundant or missing.
The tool set covers the full lifecycle of terminal sessions: creation, destruction, listing, input (keyboard and mouse), output reading (plain and styled), resizing, and metadata retrieval. No obvious gaps for typical use.