Skip to main content
Glama
oetiker

MCPretentious

by oetiker

MCPretentious - Universal Terminal MCP

npm version Test Status License: MIT

MCP server for terminal control. Supports iTerm2 (macOS) via WebSocket API and tmux (cross-platform) via direct commands.

📋 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

Related MCP server: poof-mcp

Installation

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:

{
  "mcpServers": {
    "mcpretentious": {
      "command": "npx",
      "args": ["mcpretentious"]
    }
  }
}

Claude Code

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

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

License

MIT - Tobias Oetiker tobi@oetiker.ch

Available Tools

9 tools
mcpretentious-closeB

Closes the terminal window associated with the specified terminal ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
terminalIdYesThe terminal ID to close

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and description only states the basic action. Does not disclose side effects (e.g., unsaved work, process termination), error handling, or security implications of closing a terminal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, zero wasted words. Efficiently communicates the core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple close operation with one parameter and no output schema, the description is adequate. However, additional details on behavior (e.g., graceful shutdown, error states) would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage (terminalId described as 'The terminal ID to close'). Description adds no new parameter information beyond what schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it closes a terminal window (specific verb+resource). Distinguishes from siblings like info, list, open, etc. which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives (e.g., when to close vs info/list). No prerequisites or conditions mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcpretentious-infoA

Gets terminal metadata including dimensions (columns × rows) and session information.

ParametersJSON Schema
NameRequiredDescriptionDefault
terminalIdYesThe terminal ID to get info for

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states 'gets metadata' which implies read-only, but does not explicitly confirm no side effects or disclose any behavioral traits beyond that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and front-loaded, providing essential information without any wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one param, no output schema), the description adequately explains what is returned (metadata, dimensions, session info). It could mention no modifications, but sufficient for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single parameter with 100% coverage. The description adds no extra meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves terminal metadata, specifically dimensions and session info, using a specific verb 'gets'. It distinguishes from sibling tools that perform other actions like closing or resizing terminals.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for checking terminal metadata but does not explicitly state when to use this tool versus siblings or provide any exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcpretentious-listA

Lists all currently open terminal sessions with their IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It states the tool lists sessions with IDs, implying a read-only and non-destructive operation. However, it doesn't explicitly confirm no side effects or disclose any behavioral traits beyond the basic listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has zero parameters and no output schema, the description is mostly complete. It mentions listing terminal sessions with IDs, which sufficiently conveys the output. Lacking a bit more detail about the return format, but for a simple list tool, it's adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100%. The description adds no param info since none are needed, but this is adequate. Baseline 4 applies per the guidelines.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists open terminal sessions with their IDs, using a specific verb and resource. It distinguishes itself from siblings like mcpretentious-close, info, etc., which perform different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions or context for when to use list vs other session management tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcpretentious-mouseA

Send mouse events to a terminal using SGR mouse protocol.

This tool provides direct control over mouse events following the terminal's SGR (Select Graphic Rendition) mouse protocol.

EVENTS:
- 'press': Mouse button press event
- 'release': Mouse button release event  
- 'drag': Mouse movement with button held down

BUTTONS (use names or button-N format):
Named buttons:
- 'left': Left mouse button
- 'middle': Middle mouse button
- 'right': Right mouse button
- 'scrollUp': Scroll wheel up
- 'scrollDown': Scroll wheel down

Direct button codes:
- 'button-0' through 'button-127': Direct SGR button codes
- Common codes: 0=left, 1=middle, 2=right, 64=scrollUp, 65=scrollDown

MODIFIERS (optional, default to false):
- shift: Hold shift key during event
- alt: Hold alt/option key during event
- ctrl: Hold control key during event

COORDINATES:
- x and y are 0-based character positions (column, row)
- The protocol will convert to 1-based coordinates internally

EXAMPLES:
- Left click at (10,5): event='press', button='left', x=10, y=5, then event='release' with same coordinates
- Drag from (5,5) to (15,10): event='press' at (5,5), event='drag' at (15,10), event='release' at (15,10)
- Scroll up at (20,8): event='press', button='scrollUp', x=20, y=8 (no release needed for scroll)
ParametersJSON Schema
NameRequiredDescriptionDefault
terminalIdYesThe terminal ID to send mouse events to
eventYesMouse event type: 'press' for button down, 'release' for button up, 'drag' for movement with button held
xYesX coordinate (column position, 0-based)
yYesY coordinate (row position, 0-based)
buttonYesMouse button: named ('left', 'middle', 'right', 'scrollUp', 'scrollDown') or direct code ('button-0' through 'button-127')
shiftNoShift key modifier
altNoAlt/Option key modifier
ctrlNoControl key modifier

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It explains the SGR protocol, coordinate conversion from 0-based to 1-based, and modifier optionality. It does not disclose any destructive or side effects, but for a mouse event tool this is reasonable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (EVENTS, BUTTONS, MODIFIERS, COORDINATES, EXAMPLES) and is front-loaded with the main purpose. It is somewhat lengthy but each part serves a purpose; very few redundant sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with moderate complexity, no output schema, and no annotations, the description covers all necessary aspects: input parameters, protocol details, and usage examples. It lacks explicit return value info but that is acceptable for an action tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds significant value by explaining button code ranges (button-0 to button-127), listing common codes, clarifying modifier defaults, and providing coordinate conversion details. Examples further enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Send mouse events to a terminal using SGR mouse protocol.' It details events, buttons, modifiers, and coordinates, distinguishing it from siblings like mcpretentious-type or mcpretentious-read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides examples and explains when to use the tool for mouse interactions. However, it does not explicitly state when not to use it or mention alternatives among sibling tools, which slightly reduces clarity for an agent deciding between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcpretentious-openA

