loading…
Search for a command to run...
loading…
An MCP server plugin for the Tabby Terminal that enables AI assistants to execute commands, read terminal buffers, and manage tabs and profiles. It features 18
An MCP server plugin for the Tabby Terminal that enables AI assistants to execute commands, read terminal buffers, and manage tabs and profiles. It features 18 specialized tools for comprehensive terminal control and session management with built-in security confirmations.
License: MIT TypeScript Tabby Plugin MCP Protocol GitHub Release AI Generated Tested on
A Comprehensive MCP Server Plugin for Tabby Terminal
Connect AI assistants to your terminal with full control — 34 MCP tools including SFTP support
🚀 Tabby-MCP is a powerful plugin for Tabby Terminal, bridging the gap between AI agents and your terminal environment. It provides a standardized MCP interface for AI to execute commands, manage tabs, and handle file operations securely.
Give your AI hands to work with.
🖥️ Terminal Control
|
📑 Tab Management
|
🔗 Profile & SSH
|
📁 SFTP Operations (v1.1+)
|
Pair programming mode with confirmation dialogs • Comprehensive logging • Safe command execution
Search for tabby-mcp-server directly in Tabby's built-in Plugin Manager:
tabby-mcp-serverNo Node.js required! Downloads pre-built release from GitHub.
curl -fsSL https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.sh | bash
Or download and run:
wget https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.sh
bash install.sh
irm https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.ps1 | iex
Or download and run:
Invoke-WebRequest -Uri https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.ps1 -OutFile install.ps1
.\install.ps1
Requires Node.js 18+.
# Clone
git clone https://github.com/GentlemanHu/Tabby-MCP.git
cd Tabby-MCP
# Build & Install
bash scripts/build-and-install.sh
Or manually:
npm install --legacy-peer-deps
npm run build
# Then copy dist/ and package.json to Tabby plugins folder
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"Tabby MCP": {
"type": "streamable_http",
"url": "http://localhost:3001/mcp"
}
}
}
For clients that don't support SSE, use the STDIO bridge:
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"tabby-mcp-server": {
"command": "node",
"args": ["/path/to/Tabby-MCP/scripts/stdio-bridge.js"]
}
}
}
VS Code / Other IDEs:
{
"mcp": {
"servers": {
"tabby-mcp-server": {
"type": "stdio",
"command": "node",
"args": ["scripts/stdio-bridge.js"],
"cwd": "/path/to/Tabby-MCP"
}
}
}
}
Note: STDIO mode requires Node.js installed. The bridge script connects to the SSE server running in Tabby.
| Endpoint | URL | Protocol |
|---|---|---|
| Streamable HTTP | http://localhost:3001/mcp |
2025-03-26 (recommended) |
| Legacy SSE | http://localhost:3001/sse |
2024-11-05 |
| Health | http://localhost:3001/health |
- |
| Info | http://localhost:3001/info |
- |
| Tool | Description |
|---|---|
get_session_list |
List all terminal sessions with stable UUIDs and metadata |
exec_command |
Execute command with flexible session targeting |
send_input |
Send interactive input (Ctrl+C, etc) |
get_terminal_buffer |
Read terminal buffer (defaults to active session) |
abort_command |
Abort running command |
get_command_status |
Monitor active commands |
focus_pane |
Focus a specific pane in split view |
New in v1.1: All terminal tools now support flexible session targeting:
sessionId(stable UUID, recommended)tabIndex(legacy, may change)title(partial match)profileName(partial match)- No parameters = use active session
| Tool | Description |
|---|---|
list_tabs |
List all open tabs with stable IDs |
select_tab |
Focus a specific tab (defaults to active) |
close_tab |
Close a tab |
close_all_tabs |
Close all tabs |
duplicate_tab |
Duplicate a tab |
next_tab / previous_tab |
Navigate tabs |
move_tab_left / move_tab_right |
Reorder tabs |
reopen_last_tab |
Reopen closed tab |
split_tab |
Split current tab (horizontal/vertical) |
| Tool | Description |
|---|---|
list_profiles |
List terminal profiles |
open_profile |
Open tab with profile |
show_profile_selector |
Show profile dialog |
quick_connect |
SSH quick connect |
Requires
tabby-sshplugin. If not installed, SFTP tools are disabled automatically.
Basic Operations:
| Tool | Description | Key Parameters |
|---|---|---|
sftp_list_files |
List remote directory | path |
sftp_read_file |
Read remote file (text) | path |
sftp_write_file |
Write text to remote file | path, content |
sftp_mkdir |
Create remote directory | path |
sftp_delete |
Delete remote file/directory | path |
sftp_rename |
Rename/move remote file | sourcePath, destPath |
sftp_stat |
Get file/directory info | path |
File Transfer (supports sync/async):
| Tool | Description | Key Parameters |
|---|---|---|
sftp_upload |
Upload local file → remote | localPath, remotePath, sync |
sftp_download |
Download remote → local file | remotePath, localPath, sync |
sftp_get_transfer_status |
Query transfer progress | transferId |
sftp_list_transfers |
List all transfers | status (filter) |
sftp_cancel_transfer |
Cancel active transfer | transferId |
Transfer Modes:
sync=true(default) waits for completion.sync=falsereturns immediately withtransferId.Size Limits: Configurable in Settings → MCP → SFTP.
| Setting | Description | Default |
|---|---|---|
| Port | MCP server port | 3001 |
| Start on Boot | Auto-start server | true |
| Pair Programming | Confirm commands | true |
| Session Tracking | Use stable UUIDs | true |
| Background Execution | Run without focus | false |
| SFTP Enabled | Enable SFTP tools | true |
Enable this mode to allow MCP commands to run without switching focus to the terminal. This lets you continue working on other tabs while AI executes commands in the background.
Settings → MCP → Background Execution
⚠️ Risks:
- You won't see commands executing in real-time
- If you type in the target terminal while AI is running, input will conflict
- For split panes, commands go to the
sessionIdtarget, not the focused pane- Dangerous commands could run without you noticing
✅ Recommended: Keep "Pair Programming Mode" enabled with confirmation dialogs for safety.
| Platform | Status | Notes |
|---|---|---|
| macOS | ✅ Tested | Fully functional |
| Windows | ⚠️ Untested | Should work — please report issues |
| Linux | ⚠️ Untested | Should work — please report issues |
Note: This plugin has been developed and tested on macOS. Windows and Linux support should work but is unverified. Community testing and feedback welcome!
This project was created almost entirely by AI (Claude/Gemini) through pair programming.
The human's role was primarily to provide requirements and test the results.
This project builds upon the work of tabby-mcp-server by @thuanpham582002.
Improvements over the original:
| Feature | Original | This Project |
|---|---|---|
| MCP Tools | 4 | 34 |
| Tab Management | ❌ | ✅ |
| Profile/SSH | ❌ | ✅ |
| SFTP Support | ❌ | ✅ |
| Stable Session IDs | ❌ | ✅ |
| Streamable HTTP | ❌ | ✅ |
| Init Bug | Has issue | ✅ Fixed |
| Install Script | Manual | ✅ One-liner |
🐛 Bug Fixes:
/api/tool/{name} returning 404 (Issue #4) - Tool API endpoints were registered during configureExpress() when toolCategories was still empty due to Angular DI initialization orderconfigureToolEndpoints() to startServer() where all tools are guaranteed to be registered🐛 Bug Fixes:
streamable_http instead of sse/health and /info endpoints now use PLUGIN_VERSION constant🏗️ Architecture Improvements:
WeakMap with Map + TTL (5min)stat('/') before reuse📦 Build & Install:
install.sh / install.ps1) extraction failuretabby-mcp-servertabby-mcp directory namesBug Fixes:
exec_command and send_input no longer incorrectly report "Session disconnected"tab.destroyed is a Subject<void> (RxJS Observable), NOT a booleansession.open === false for disconnect detectionCleanup:
russh-based SFTP implementationfastPut/fastGet detection codei18n:
🔧 Critical Bug Fixes:
🎨 UI Improvements:
🔧 Terminal Improvements:
[findSSHSession] debug logs for troubleshootingImprovements:
package.jsonNew Features:
en-US, en-GB)zh-CN, zh-TW)New Features:
exec_command now supports Fish, Bash, Zsh, and shBug Fixes:
open_profile SSH readiness detection - no longer returns prematurely before SSH is connected$status vs $?)Bug Fixes:
open_profile sessionId inconsistency - now returns same sessionId as get_session_listready now correctly reflects overall connection statusImprovements:
open_profile response:tabReady: Tab/frontend initializedsshConnected: SSH connection established (SSH profiles only)ready: Overall ready state (for SSH: tabReady AND sshConnected)tabby-ssh to devDependencies for developer build stabilityOptimization:
Bug Fixes:
transport.onclose handler to properly remove closed sessions from trackingMajor Fixes:
SplitTabComponentget_terminal_buffer and select_tab returning error when called without parametersselect_tab tool not finding tabs by tabId (bidirectional lookup)quick_connect and open_profile parameter validation issuesImprovements:
focus_pane and split_tab to documentationSee CONTRIBUTING.md for guidelines.
MIT License - see LICENSE
Made with ❤️ by AI and GentlemanHu
⭐ Star this repo if you find it useful!
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"tabby-mcp": {
"command": "npx",
"args": []
}
}
}