by GentlemanHu
Enables AI agents to control the Tabby terminal through an MCP server, providing full command execution, tab and profile management, and SFTP file operations from AI assistants.
Tabby MCP extends the Tabby terminal with an MCP server that lets AI assistants interact with the terminal environment. It offers a standardized set of tools for executing commands, manipulating tabs, handling profiles, and performing remote file operations via SFTP, all without manual user intervention.
tabby-mcp-server and install.curl -fsSL https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.sh | bash
http://localhost:3001/mcp to the client’s MCP configuration.scripts/stdio-bridge.js with Node.js.tabby-ssh): list/read/write remote files, create/delete/rename directories, upload/download with synchronous or asynchronous modes, transfer monitoring and cancellation.Q: Do I need Node.js to run the plugin? A: No. The plugin can be installed via Tabby’s plugin manager or the provided shell scripts, which download a pre‑built release. Node.js is only required for the STDIO bridge.
Q: Which ports does the server use? A: The default MCP server listens on port 3001. This can be changed in Settings → MCP.
Q: How does SFTP work?
A: SFTP tools rely on the tabby-ssh plugin. When installed, Tabby MCP automatically discovers SSH sessions and uses them for remote file operations.
Q: Can I run commands in the background? A: Yes. Enable Background Execution in the MCP settings. Commands will run without switching focus, but you lose real‑time visual feedback.
Q: Is the plugin safe from malicious commands? A: Pair‑programming mode shows a confirmation dialog for each command. You can also disable it, but it is recommended to keep it enabled for safety.
Q: How do I connect an AI client that only supports STDIO? A: Run the bridge script provided in the repository:
node scripts/stdio-bridge.js
Then configure the client to launch this command as its MCP server.
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.
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:
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 failure
tabby-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 sh
Bug 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!
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.
by github
Connects AI tools directly to GitHub, enabling natural‑language interactions for repository browsing, issue and pull‑request management, CI/CD monitoring, code‑security analysis, and team collaboration.
{
"mcpServers": {
"Tabby MCP": {
"command": "npx",
"args": [
"-y",
"tabby-mcp-server",
"scripts/stdio-bridge.js"
],
"env": {}
}
}
}claude mcp add Tabby MCP npx -y tabby-mcp-server scripts/stdio-bridge.js