terminal-bridge-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@terminal-bridge-mcpCreate a terminal running 'npm run dev' in /projects/web and show output"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
terminal-bridge-mcp
An MCP (Model Context Protocol) server that bridges AI assistants to real terminal sessions — create, manage, read, and interact with persistent PTY processes.
Built with TypeScript, node-pty, and the MCP SDK.
Why terminal-bridge-mcp?
AI coding assistants can write code, but they usually can't run it. terminal-bridge-mcp closes this gap by giving your AI a real terminal — not a sandboxed exec, but a full PTY session with persistent state.
This means your AI assistant can:
Start dev servers and monitor their output in real time
Run tests across multiple projects simultaneously
Manage long-running processes (databases, queues, background workers)
Debug interactively — send input to running programs, read responses
Monitor deployments — tail logs, check health endpoints, watch for errors
All from within your existing MCP-compatible AI workflow (Claude Desktop, Cursor, Windsurf, etc.).
Related MCP server: Terminally MCP
Key Features
Multiple persistent sessions — each terminal lives independently with its own state
Real PTY — full pseudo-terminal support, not just
child_process.execRegex search — search across all sessions to find errors, warnings, or any pattern
ANSI stripping — output is cleaned automatically for AI consumption
Output buffering — up to 50,000 lines / 10MB per session, ring buffer with no memory leaks
Configurable — custom working directory, environment variables, terminal dimensions
Use Cases
1. Start and Monitor Dev Servers
Let your AI start a frontend dev server and check when it's ready:
> terminal_create {"command": "pnpm dev", "cwd": "/projects/my-app", "name": "frontend"}
→ Created session: term-1-abc123 (pid: 42000)
> terminal_read {"session_id": "term-1-abc123"}
→ VITE v7.3.1 ready in 2430ms
➜ Local: http://localhost:5173/2. Run Backend Services with Virtual Environments
Activate a Python virtual environment and start the backend:
> terminal_create {"command": ".venv\\Scripts\\activate && fba run", "cwd": "/projects/backend", "name": "backend"}
→ Created session: term-2-def456 (pid: 43000)
> terminal_read {"session_id": "term-2-def456"}
→ API running at http://127.0.0.1:8000/api/v13. Run Tests in Parallel Across Projects
Start test runners for multiple services and monitor results:
> terminal_create {"command": "pytest -x", "cwd": "/projects/api", "name": "api-tests"}
> terminal_create {"command": "vitest run", "cwd": "/projects/web", "name": "web-tests"}
> terminal_create {"command": "go test ./...", "cwd": "/projects/worker", "name": "worker-tests"}
> terminal_search {"pattern": "PASS|FAIL|error|panic"}
→ [api-tests] 12 passed, 0 failed
[web-tests] FAIL src/auth.test.ts
[worker-tests] panic: nil pointer dereference4. Manage Long-Running Infrastructure
Start databases, message queues, or background workers:
> terminal_create {"command": "docker compose up", "cwd": "/projects/my-stack", "name": "infra"}
> terminal_create {"command": "celery -A tasks worker", "cwd": "/projects/worker", "name": "celery"}
> terminal_read {"session_id": "term-infra", "filter": "ready|listening|started"}
→ postgres is ready to accept connections
redis is ready to accept connections5. Interactive Debugging
Send commands to a running REPL or CLI tool:
> terminal_create {"command": "python", "name": "repl"}
> terminal_write {"session_id": "term-repl", "text": "import pandas as pd"}
> terminal_write {"session_id": "term-repl", "text": "df = pd.read_csv('data.csv')"}
> terminal_write {"session_id": "term-repl", "text": "df.describe()"}
> terminal_read {"session_id": "term-repl"}
→ count mean std min max
age 1000 35.2 12.1 18.0 89.06. Monitor Logs and Tail Output
Watch for specific patterns in running services:
> terminal_read {"session_id": "term-backend", "filter": "ERROR|WARN|exception", "lines": 200}
→ [ERROR] Connection refused to database replica
[WARN] Retry attempt 3/5 for external API
> terminal_search {"pattern": "OOM|out of memory|killed"}
→ [worker] Process killed (OOM)Requirements
Node.js >= 22.0.0
Windows (uses PowerShell as the default shell)
Install
git clone https://github.com/dividduang/terminal-bridge-mcp.git
cd terminal-bridge-mcp
npm install
npm run buildConfigure
Add to your MCP client configuration (.mcp.json, Claude Desktop settings, Cursor, Windsurf, etc.):
{
"mcpServers": {
"terminal-bridge": {
"command": "node",
"args": ["path/to/terminal-bridge-mcp/dist/index.js"]
}
}
}Tools
terminal_create
Create a new managed terminal session.
Parameter | Type | Default | Description |
| string | - | Command to run on start |
| string | - | Working directory |
| string | - | Friendly name for the session |
| object | - | Additional environment vars |
| number | 120 | Terminal columns |
| number | 40 | Terminal rows |
Returns a session ID, PID, and session name.
terminal_list
List all managed terminal sessions with their status, names, PIDs, and output line counts.
terminal_read
Read output from a terminal session.
Parameter | Type | Default | Description |
| string | - | Session ID (required) |
| number | 100 | Number of recent lines to return |
| string | - | Regex pattern to filter lines |
| boolean | false | Include ANSI escape codes |
terminal_search
Search across terminal sessions for lines matching a regex pattern.
Parameter | Type | Default | Description |
| string | - | Regex pattern (required) |
| string | - | Limit to a specific session |
| number | 50 | Maximum number of results |
terminal_write
Send input text to a running terminal session.
Parameter | Type | Default | Description |
| string | - | Session ID (required) |
| string | - | Text to send (required) |
| boolean | true | Append Enter key after text |
terminal_kill
Kill a terminal session and remove it from management.
Parameter | Type | Description |
| string | Session ID (required) |
Architecture
src/
├── index.ts # MCP server and tool definitions
├── pty-manager.ts # PTY process lifecycle management
├── output-buffer.ts # Ring buffer for terminal output
└── types.ts # TypeScript interfacesOutputBuffer — ring buffer that stores up to 50,000 lines / 10MB, strips ANSI codes, supports regex search
PtyManager — manages multiple sessions, resolves shell to
pwsh.exeorpowershell.exe
Comparison
Feature | terminal-bridge-mcp |
| IDE Terminal |
Full PTY support | Yes | No | Yes |
AI can read output | Yes | Manual | No |
Multiple sessions | Yes | One-shot | Manual |
Regex search across sessions | Yes | No | No |
Persistent state | Yes | No | Yes |
Interactive input (write back) | Yes | No | Manual |
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Related MCP Servers
- AlicenseCqualityCmaintenanceA server that enables AI assistants to execute terminal commands and retrieve outputs via the Model Context Protocol (MCP).327MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI assistants the ability to create, manage, and control terminal sessions through a safe, isolated tmux environment.1-
- AlicenseBqualityAmaintenanceA secure MCP server for shell operations, terminal management, and process control, enabling AI assistants to safely execute commands and manage interactive sessions.13704 npm6MIT
- AlicenseAqualityCmaintenanceMCP server that gives AI agents real interactive terminal sessions for running REPLs, SSH, database clients, and any interactive CLI with clean text output and smart completion detection.749 npm18MIT