MCP SSH 伴飞者(或:MCP SSH 配偶机,根据上下文,“Wingman”在此处可理解为与主飞行器配合飞行的辅助飞行器或伙伴)
一个模型上下文协议(MCP)服务器,通过该服务器可以仅读取Unix shell提示符 tmux这使得像Claude这样的AI助手能够在不执行命令的情况下,安全地观察终端环境。
特点/特性
- 🔒 表示“锁定”或“安全”的符号。 只读访问 - 观察终端内容,无执行风险
- 🖥️ 这个符号通常代表“电脑”或“显示器”。 tmux 集成 - 利用tmux的会话管理功能实现可靠的终端访问
- 📜(文档/文件) 滚动回溯历史 - 访问历史终端输出
- 📊(图表/数据) 终端元数据 - 获取尺寸、当前路径和会话信息
- 🔌 电源插头 MCP协议 - AI助手集成的标准协议
常见问题解答(FAQ)
你会添加吗 GNU(GNU's Not Unix,即“不是Unix”) screen 支持吗?
不是在近期。尽管 screen 可用于结对编程/调试,但它没有任何机制来强制实施只读模式。
由于只读保护机制是此MCP(微控制器协议/模块/等,具体根据上下文确定)与其他(同类产品/系统)的主要区别 具有ssh功能的MCPs(管理控制点/服务器等,具体含义根据上下文确定) 在集成之前,屏幕需要支持只读会话
你会添加吗 马赛克瓷砖(或称为彩瓷砖) 支持?
未来,或许会(实现)。需要先实施 https://github.com/zellij-org/zellij/issues/4348,以确保 zellij 具有只读功能,就像 tmux
先决条件
- tmux(用于终端会话管理)
- (可选)Go 1.21 或更高版本(仅在从源代码构建时需要)
安装
Homebrew(适用于 macOS/Linux)
brew tap conallob/tap
brew install mcp-ssh-wingman预编译的二进制文件
从(指定位置)下载预编译的二进制文件 发布页面。
适用于:
- macOS(arm64/amd64)
- Linux(arm64/amd64)
- FreeBSD(arm64/amd64)
从源代码构建
见 DEVELOPMENT.md 翻译为中文是:“开发说明.md” 或者 “开发文档.md”(具体翻译可能根据上下文有所调整,但基本意思是指一个关于开发的说明或文档文件) 用于构建说明。
使用方法
运行服务器
# Start with default tmux session name (mcp-wingman)
mcp-ssh-wingman
# Use a custom tmux session name
mcp-ssh-wingman --session my-session
# Show version
mcp-ssh-wingman --version与Claude桌面版的集成
将服务器添加到您的Claude Desktop配置文件中:
macOS(苹果电脑操作系统): ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"ssh-wingman": {
"command": "/usr/local/bin/mcp-ssh-wingman",
"args": ["--session", "mcp-wingman"]
}
}
}更新配置后,重启Claude桌面版。
与Gemini CLI的集成
将此部分添加到您的Gemini配置文件中(~/.gemini/settings.json):
{
"mcpServers": {
"ssh-wingman": {
"command": "/usr/local/bin/mcp-ssh-wingman",
"args": ["--session", "mcp-wingman"]
}
}
}运行 gemini CLI(命令行界面),并确保它能够看到MCP服务器:
> /mcp list
Configured MCP servers:
🟢 ssh-wingman - Ready (3 tools)
Tools:
- get_terminal_info
- read_scrollback
- read_terminal使用提示进行测试:
> using ssh-wingman MCP Server, what do you see in my session?
╭────────────────────────────────────────────────────────────────────────────────────────╮
│ ? read_terminal (ssh-wingman MCP Server) {} ← │
│ │
│ MCP Server: ssh-wingman │
│ Tool: read_terminal │
│ │
│ Allow execution of MCP tool "read_terminal" from server "ssh-wingma… │
│ │
│ ● 1. Yes, allow once │
│ 2. Yes, always allow tool "read_terminal" from server "ssh-wingma… │
│ 3. Yes, always allow all tools from server "ssh-wingman" │
│ 4. No, suggest changes (esc) │
│ │
╰────────────────────────────────────────────────────────────────────────────────────────╯
⠏ Waiting for user confirmation...你最好选择那里的第三个选项。
可用工具
服务器提供了以下MCP工具:
read_terminal
从tmux会话中读取当前终端内容。
示例:
{
"name": "read_terminal"
}read_scrollback
从 tmux 会话中读取滚动回溯历史。
参数:
lines(number): 从滚动缓冲区中检索的行数
示例:
{
"name": "read_scrollback",
"arguments": {
"lines": 100
}
}get_terminal_info
获取有关终端的信息(尺寸、当前路径等)。
示例:
{
"name": "get_terminal_info"
}可用资源
terminal://current
当前终端内容作为文本资源。
terminal://info
终端元数据和信息。
它是如何工作的
服务器创建或附加到一个tmux会话,并使用tmux的内置命令安全地读取终端内容:
- 会话管理创建/附加到一个已分离的 tmux 会话
- 内容捕获用途
tmux capture-pane阅读可见内容 - 只读从不向会话发送按键输入或命令
- MCP协议通过标准的MCP工具和资源暴露终端内容
这种方法确保了人工智能助手能够在不执行任何命令或修改终端状态的情况下,安全地观察终端活动。
用例
- 监控长时间运行的进程和构建输出
- 观察基于终端的应用程序行为
- 通过查看终端历史记录来调试问题
- 根据当前终端状态提供情境感知的辅助
安全考虑事项
MCP SSH Wingman的设计以安全性为核心:
- 只读服务器从不向终端发送输入
- 本地访问仅在本地 tmux 会话上运行
- 未执行命令无法执行shell命令
- 独立会话每个会话都是独立的,并由tmux进行沙盒化管理
故障排除
服务器无法启动
- 确保已安装tmux:
tmux -V - 检查该二进制文件是否具有执行权限:
chmod +x /usr/local/bin/mcp-ssh-wingman
Claude Desktop 无法连接
- 在你的配置文件中验证二进制文件的路径
- 检查Claude Desktop的日志以查找错误信息
- 首先确保二进制文件能够从命令行成功运行
无法查看终端内容
- 验证 tmux 会话是否存在:
tmux list-sessions - 确保会话名称与配置中指定的名称一致
- 检查 tmux 会话中是否有活动的窗格
做出贡献
欢迎贡献!请随时提交问题或拉取请求。
