Skip to main content
Glama
oetiker

MCPretentious

by oetiker
README.md
# MCPretentious - Universal Terminal MCP

[![npm version](https://badge.fury.io/js/mcpretentious.svg)](https://www.npmjs.com/package/mcpretentious)
[![Test Status](https://github.com/oetiker/MCPretentious/workflows/Test/badge.svg)](https://github.com/oetiker/MCPretentious/actions/workflows/test.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](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

A4/5.0

Scored across 9 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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.

Maintenance

ActivityInactive
ResponsivenessNo issues