Opens a new terminal window and creates a tracked terminal session. Returns a terminal ID that can be used with other commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
columnsNoInitial width in columns (default: 80)
rowsNoInitial height in rows (default: 24)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Only mentions creating a tracked session and returning an ID, but hides details like side effects, resource usage, or lifecycle.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with action and return value. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks details about session lifecycle, how to close, or constraints. For a creation tool with no output schema and no annotations, more context is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already explains parameters with min, max, and default descriptions. Description adds no extra meaning beyond what schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it opens a new terminal window and creates a tracked session, returning a terminal ID. Distinguishes from sibling tools like close, info, list, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage before other terminal commands by mentioning the returned ID. Lacks explicit when-not or alternatives, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcpretentious-readA

Reads text output from a terminal session. Returns the current screen contents. Use mcpretentious-screenshot for rich terminal info including colors, cursor position, and styles.

ParametersJSON Schema
NameRequiredDescriptionDefault
terminalIdYesThe terminal ID to read from
linesNoNumber of lines to read from the bottom

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states it 'returns current screen contents' but does not disclose whether reading is destructive, requires auth, or any rate limits. The disclosure is minimal beyond the tool's purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, then usage guidance. No wasted words, efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with two parameters. The description covers the purpose and usage guidance. However, it doesn't describe the return format (e.g., plain text, array of lines), which would be helpful. Still mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers 100% of parameters with descriptions. The tool description does not add further meaning or usage details beyond what the schema provides, hence baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'reads' and the resource 'text output from a terminal session', and distinguishes itself from the sibling 'mcpretentious-screenshot' by specifying it returns plain text vs rich info.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the sibling tool for richer info, guiding the agent to choose the correct tool. It implies usage for plain text reading but does not state when not to use it or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcpretentious-resizeB

Resizes a terminal to the specified dimensions in columns × rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
terminalIdYesThe terminal ID to resize
columnsYesNumber of columns (width in characters)
rowsYesNumber of rows (height in lines)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must disclose all behavioral traits. However, it only says 'Resizes a terminal' without explaining side effects, instant effects, or what happens to existing content. No mention of required permissions or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It front-loads the action and resource, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple resize operation with clear parameters and no output schema, the description covers the basic action. However, it lacks usage context and behavioral details that would make it complete for an AI agent deciding when to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes parameters. The description repeats 'columns × rows' but adds no new semantic meaning beyond formatting. Baseline 3 is appropriate as it does not contradict or subtract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: resizing a terminal to specified dimensions in columns × rows. The verb 'Resizes' and resource 'terminal' are specific, and the sibling tools indicate different actions (close, open, list), so this tool is well-distinguished.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like mcpretentious-open or mcpretentious-list. The description does not mention prerequisites, scenarios, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcpretentious-screenshotA

