it2mcp

it2mcp

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.

Category
访问服务器

README

it2mcp

MCP server for controlling iTerm2 from AI assistants, editors, and other MCP clients.

Built on iTerm2's official Python API, it2mcp exposes 40 tools for managing sessions, windows, tabs, profiles, and more — with a security model that keeps you in control.

Prerequisites

  • macOS with iTerm2 installed
  • Python 3.10+
  • uv (recommended) or pip
  • iTerm2's Python API enabled: Preferences → General → Magic → Enable Python API

Installation

git clone https://github.com/youruser/it2mcp.git
cd it2mcp
uv sync

Usage

Add to Claude Code

claude mcp add -s user it2mcp -- uv --directory /path/to/it2mcp run it2mcp

Add to other MCP clients

Add to your MCP client configuration:

{
  "mcpServers": {
    "it2mcp": {
      "command": "uv",
      "args": ["--directory", "/path/to/it2mcp", "run", "it2mcp"]
    }
  }
}

Run standalone

uv run it2mcp

Security

it2mcp ships secure by default. Two mechanisms protect your terminal sessions:

Session tagging

Sessions must be explicitly tagged before MCP can interact with them. Untagged sessions are invisible to all tools except session_list (which shows their mcp_enabled status so you know what to tag).

Tag a session (run this in the session's terminal):

# Using the it2 CLI
it2 session set-var user.mcp_enabled true

# Or using iTerm2's escape sequence (no dependencies)
printf '\033]1337;SetUserVar=%s=%s\007' mcp_enabled $(echo -n true | base64)

Untag a session:

it2 session set-var user.mcp_enabled false

Tags are not persistent — they reset when the session ends. This is intentional: you opt in per-session, per-lifetime.

Permission tiers

Tools are grouped into three tiers:

Tier Tools Description
read session_list, session_read, session_get_variable, tab_list, window_list, app_get_focus, profile_list, profile_show, app_version, app_theme, window_arrange_list Observation only
interact session_send, session_run, session_split, session_clear, session_focus, session_set_name, session_set_variable, tab_new, tab_select, tab_next, tab_prev, tab_move, window_new, window_focus, window_move, window_resize, window_fullscreen, window_arrange_save, window_arrange_restore, app_activate, broadcast_on, broadcast_off, broadcast_add, profile_apply, batch, send_keystrokes Can send input and modify layout
destructive session_close, session_restart, tab_close, window_close Can terminate sessions and close windows

By default, only read is enabled.

Audit log

Every tool invocation is logged to ~/.local/share/it2mcp/audit.jsonl with timestamp, tool name, parameters, and result.

Configuration

Create ~/.config/it2mcp/config.yaml:

# Which permission tiers to enable
permissions:
  - read
  - interact
  # - destructive

# Require sessions to have user.mcp_enabled set (default: true)
require_tag: true

# Audit log path (set to null to disable)
audit_log: ~/.local/share/it2mcp/audit.jsonl

Override the config path with the IT2MCP_CONFIG environment variable.

Tools

Session

Tool Tier Description
session_list read List all sessions with IDs, names, sizes, and mcp_enabled status
session_read read Read visible screen contents
session_get_variable read Get a session variable (e.g. path, name, tty)
session_send interact Send text without pressing Enter
session_run interact Execute a command (text + Enter)
session_split interact Split into a new pane
session_clear interact Clear screen (Ctrl+L)
session_focus interact Activate a specific session
session_set_name interact Set session name
session_set_variable interact Set a session variable
session_close destructive Close a session
session_restart destructive Restart a session

Window

Tool Tier Description
window_list read List all windows with positions and sizes
window_arrange_list read List saved window arrangements
window_new interact Create a new window
window_focus interact Activate a specific window
window_move interact Move window to screen position
window_resize interact Resize a window
window_fullscreen interact Set fullscreen on/off/toggle
window_arrange_save interact Save current arrangement
window_arrange_restore interact Restore a saved arrangement
window_close destructive Close a window

Tab

Tool Tier Description
tab_list read List all tabs with IDs and active state
tab_new interact Create a new tab
tab_select interact Select tab by ID or index
tab_next interact Switch to next tab
tab_prev interact Switch to previous tab
tab_move interact Move tab to its own window
tab_close destructive Close a tab

App

Tool Tier Description
app_get_focus read Get focused window/tab/session info
app_version read Get iTerm2 version
app_theme read Get or set theme
app_activate interact Bring iTerm2 to front

Broadcast

Tool Tier Description
broadcast_on interact Enable broadcasting to all sessions in current tab
broadcast_off interact Disable broadcasting
broadcast_add interact Create broadcast group with specific sessions

Profile

Tool Tier Description
profile_list read List all profiles
profile_show read Show profile details
profile_apply interact Apply a profile to a session

Batch

Tool Tier Description
batch interact Execute multiple operations in a single iTerm2 connection

The batch tool accepts a list of operations and runs them sequentially over one connection. Supports a sleep operation for timing between steps. Each operation's tier is checked individually.

[
  {"op": "session_run", "command": "echo hello"},
  {"op": "sleep", "seconds": 1.0},
  {"op": "session_read"}
]

Acknowledgments

Built on top of it2 by @mkusaka — a powerful CLI for controlling iTerm2 via its Python API. it2mcp wraps the same underlying iterm2 Python API and was heavily inspired by it2's command structure.

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选