Observed since 21 Oct, 11:17 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
AI终端管理器 - 支持MCP协议的多线程终端系统,提供并发执行、智能调度、交互检测、Web界面等功能
🚀 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.
Add to your Cursor/Cline MCP settings:
{
"mcpServers": {
"ai-mcp-terminal": {
"command": "uvx",
"args": ["ai-mcp-terminal"],
"env": {}
}
}
}
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!
Auto-opens at http://localhost:8000
Features:
| 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 |
| 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 |
| Tool | Use Instead |
|---|---|
create_session | → create_batch |
execute_command | → execute_batch |
get_output | → get_batch_output |
Why batch tools?
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
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
User: "Release to PyPI"
AI calls:
execute_workflow(tasks=[
{
name: "clean",
session_id: "build",
command: "rm -rf dist build *.egg-info"
},
{
name: "build",
session_id: "build",
command: "python -m build",
depends_on: ["clean"]
},
{
name: "upload",
session_id: "upload",
command: "twine upload dist/*",
depends_on: ["build"],
retry: true,
max_retries: 3
}
])
Result:
- Clean executes first
- Build waits for clean to complete
- Upload waits for build, retries on failure
- Tasks run in parallel when possible
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 ✓
Optional environment variables:
{
"mcpServers": {
"ai-mcp-terminal": {
"command": "uvx",
"args": ["ai-mcp-terminal"],
"env": {
"AI_MCP_PREFERRED_SHELL": "bash"
}
}
}
}
Shell Priority:
WSL bash (🐧) → Git Bash (🐚) → powershell → cmdzsh → bash → shbash → zsh → shv1.0.52: WSL now displays with penguin icon (🐧) in web interface, Git Bash with shell icon (🐚)
```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
{
"command": "python",
"args": ["-m", "src.main"]
}
Problem: AI gets stuck querying terminal repeatedly
Solution: Built-in query counter
Result: AI never loops, always proceeds with tasks
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
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"
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
Solution: Visit http://localhost:8000 manually
Solution:
Solution:
MIT License - see LICENSE
Contributions welcome! See CONTRIBUTING.md
Based on real PyPI release testing, v1.0.53 brings battle-tested improvements that solve actual production issues:
output_bytes, output_lines, execution_time, encoding_usedsuccess: true/false instead of ambiguous exit_code: nullPYTHONIOENCODING=utf-8 and PYTHONUTF8=1 automaticallyUnicodeEncodeError issuesSee CHANGELOG.md for complete details.
Made with ❤️ for AI Assistants
If this helps you, please give it a ⭐ star!
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.0.54 | 16 Oct 2025 | 7 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 21 Oct, 11:17 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:c38418bcd15c03dcd6dc5391c06c3bf832b5c967f288a5e40825f5705e489be3