Takes a token-optimized screenshot of the terminal screen using a layered format that reduces token usage by 85-98%. Returns only the data layers you need (text, cursor, colors, styles). Supports viewport limiting to show just a region or area around cursor. Essential for inspecting TUI applications without hitting token limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
terminalIdYesThe terminal ID to read from
layersNoData layers to include. 'text' for content, 'cursor' for position, 'styles' for combined formatting, individual style layers, or color layers with palette. Default: ['text', 'cursor'] for minimal token usage
regionNoLimit to specific viewport rectangle to reduce tokens
aroundCursorNoShow N lines around cursor (e.g., 5 shows 11 lines total). Great for reducing tokens when debugging at cursor position
compactNoSkip empty lines to further reduce token usage

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral transparency. It explains the tool's token optimization (85-98% reduction), how it returns only requested data layers, and supports region-specific captures. It does not mention potential side effects or required permissions, but given the tool appears to be a read operation, this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively concise at two sentences, front-loading the core action in the first sentence. It uses bullet-like structure in the second sentence (e.g., 'Supports viewport limiting...'). It could be slightly more structured, but it is not verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters including a nested object, and no output schema, the description should clarify the return format. It states 'returns only the data layers you need,' but doesn't specify the structure or how errors are handled. The description covers main use cases but lacks complete documentation for complex scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by contextualizing parameters: it explains that the layered format reduces tokens, viewport limiting and aroundCursor help reduce tokens, and compact skips empty lines. This clarifies the purpose beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool takes a token-optimized screenshot of the terminal screen using a layered format. It specifies the action ('takes'), the resource ('terminal screen'), and the key benefit ('reduces token usage by 85-98%'). This distinctively separates it from sibling tools like mcpretentious-read or mcpretentious-type, which handle different terminal interactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states that the tool is 'essential for inspecting TUI applications without hitting token limits,' providing clear context for use. It also explains when to use features like viewport limiting or aroundCursor. However, it does not explicitly state when not to use this tool or compare it to alternatives, which would improve guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcpretentious-typeA

Send text and keystrokes to a terminal. Always pass as array.

Examples: ["ls -la"], ["cd /path", {"key": "enter"}], ["Hello", 32, "World"], [{"key": "ctrl-c"}]

Supported keys: tab, shift-tab, enter, return, escape, esc, backspace, delete, up, down, right, left, home, end, pageup, pagedown, ctrl-a, ctrl-b, ctrl-c, ctrl-d, ctrl-e, ctrl-f, ctrl-g, ctrl-h, ctrl-i, ctrl-j, ctrl-k, ctrl-l, ctrl-m, ctrl-n, ctrl-o, ctrl-p, ctrl-q, ctrl-r, ctrl-s, ctrl-t, ctrl-u, ctrl-v, ctrl-w, ctrl-x, ctrl-y, ctrl-z, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, alt-a, alt-b, alt-c, alt-d, alt-e, alt-f, alt-g, alt-h, alt-i, alt-j, alt-k, alt-l, alt-m, alt-n, alt-o, alt-p, alt-q, alt-r, alt-s, alt-t, alt-u, alt-v, alt-w, alt-x, alt-y, alt-z, alt-shift-a, alt-shift-b, alt-shift-c, alt-shift-d, alt-shift-e, alt-shift-f, alt-shift-g, alt-shift-h, alt-shift-i, alt-shift-j, alt-shift-k, alt-shift-l, alt-shift-m, alt-shift-n, alt-shift-o, alt-shift-p, alt-shift-q, alt-shift-r, alt-shift-s, alt-shift-t, alt-shift-u, alt-shift-v, alt-shift-w, alt-shift-x, alt-shift-y, alt-shift-z, alt-0, alt-1, alt-2, alt-3, alt-4, alt-5, alt-6, alt-7, alt-8, alt-9, alt-tab, alt-enter, alt-space, alt-backspace, alt-left, alt-right, alt-up, alt-down, alt-home, alt-end, alt-pageup, alt-pagedown, alt-f1, alt-f2, alt-f3, alt-f4, alt-f5, alt-f6, alt-f7, alt-f8, alt-f9, alt-f10, alt-f11, alt-f12

ParametersJSON Schema
NameRequiredDescriptionDefault
terminalIdYesID of the terminal to send input to
inputYesArray of text / key / ascii to send

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains the input format and supported keys, but lacks details on error handling or behavior on invalid input.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose, but the long list of keys makes it verbose. Could be more concise by referencing an external resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a typing tool with a complex input array and no output schema, the description covers the input format and supported keys well, providing sufficient detail for an agent to use it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds significant value beyond the schema through examples and a comprehensive list of supported keys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Send text and keystrokes to a terminal' with examples, which is specific and distinguishes from sibling tools like mouse or read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides examples and mentions 'Always pass as array', but does not explicitly state when to use this tool versus alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.3.0
    • First observedmcpretentious-close
    • First observedmcpretentious-info
    • First observedmcpretentious-list
    • First observedmcpretentious-mouse
    • First observedmcpretentious-open
    • First observedmcpretentious-read
    • First observedmcpretentious-resize
    • First observedmcpretentious-screenshot
    • First observedmcpretentious-type

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI agents to control the macOS Terminal.app using AppleScript and the zmx session manager. It allows agents to send keystrokes, type text, and capture screen output in real-time.
    -
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables AI assistants to control iTerm2 sessions, windows, tabs, and profiles using the official iTerm2 Python API. It includes a security model with session tagging and tiered permissions to ensure safe and controlled terminal interactions.
    40
    1
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    A comprehensive MCP server for driving tmux sessions, windows, panes, sending keystrokes, and reading pane output locally or over SSH, enabling real-time collaborative pairing with AI.
    71
    3
    MIT