Skip to main content
Glama
2black0

Enhanced iTerm MCP Server

by 2black0

πŸš€ Enhanced iTerm MCP Server

npm version License: MIT macOS Node.js Python

Advanced iTerm2 automation with Python API integration - The ultimate terminal control solution for AI assistants.

⚑ Now with native Python API - Direct iTerm2 integration for maximum reliability and performance

⚑ Quick Start

1. Installation

npm install -g enhanced-iterm-mcp-server

πŸŽ‰ Just Published! The package is now available on NPM registry for easy installation.

From Source

git clone https://github.com/2black0/enhanced-iterm-mcp-server.git cd enhanced-iterm-mcp-server npm install ./setup-python-api.sh npm run build

2. Enable iTerm2 Python API

  1. Open iTerm2 β†’ Preferences (⌘,)

  2. Go to General β†’ Magic

  3. Check "Enable Python API"

  4. Restart iTerm2

3. Add to MCP Configuration

{ "mcpServers": { "enhanced-iterm": { "command": "node", "args": ["/path/to/enhanced-iterm-mcp-server/dist/index-python-api.js"], "type": "stdio" } } }

4. Test Setup

# If installed globally enhanced-iterm-mcp test # If installed from source npm test

πŸ“¦ Installation Methods

Global Installation (NPM)

# Install globally npm install -g enhanced-iterm-mcp-server # Use anywhere enhanced-iterm-mcp --help # Configuration path for Claude Desktop # ~/.npm/lib/node_modules/enhanced-iterm-mcp-server/dist/index-python-api.js

βœ… Package is now live on NPM! Install with npm install -g enhanced-iterm-mcp-server

Local Project Installation

# Install in project npm install enhanced-iterm-mcp-server # Use with npx npx enhanced-iterm-mcp --help # Configuration for Claude Desktop # /path/to/project/node_modules/enhanced-iterm-mcp-server/dist/index-python-api.js

Direct Usage (NPX)

# Use without installation npx enhanced-iterm-mcp-server --help # Claude Desktop configuration { "mcpServers": { "enhanced-iterm": { "command": "npx", "args": ["enhanced-iterm-mcp-server"], "type": "stdio" } } }

πŸš€ Live on NPM Registry: https://www.npmjs.com/package/enhanced-iterm-mcp-server

πŸ›  Available Tools

Terminal Management

  • open-terminal - Create new terminals with profiles and commands

  • list-all-sessions - Complete overview of all iTerm2 windows/tabs/sessions

Advanced Pane Operations

  • split-terminal-horizontal / split-terminal-vertical - Split panes with profile support

  • execute-command-in-pane - Execute commands in specific panes

  • broadcast-input - Send commands to multiple panes simultaneously

Real-time Information

  • get-session-info - Basic session information and status

  • get-session-details - Comprehensive session details with all variables

  • monitor-session - Monitor session changes over time

Visual Customization

  • set-tab-color - Set tab colors (named colors or hex codes)

Legacy Compatibility

  • list-panes - List tracked panes

  • get-terminal-state - Terminal state overview

🎯 Key Features

🐍 Python API Integration

  • Direct access to iTerm2's native Python API

  • Real-time session variable monitoring

  • Robust error handling with automatic retries

  • No AppleScript limitations

πŸ“Š Advanced Automation

  • Multi-pane broadcasting for simultaneous commands

  • Profile-based terminal creation with custom configurations

  • Real-time session monitoring with 10+ variables

  • Visual customization with tab coloring

πŸ”§ Production Ready

  • Comprehensive error handling and logging

  • Timeout protection for all operations

  • Virtual environment isolation

  • Clean TypeScript implementation

πŸ“– Usage Examples

Create and Split Terminals

// Open new terminal await callTool("open-terminal", { command: "htop", workingDirectory: "/Users/username/projects" }) // Split horizontally with profile await callTool("split-terminal-horizontal", { profile: "Development", command: "npm run dev" })

Multi-pane Operations

// Broadcast command to multiple panes await callTool("broadcast-input", { paneIds: ["session-1", "session-2", "session-3"], command: "git status" }) // Monitor session changes await callTool("monitor-session", { paneId: "session-1", duration: 30 })

Real-time Information

// Get comprehensive session details await callTool("get-session-details", { sessionId: "213D676B-19F7-42A4-9E34-B2B81D40105B" }) // List all active sessions await callTool("list-all-sessions", {})

πŸ”§ Development

Build & Run

npm run build # Build TypeScript npm start # Run production npm run dev # Development mode

Testing

npm test # Test tool listing npm run test-sessions # Test session access

🚨 Troubleshooting

"Python API not enabled"

  • Enable in iTerm2 Preferences β†’ General β†’ Magic β†’ Python API

  • Restart iTerm2 after enabling

"Connection error"

  • Ensure iTerm2 is running

  • Check Python virtual environment: source iterm_env/bin/activate

  • Verify iterm2 package: pip list | grep iterm2

"Session not found"

  • Use list-all-sessions to get valid session IDs

  • Session IDs change when sessions are closed/reopened

πŸ“„ License

ISC License

πŸ™ Built With


🎯 The Ultimate iTerm2 Automation Solution for AI Assistants

🀝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Quick Start for Contributors

git clone https://github.com/2black0/enhanced-iterm-mcp-server.git cd enhanced-iterm-mcp-server npm install ./setup-python-api.sh npm run dev

πŸ“œ Changelog

See CHANGELOG.md for detailed version history.

πŸ™ Acknowledgments

⭐ Support

If this project helps you, please consider:

  • ⭐ Starring the repository

  • πŸ› Reporting issues

  • πŸ”§ Contributing improvements

  • πŸ“’ Sharing with others


Built with ❀️ for the AI automation community

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/2black0/enhanced-iterm-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server