🚀 Tabby MCP
    ](https://github.com/GentlemanHu/Tabby-MCP/releases)  
Tabby终端的综合MCP服务器插件
*通过完全控制将AI助手连接到您的终端——34个MCP工具,包括SFTP支持*
______________________________________________________________________
🚀 Tabby MCP 是一个功能强大的插件 Tabby终端,弥合AI代理和终端环境之间的差距。它为AI提供了一个标准化的MCP接口,以安全地执行命令、管理选项卡和处理文件操作。 *让你的人工智能手一起工作。*
______________________________________________________________________
✨ 特性
🖥️ Terminal Control
Execute commands with output capture
Stable session IDs (v1.1+)
Send interactive input (vim, less, top)
Read terminal buffer content
Abort/monitor running commands
📑 Tab Management
Create/Close/Duplicate tabs
Split panes (horizontal/vertical)
Navigate between tabs
Move tabs left/right
Reopen closed tabs
🔗 Profile & SSH
List all terminal profiles
Open new tabs with profiles
SSH quick connect
Profile selector dialog
📁 SFTP Operations (v1.1+)
List/read/write remote files
Create/delete directories
Rename/move files
(Requires tabby-ssh)
🔒 Security Features
Pair programming mode with confirmation dialogs • Comprehensive logging • Safe command execution
______________________________________________________________________
📦 安装
方法1:Tabby插件管理器(最简单)
搜索 tabby-mcp-server 直接在Tabby的内置插件管理器中:
- 打开选项卡→ 设置 → 插件
- 搜索
tabby-mcp-server - 点击 安装
- 重新启动Tabby
______________________________________________________________________
方法2:快速安装脚本
不需要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______________________________________________________________________
方法3:从源代码构建
需要 Node.js 18+.
# Clone
git clone https://github.com/GentlemanHu/Tabby-MCP.git
cd Tabby-MCP
# Build & Install
bash scripts/build-and-install.sh或手动:
npm install --legacy-peer-deps
npm run build
# Then copy dist/ and package.json to Tabby plugins folder______________________________________________________________________
🔄 安装后
- 重新启动Tabby
- 首选 设置→ MCP
- 启动MCP服务器
______________________________________________________________________
🔌 连接AI客户端
流式HTTP模式(光标/风帆/客户端)
添加 ~/.cursor/mcp.json:
{
"mcpServers": {
"Tabby MCP": {
"type": "streamable_http",
"url": "http://localhost:3001/mcp"
}
}
}STDIO模式(克劳德桌面/VS代码)
对于不支持SSE的客户端,请使用STDIO网桥:
克劳德桌面 (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"tabby-mcp-server": {
"command": "node",
"args": ["/path/to/Tabby-MCP/scripts/stdio-bridge.js"]
}
}
}VS代码/其他IDE:
{
"mcp": {
"servers": {
"tabby-mcp-server": {
"type": "stdio",
"command": "node",
"args": ["scripts/stdio-bridge.js"],
"cwd": "/path/to/Tabby-MCP"
}
}
}
}备注:STDIO模式需要安装Node.js。桥接脚本连接到在Tabby中运行的SSE服务器。
端点
| 端点 | URL | 协议 |
|---|---|---|
| 流式HTTP | http://localhost:3001/mcp | 2025-03-26(推荐) |
| 传统SSE | http://localhost:3001/sse | 2024-11-05 |
| 健康 | http://localhost:3001/health | - |
| 资讯 | http://localhost:3001/info | - |
______________________________________________________________________
🛠️ 可用工具
终端控制(7)
| 工具 | 说明 |
|---|---|
get_session_list | 列出所有终端会话 稳定的UUID 和元数据 |
exec_command | 使用灵活的会话定位执行命令 |
send_input | 发送交互式输入(Ctrl+C等) |
get_terminal_buffer | 读取终端缓冲区(默认为活动会话) |
abort_command | 中止运行命令 |
get_command_status | 监视活动命令 |
focus_pane | 在拆分视图中聚焦特定窗格 |
v1.1中的新功能:所有终端工具现在都支持灵活的会话定位: -sessionId(稳定的UUID,推荐) -tabIndex(传统,可能会改变) -title(部分匹配) -profileName(部分匹配) - 无参数=使用活动会话
选项卡管理(11)
| 工具 | 说明 |
|---|---|
list_tabs | 列出所有打开的选项卡 稳定ID |
select_tab | 聚焦特定选项卡(默认为活动) |
close_tab | 关闭选项卡 |
close_all_tabs | 关闭所有选项卡 |
duplicate_tab | 复制选项卡 |
next_tab / previous_tab | 导航选项卡 |
move_tab_left / move_tab_right | 重新排序选项卡 |
reopen_last_tab | 重新打开已关闭的选项卡 |
split_tab | 拆分当前选项卡(水平/垂直) |
档案管理(4)
| 工具 | 说明 |
|---|---|
list_profiles | 列出终端配置文件 |
open_profile | 打开带有配置文件的选项卡 |
show_profile_selector | 显示配置文件对话框 |
quick_connect | SSH快速连接 |
SFTP运营(12)🆕
需要 tabby-ssh 插件。如果未安装,SFTP工具将自动禁用。基本操作:
| 工具 | 说明 | 关键参数 |
|---|---|---|
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 |
| 配对编程 | 确认命令 | true |
| 会话跟踪 | 使用稳定的UUID | true |
| 后台执行 | 无焦点运行 | false |
| 启用SFTP | 启用SFTP工具 | true |
______________________________________________________________________
🔄 后台执行模式
启用此模式以允许MCP命令运行 不切换焦点 到终端。这使您可以在AI在后台执行命令的同时继续在其他选项卡上工作。
设置→ MCP → 后台执行
⚠️ 风险: - 您将看不到实时执行的命令 - 如果在AI运行时键入目标终端,输入将发生冲突 - 对于拆分窗格,命令转到 sessionId 目标,而不是聚焦窗格 - 危险的命令可能会在你不注意的情况下运行✅ 推荐: 保持“配对编程模式”启用,并显示确认对话框以确保安全。
______________________________________________________________________
⚠️ 平台支持
| 平台 | 状态 | 注释 |
|---|---|---|
| macOS | ✅ 已测试 | 功能齐全 |
| Windows | ⚠️ 未经测试 | 应该有效——请报告问题 |
| Linux | ⚠️ 未经测试 | 应该有效——请报告问题 |
备注:此插件已在macOS上开发和测试。Windows和Linux支持应该可以工作,但尚未得到验证。欢迎社区测试和反馈!
______________________________________________________________________
🤖 关于本项目
🎨 95%以上人工智能生成
该项目几乎完全由人工智能(Claude/Gemini)通过结对编程创建。\ 人类的作用主要是提供需求和测试结果。
致谢
对原始版本的改进:
| 特色 | 原创 | 本项目 |
|---|---|---|
| MCP工具 | 4 | 34 |
| 选项卡管理 | ❌ | ✅ |
| 配置文件/SSH | ❌ | ✅ |
| SFTP支持 | ❌ | ✅ |
| 稳定会话ID | ❌ | ✅ |
| 流式HTTP | ❌ | ✅ |
| 初始化错误 | 有问题 | ✅ 已修复 |
| 安装脚本 | 手动 | ✅ 一个衬垫 |
______________________________________________________________________
📝 更新日志
v1.5.1(2026-04-03)
🐛 Bug修复:
- 🔧 固定的
/api/tool/{name}返回404 (问题4)-工具API终结点在configureExpress()当toolCategories由于Angular DI初始化顺序,它仍然为空
- 感动 configureToolEndpoints() 到 startServer() 保证所有工具都已注册 - 添加了重复注册保护,以防止服务器重启时出现路由重复
v1.4.0(2026-03-02)
🐛 Bug修复:
- 🔧 修复了日志导出双重序列化问题 (问题#1)-导出的JSON被错误地序列化为字符串,而不是正确的JSON
- 🔧 固定MCP配置类型 (问题2)-配置示例现在正确显示
streamable_http而不是sse - 🔧 修复了硬编码版本号 -
/health和/info端点现在使用PLUGIN_VERSION恒定
🏗️ 架构改进:
- 🔒 每会话McpServer隔离 -每个AI客户端现在都有自己的McpServer实例
- 防止一个客户端的断开连接/重新连接阻止其他客户端的请求 - 修复MCP SDK错误#1459过时回调干扰
- 🔄 SFTP会话缓存重新设计 -已更换
WeakMap和Map + TTL (5min)
- 主动会话过期可防止过时的SFTP会话 - 健康检查验证 stat('/') 再利用前 - 活动传输期间SSH断开连接检测 - 定期从缓存中清理已关闭的SSH会话
📦 构建和安装:
- 📝 修复安装脚本(
install.sh/install.ps1)提取失败
- 存档目录名称现在保持一致 tabby-mcp-server - 向后兼容旧 tabby-mcp 目录名称 - 增加了预发布支持 - 使用python3回退改进JSON解析
v1.3.0版本(2026-02-04)
Bug修复:
- 🔧 修复了会话断开连接的误报问题-
exec_command和send_input不再错误地报告“会话已断开连接”
- 根本原因: tab.destroyed 是一个 Subject (RxJS Observable),不是布尔值 - 现在正确使用 session.open === false 用于断开连接检测
清理:
- 🗑️ 删除了非功能性的SFTP“高级调优”设置(块大小、并发性)
- 这些对Tabby的没有影响 russh-基于SFTP的实现
- 🗑️ 已删除过时
fastPut/fastGet检测码
i18n:
- ✏️ 修复了SFTP大小描述:更正为“10 MB”→ 所有翻译中的“10 GB”
v1.2.0版本(2026年1月24日)
🔧 关键Bug修复:
- 🔴 SFTP会话ID不匹配 -修复了SFTP工具在错误的SSH服务器上运行的关键错误
- 根本原因:SFTP与终端有单独的会话注册表,导致ID不匹配 - 修复:SFTP现在与终端工具共享会话注册表 - 当会话ID不匹配时,SFTP不再静默地回退到第一个SSH选项卡
- 🔴 本地目录自动创建 -SFTP下载现在会自动创建丢失的本地目录
- 🔴 错误报告 -修复了本地目录丢失时出现的误导性“找不到远程文件”问题
🎨 UI改进:
- 📋 连接监视器 -在设置中添加了“连接”按钮(始终可见)
- 🛠️ 服务器生命周期 -通过强制套接字清理改进了服务器重启
- 📊 会话跟踪 -添加了带有活动历史记录的会话元数据
🔧 终端改进:
- 🐚 Heredoc支持 -修复了复杂shell命令(Python heredoc)的执行
- 📝 详细日志记录 -已添加
[findSSHSession]用于故障排除的调试日志
v1.1.6(2026年1月22日)
改进:
- 🎨 增强的设置UI -重新设计的标题,带有紧凑的社交链接(GitHub、npm)
- 🔗 智能链接 -所有外部链接现在都可以在默认浏览器中正确打开
- 🔢 自动版本控制 -插件版本现在会自动从以下位置读取
package.json - 🧹 更简洁的用户界面 -优化布局,删除冗余部分
v1.1.5(2026年1月22日)
新功能:
- 🌐 国际化(i18n) -设置UI现在支持多种语言
- 英语(en-US, en-GB) - 简体中文(zh-CN, zh-TW) - 自动遵循Tabby的语言设置 - 可扩展:通过添加JSON文件轻松添加新语言
v1.1.4(2026年1月22日)
新功能:
- 🔄 后台执行模式 -在不切换终端焦点的情况下运行MCP命令
- 具有全面风险警告的设置UI - 拆分窗格焦点处理,以实现正确的窗格定位
- 🐚 多外壳兼容性 -
exec_command现在支持Fish、Bash、Zsh和sh
- 自动从终端缓冲区模式中检测外壳类型 - 用于捕获退出代码的特定于Shell的命令包装器
Bug修复:
- 🔧 固定的
open_profileSSH就绪检测-在连接SSH之前不再过早返回 - 修复了非bash shell(Fish shell)的shell检测问题
$status对比$?)
v1.1.3(2026年1月22日)
Bug修复:
- 🔧 固定的
open_profilesessionId不一致-现在返回的sessionId与get_session_list - 修复SSH连接状态检测-
ready现在正确反映了整体连接状态
改进:
- 更清晰的状态字段
open_profile响应:
- tabReady:选项卡/前端已初始化 - sshConnected:已建立SSH连接(仅限SSH配置文件) - ready:总体就绪状态(对于SSH:tabReady和sshConnected)
- 将所有对等依赖标记为可选,以防止不必要的包下载
- 添加
tabby-ssh开发人员构建稳定性的依赖关系
v1.1.2(2026年1月22日)
优化:
- 📦 通过将捆绑的依赖项移动到devDependencies来减少npm包的大小
- 所有依赖项(express、zod、@modelcontextprotocol/sdk)现在都绑定到dist/index.js中
- 从npm/Tabby商店安装不再下载不必要的软件包
v1.1.1(2026年1月21日)
Bug修复:
- 🔧 修复了流式HTTP连接泄漏-客户端断开连接时未清理连接
- 添加
transport.onclose处理程序从跟踪中正确删除已关闭的会话 - 增强的SSE流关闭日志记录,可更好地进行调试
v1.1.0版本(2026年1月20日)
主要修复:
- SFTP工具完全重写 -修复了所有返回“未找到SSH会话”的SFTP工具
- 修复了SSH标签检测以正确处理内部标签的问题
SplitTabComponent - 固定的
get_terminal_buffer和select_tab无参数调用时返回错误 - 固定的
select_tab工具无法按tabId查找选项卡(双向查找) - 固定的
quick_connect和open_profile参数验证问题
改进:
- 所有工具现在都使用智能默认值:无参数=使用活动会话/tab/第一个SSH会话
- 更新文档:工具数量更正为34个(终端7+标签11+配置文件4+SFTP 12)
- 添加了详细的调试日志记录和更好的错误消息
- 添加
focus_pane和split_tab到文件 - 添加了流式HTTP传输支持(协议2025-03-26)
- 设置:SFTP大小限制现在使用MB而不是字节
- 设置:更新了SFTP注释(删除了过时的base64警告)
______________________________________________________________________
🤝 贡献
看 贡献.md 作为指导方针。
______________________________________________________________________
📄 许可证
MIT许可证-请参阅 许可证
______________________________________________________________________
由以下材料制成❤️ 由AI和 胡先生
⭐ 如果你觉得这个仓库有用,就把它标上!
