🚀 Tabby-MCP 是专为 Tabby Terminal 打造的强力插件,旨在弥合 AI Agent 与终端环境之间的鸿沟。它提供了标准化的 MCP 接口,让 AI 能够安全地执行命令、管理标签页并处理文件操作。
让你的 AI 拥有操作终端的“双手”。
|
|
|
|
v1.6.3 安全模型: 结对编程模式通过非阻塞确认对话框保护
exec_command、send_input、键盘交互式认证响应和敏感 SFTP 操作;两分钟无人处理时自动拒绝。认证响应值绝不会显示在确认详情中。对话框关闭后会恢复终端焦点,避免 Electron/xterm 的键盘和输入法问题。只读的传输状态工具和用于紧急中止的abort_command无需确认。网络仅限本机回环地址(127.0.0.1),两种 MCP 传输均验证 Origin,直连工具 API 默认关闭。
在 Tabby 内置插件管理器中搜索 tabby-mcp-server:

- 打开 Tabby → 设置 → 插件
- 搜索
tabby-mcp-server - 点击 安装
- 重启 Tabby
无需 Node.js! 从 GitHub 下载预构建版本。
🍎 macOS / 🐧 Linux
curl -fsSL https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.sh | bash或下载后运行:
wget https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.sh
bash install.sh🪟 Windows (PowerShell)
irm https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.ps1 | iex或下载后运行:
Invoke-WebRequest -Uri https://raw.githubusercontent.com/GentlemanHu/Tabby-MCP/main/scripts/install.ps1 -OutFile install.ps1
.\install.ps1需要 Node.js 18+。
# 克隆仓库
git clone https://github.com/GentlemanHu/Tabby-MCP.git
cd Tabby-MCP
# 构建并安装
bash scripts/build-and-install.sh或手动操作:
npm install --legacy-peer-deps
npm run build
# 然后将 dist/ 和 package.json 复制到 Tabby 插件目录- 重启 Tabby
- 进入 设置 → MCP
- 启动 MCP 服务器
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"Tabby MCP": {
"type": "streamable_http",
"url": "http://127.0.0.1:3001/mcp"
}
}
}| 端点 | URL | 协议版本 |
|---|---|---|
| Streamable HTTP | http://127.0.0.1:3001/mcp |
2025-03-26 (推荐) |
| Legacy SSE | http://127.0.0.1:3001/sse |
2024-11-05 |
| 健康检查 | http://127.0.0.1:3001/health |
- |
| 服务器信息 | http://127.0.0.1:3001/info |
- |
| 工具 | 说明 |
|---|---|
get_session_list |
列出所有终端会话(包含稳定 UUID) |
exec_command |
执行命令(支持多种定位方式) |
send_input |
发送交互式输入 (Ctrl+C 等) |
submit_keyboard_interactive_response |
提交 MFA、密码或其他 SSH 键盘交互式认证响应 |
get_terminal_buffer |
读取终端缓冲区(默认使用活跃会话) |
abort_command |
中止正在运行的命令 |
get_command_status |
监控活动命令状态 |
focus_pane |
聚焦分割视图中的特定窗格 |
get_session_environment |
探测 Shell/REPL 环境(可选,默认关闭) |
v1.1 新功能: 所有终端工具支持灵活定位:
sessionId(稳定 UUID,推荐)tabIndex(传统方式,可能变化)title(部分匹配)profileName(部分匹配)- 无参数 = 使用活跃会话
| 工具 | 说明 |
|---|---|
list_tabs |
列出所有打开的标签页(包含稳定 ID) |
select_tab |
选中指定标签页 |
close_tab |
关闭标签页 |
close_all_tabs |
关闭所有标签页 |
duplicate_tab |
复制标签页 |
split_tab |
分割窗格(左/右/上/下) |
next_tab / previous_tab |
导航标签页 |
move_tab_left / move_tab_right |
移动标签页 |
reopen_last_tab |
重新打开已关闭的标签页 |
| 工具 | 说明 |
|---|---|
list_profiles |
列出终端配置文件 |
open_profile |
使用配置文件打开标签页 |
show_profile_selector |
显示配置文件对话框 |
quick_connect |
智能快速连接(SSH/telnet/socket/serial) |
需要
tabby-ssh。如果未安装,或在设置中关闭了 SFTP,新建 MCP 会话将不会暴露这 12 个工具。启用结对编程确认后,目录列表、元数据读取、文件读写、传输、删除、重命名、创建目录及取消传输均需用户批准。
基础操作:
| 工具 | 说明 | 关键参数 |
|---|---|---|
sftp_list_files |
列出远程目录 | path |
sftp_read_file |
读取远程文件(文本) | path |
sftp_write_file |
写入文本到远程文件 | path, content |
sftp_mkdir |
创建远程目录 | path |
sftp_delete |
删除远程文件/目录 | path |
sftp_rename |
重命名/移动远程文件 | sourcePath, destPath |
sftp_stat |
获取文件/目录信息 | path |
文件传输(支持同步/异步):
| 工具 | 说明 | 关键参数 |
|---|---|---|
sftp_upload |
上传本地文件 → 远程 | localPath, remotePath, sync |
sftp_download |
下载远程 → 本地文件 | remotePath, localPath, sync |
sftp_get_transfer_status |
查询传输进度 | transferId |
sftp_list_transfers |
列出所有传输 | status(过滤) |
sftp_cancel_transfer |
取消活跃传输 | transferId |
传输模式:
sync=true(默认)等待完成。sync=false立即返回transferId。大小限制:可在设置 → MCP → SFTP 中配置。
| 设置 | 说明 | 默认值 |
|---|---|---|
| 端口 | MCP 服务器端口 | 3001 |
| 启动时运行 | 自动启动服务器 | true |
| 结对编程模式 | 确认命令、原始输入和敏感 SFTP 操作 | true |
| SFTP 操作确认 | 将确认对话框应用于敏感 SFTP 操作(send_input 始终遵循命令确认设置) |
true |
| 会话跟踪 | 使用稳定 UUID | true |
| 后台执行 | 无需聚焦执行 | false |
| SFTP 启用 | 启用 SFTP 工具 | true |
| 环境探测 | 暴露 get_session_environment |
false |
| 直连工具 API | 启用兼容端点 /api/tool/:name(仅支持手动配置) |
false |
启用此模式允许 MCP 命令在不切换焦点的情况下执行。您可以继续在其他标签页工作,同时 AI 在后台执行命令。
设置 → MCP → 后台执行
⚠️ 风险提示:
- 你将无法实时看到命令执行过程
- 如果你在目标终端输入时 AI 也在执行命令,输入会混乱
- 对于分割窗格,命令发送到
sessionId指定的窗格,而非聚焦的窗格- 危险命令可能在你不知情的情况下执行
✅ 建议: 保持结对编程模式、确认对话框和文件操作确认开启。服务器仅监听
127.0.0.1;直连/api/tool/:name兼容 API 默认关闭。
| 平台 | 状态 | 说明 |
|---|---|---|
| macOS | ✅ 已测试 | 完全功能 |
| Windows | 应该可用 — 欢迎反馈问题 | |
| Linux | 应该可用 — 欢迎反馈问题 |
注意:本插件在 macOS 上开发和测试。Windows 和 Linux 支持应该可用但未经验证。欢迎社区测试和反馈!
本项目在 @thuanpham582002 的 tabby-mcp-server 基础上构建。
相比原项目的改进:
| 特性 | 原项目 | 本项目 |
|---|---|---|
| MCP 工具 | 4 | 35 |
| 标签页管理 | ❌ | ✅ |
| 配置文件/SSH | ❌ | ✅ |
| SFTP 支持 | ❌ | ✅ |
| 稳定会话 ID | ❌ | ✅ |
| Streamable HTTP | ❌ | ✅ |
| 初始化 Bug | 存在问题 | ✅ 已修复 |
| 安装脚本 | 手动 | ✅ 一行命令 |
⚠️ 预发布版本,尚未发布到 npm。 可从 GitHub 预发布页面 安装,如遇异常请在对应 issue 下反馈。键盘交互式认证已在真实 Tabby 环境中完整跑通(从提交 MFA 到进入 Jumpserver 资产菜单,Tabby 1.0.229 与 1.0.235 / macOS)。下方 rc.1 的修复——对话框焦点恢复、SFTP 传输的实际取消行为、多实例端口交接——尚未经过手动实机验证,仍需测试。
- 新增
submit_keyboard_interactive_response,用于处理 MFA/TOTP 等 SSH 键盘交互式认证(PR #8,感谢 @plane636)。send_input写入的是终端 PTY,无法触达 Tabby 的认证面板。结对编程确认只显示响应数量,不显示认证值。 get_session_list现在会报告sshConnected、keyboardInteractivePending以及不含机密的提示元数据。- 修复 Tabby 1.0.235 上的启动崩溃:Angular 服务构造阶段
ConfigService.store尚不可用,会导致 Tabby 进入第三方插件安全模式。 - 工具数量文档已校正为 36 个(通常可见 35 个;
get_session_environment为可选工具且默认关闭)。
- 修复 Issue #9:结对编程确认现在覆盖
send_input和敏感 SFTP 操作;取消传输会真正终止底层传输。 - 修复 Issue #7:用非阻塞、可恢复焦点的对话框替代浏览器阻塞弹窗,并让命令聚焦行为遵循“自动聚焦终端”设置。
- 修复 Issue #5:仅监听回环地址、启动退避重试、旧实例识别,以及同一安装实例间经过认证的端口交接。
- 修复 SDK 1.25.2 下 Legacy SSE JSON 请求体处理、会话清理、失效 Streamable HTTP 会话、Origin 校验、fish 主动环境探测、SFTP 定位器一致性及 STDIO 重连/消息帧问题。
- 固定
@modelcontextprotocol/sdk为 1.25.2,提交package-lock.json,并新增类型检查、冒烟测试和构建质量门禁。
完整版本历史请查看 CHANGELOG.md。
查看 CONTRIBUTING.md 了解贡献指南。
MIT 许可证 - 见 LICENSE
由 AI 和 GentlemanHu 用 ❤️ 制作
⭐ 如果觉得有用,请给个 Star!
