Skip to main content
Glama
kanniganfan

ai-mcp-terminal

by kanniganfan
README.md
# AI-MCP Terminal

[![PyPI](https://badge.fury.io/py/ai-mcp-terminal.svg)](https://pypi.org/project/ai-mcp-terminal/)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)

> ๐Ÿš€ Multi-threaded terminal management for AI assistants with real-time web monitoring

**Solve terminal blocking issues** - Commands run async, never block AI operations. Monitor up to **100 concurrent terminals** with intelligent cleanup and system tracking.

---

## โœจ Key Features

### Core Capabilities
* ๐Ÿš€ **Async Execution** - Commands never block AI operations
* ๐Ÿ”ข **Multi-Threading** - 100 concurrent terminals with ThreadPoolExecutor
* ๐Ÿงน **Auto Cleanup** - Smart idle session detection & memory management
* โšก **Batch Operations** - Execute across multiple terminals simultaneously
* ๐Ÿ“Š **Web Monitor** - Real-time xterm.js interface with system stats

### Smart Execution (v1.0.52+)
* ๐Ÿ”— **Workflow Engine** - Execute tasks with dependencies (DAG support)
* โณ **Smart Waiting** - Block until specific tasks complete
* ๐Ÿ“ **Sequential Execution** - Run commands in strict order
* ๐Ÿ”„ **Auto Retry** - Automatic retry on transient failures
* ๐Ÿ“‚ **Project Lock** - Terminals always start in project directory

### Platform Support
* ๐Ÿง **WSL Priority** - Auto-detect WSL bash on Windows (preferred)
* ๐ŸŒ **UTF-8 Support** - Proper encoding, no garbled text
* ๐Ÿ›‘ **Anti-Loop Protection** - Prevents AI from getting stuck in query loops

---

## ๐Ÿš€ Quick Start (1 Minute)

### Step 1: Add MCP Configuration

Add to your Cursor/Cline MCP settings:

```json
{
  "mcpServers": {
    "ai-mcp-terminal": {
      "command": "uvx",
      "args": ["ai-mcp-terminal"],
      "env": {}
    }
  }
}
```

### Step 2: Restart IDE

### Step 3: Start Using

In Cursor:

```
Create 3 terminals and run system checks in parallel
```

**AI will use `create_batch` for true concurrency!**

Browser auto-opens โ†’ `http://localhost:8000` โ†’ View all terminals in real-time!

---

## ๐Ÿ“Š Web Interface

Auto-opens at `http://localhost:8000`

**Features**:
- ๐Ÿ“บ Real-time xterm.js terminals
- ๐Ÿ“Š CPU/Memory/System stats  
- ๐Ÿ”„ Live output streaming
- ๐ŸŽฏ Click to expand terminals
- ๐Ÿ›‘ Shutdown server button

---

## ๐Ÿ› ๏ธ Available MCP Tools

### Batch Tools (Recommended)

| Tool | Description | Concurrency |
|------|-------------|-------------|
| `create_batch` | Create multiple terminals + execute | โœ… 100 threads |
| `execute_batch` | Execute across terminals | โœ… 100 threads |
| `get_batch_output` | Get all outputs | โœ… 100 threads |
| `check_completion` | Check status | โœ… 100 threads |
| `broadcast_command` | Send to all terminals | โœ… Async |

### Smart Execution Tools (v1.0.52+)

| Tool | Description | Use Case |
|------|-------------|----------|
| `execute_workflow` | DAG-based task execution | Build โ†’ Test โ†’ Deploy pipeline |
| `wait_until_complete` | Block until tasks finish | Wait for build before deploy |
| `execute_sequence` | Run commands in order | Step-by-step setup scripts |
| `execute_with_retry` | Auto-retry on failure | Network requests, downloads |

### Single Tools (Use batch tools instead!)

| Tool | Use Instead |
|------|-------------|
| `create_session` | โ†’ `create_batch` |
| `execute_command` | โ†’ `execute_batch` |
| `get_output` | โ†’ `get_batch_output` |

**Why batch tools?**
- 10x faster (parallel execution)
- 1 call instead of 10 calls
- Non-blocking design

---

## ๐ŸŽฏ Use Cases

### Multi-Service Development

```
User: "Start frontend, backend, and database"

AI calls:
create_batch(sessions=[
  {name: "frontend", cwd: "./web", initial_command: "npm run dev"},
  {name: "backend", cwd: "./api", initial_command: "python app.py"},
  {name: "db", cwd: "./", initial_command: "docker-compose up"}
])

Result: 3 services start simultaneously, web interface shows all
```

### System Information Gathering

```
User: "Check system info"

AI calls:
create_batch(sessions=[
  {name: "cpu", cwd: ".", initial_command: "wmic cpu get name"},
  {name: "mem", cwd: ".", initial_command: "wmic memorychip get capacity"},
  {name: "disk", cwd: ".", initial_command: "wmic logicaldisk get size,freespace"},
  {name: "os", cwd: ".", initial_command: "systeminfo"}
])

Later:
get_batch_output(session_ids=["cpu", "mem", "disk", "os"])

Result: All info gathered in parallel, 4x faster than serial
```

### Smart Retry for Network Operations

```
User: "Download and install dependencies"

AI calls:
execute_with_retry(
  session_id: "npm_install",
  command: "npm install",
  max_retries: 3,
  retry_delay: 2.0
)

Result:
- Attempt 1 fails (network error)
- Wait 2 seconds
- Attempt 2 fails  
- Wait 2 seconds
- Attempt 3 succeeds โœ“
```

---

## โš™๏ธ Configuration

Optional environment variables:

```json
{
  "mcpServers": {
    "ai-mcp-terminal": {
      "command": "uvx",
      "args": ["ai-mcp-terminal"],
      "env": {
        "AI_MCP_PREFERRED_SHELL": "bash"
      }
    }
  }
}
```

**Shell Priority**:
- Windows: `WSL bash` (๐Ÿง) โ†’ `Git Bash` (๐Ÿš) โ†’ `powershell` โ†’ `cmd`
- macOS: `zsh` โ†’ `bash` โ†’ `sh`
- Linux: `bash` โ†’ `zsh` โ†’ `sh`

**v1.0.52**: WSL now displays with penguin icon (๐Ÿง) in web interface, Git Bash with shell icon (๐Ÿš)

---

## ๐Ÿ”ง Installation Options

### Option 1: UVX (Recommended)

    ```json
    {
  "command": "uvx",
  "args": ["ai-mcp-terminal"]
}
```

**No installation needed!** UV handles everything.

### Option 2: PIPX

```bash
pipx install ai-mcp-terminal
```

    ```json
    {
  "command": "ai-mcp-terminal"
}
```

### Option 3: PIP

```bash
pip install ai-mcp-terminal
```

```json
{
      "command": "python",
  "args": ["-m", "src.main"]
}
```

---

## ๐Ÿ›ก๏ธ Anti-Loop Protection

**Problem**: AI gets stuck querying terminal repeatedly

**Solution**: Built-in query counter

- Query 1-2: Normal
- Query 3-4: โš ๏ธ Warning + stop instruction  
- Query โ‰ฅ5: ๐Ÿ”ช Auto-terminate process

**Result**: AI never loops, always proceeds with tasks

---

## ๐Ÿšฆ How AI Should Use This

### โœ… Correct Pattern

```
Dialog 1:
User: "Deploy React app"
AI: 
  1. create_batch(...) 
  2. Reply: "Deploying in background..."
  3. END conversation

Dialog 2 (later):
User: "Is it done?"
AI:
  1. check_completion(...)
  2. Reply: "Still running..." or "Done!"
  3. END conversation
```

### โŒ Wrong Pattern (Fixed by protection)

```
Dialog 1:
User: "Deploy React app"
AI:
  1. execute_command(...)
  2. get_output(...) โ†’ running
  3. get_output(...) โ†’ running  [Query 2]
  4. get_output(...) โ†’ running  [Query 3 - WARNING]
  5. get_output(...) โ†’ running  [Query 4]
  6. get_output(...) โ†’ AUTO-KILLED [Query 5]
  7. Error: "Loop detected, process terminated"
```

---

## ๐Ÿ“ Project Structure

```
ai-mcp-terminal/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main.py              # Entry point
โ”‚   โ”œโ”€โ”€ mcp_server.py        # MCP protocol handler (30+ tools)
โ”‚   โ”œโ”€โ”€ terminal_manager.py  # Terminal management (3400+ lines)
โ”‚   โ”œโ”€โ”€ web_server.py        # FastAPI + WebSocket
โ”‚   โ”œโ”€โ”€ key_mapper.py        # Keyboard interaction support
โ”‚   โ””โ”€โ”€ static/              # Web UI (xterm.js)
โ”œโ”€โ”€ docs/                    # Documentation (15+ guides)
โ”œโ”€โ”€ examples/                # Usage examples
โ”œโ”€โ”€ CHANGELOG.md             # Detailed version history
โ”œโ”€โ”€ README.md
โ”œโ”€โ”€ LICENSE
โ””โ”€โ”€ pyproject.toml
```

---

## ๐Ÿ”ง Troubleshooting

### Web Interface Not Opening

**Solution**: Visit `http://localhost:8000` manually

### Port Already in Use

**Solution**: 
1. Auto-finds next available port
2. Or click shutdown in existing interface

### AI Keeps Using Single Tools

**Solution**: 
1. Restart IDE (MCP caches tool definitions)
2. Check tool descriptions loaded correctly

---

## ๐Ÿ“„ License

MIT License - see [LICENSE](LICENSE)

---

## ๐Ÿค Contributing

Contributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md)

---

## ๐Ÿ”— Links

- **PyPI**: https://pypi.org/project/ai-mcp-terminal/
- **GitHub**: https://github.com/kanniganfan/ai-mcp-terminal
- **Issues**: https://github.com/kanniganfan/ai-mcp-terminal/issues
- **Changelog**: [CHANGELOG.md](CHANGELOG.md)

---

## ๐Ÿ†• What's New in v1.0.53

### ๐ŸŽฏ Production-Ready Improvements
Based on real PyPI release testing, v1.0.53 brings **battle-tested improvements** that solve actual production issues:

#### ๐Ÿ” Enhanced Debugging
- **Detailed Statistics**: Every command returns `output_bytes`, `output_lines`, `execution_time`, `encoding_used`
- **Clear Status**: Explicit `success: true/false` instead of ambiguous `exit_code: null`
- **No More Guessing**: Know exactly what happened with every command

#### ๐Ÿ›ก๏ธ Smart Error Prevention
- **Shell Type Detection**: Warns when PowerShell command sent to Bash terminal (and vice versa)
- **Quick Fix Suggestions**: Provides exact commands to fix common errors
- **7 Error Categories**: PyPI duplicates, encoding errors, permissions, network, syntax, etc.

#### ๐ŸŒ Zero-Config UTF-8 (Windows)
- **Auto Setup**: Sets `PYTHONIOENCODING=utf-8` and `PYTHONUTF8=1` automatically
- **No More Encoding Errors**: twine, pip, and other Python tools just work
- **80% Fewer Errors**: Eliminates common `UnicodeEncodeError` issues

#### ๐Ÿ”„ Intelligent Batch Execution
- **Smart Queueing**: Same terminal โ†’ sequential, different terminals โ†’ concurrent
- **Zero Race Conditions**: No more "upload before build finishes" issues
- **Maximum Efficiency**: Still fully concurrent across different terminals

### Previous Features (v1.0.52)
- โœจ **execute_workflow()** - DAG-based task orchestration
- โณ **wait_until_complete()** - Smart blocking wait
- ๐Ÿ“ **execute_sequence()** - Sequential execution with error handling
- ๐Ÿ”„ **execute_with_retry()** - Automatic retry mechanism

See [CHANGELOG.md](CHANGELOG.md) for complete details.

---

**Made with โค๏ธ for AI Assistants**

If this helps you, please give it a โญ star!

Maintenance

ActivityInactive
ResponsivenessNo issues