SSH终端观察工具

MCP SSH Wingman是一个通过tmux提供Unix shell提示符只读访问的MCP服务器,使AI助手能够安全地观察终端环境而无需执行命令。

  • by conallob
  • Go
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 conallob/mcp-ssh-wingman

使用说明

MCP SSH Wingman

一种模型上下文协议(MCP)服务器,通过以下方式提供对Unix shell提示的只读访问 tmux这使得像克劳德这样的人工智能助手能够安全地观察终端环境,而无需执行命令。

特性

  • 🔒 只读访问 -观察终端内容,无执行风险
  • 🖥️ tmux集成 -利用tmux的会话管理实现可靠的终端访问
  • 📜 回溯历史 -访问历史终端输出
  • 📊 终端元数据 -检索维度、当前路径和会话信息
  • 🔌 MCP协议 -AI助手集成的标准协议

常见问题

你会添加吗 GNU screen 支持?

不是在不久的将来。尽管 screen 可用于结对编程/调试,它没有任何机制来强制只读模式。

由于只读保护是此MCP和其他MCP之间的主要区别 具有ssh功能的MCP ,屏幕需要支持只读会话才能集成

你会添加吗 细胞 支持?

在未来,可能。https://github.com/zellij-org/zellij/issues/4348需要首先实施,以确保 zellij 具有只读功能,就像 tmux

先决条件

  • tmux(用于终端会话管理)
  • (可选)转到1.21或更高版本(仅需要从源代码构建)

安装

自制(macOS/Linux)

brew tap conallob/tap
brew install mcp-ssh-wingman

预构建二进制文件

从下载预构建的二进制文件 发布页面.

适用于:

  • macOS(arm64/amd64)
  • Linux(arm64/amd64)
  • FreeBSD(arm64/amd64)

从源代码构建

看 Developpent.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 Desktop集成

将服务器添加到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 Desktop。

与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...

你最好在那里选择选项3。

可用工具

服务器公开了以下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的内置命令安全读取终端内容:

  1. 会话管理:创建/附加到分离的tmux会话
  2. 内容捕获:用途 tmux capture-pane 阅读可见内容
  3. 只读:从不向会话发送按键或命令
  4. MCP协议:通过标准MCP工具和资源公开终端内容

这种方法确保AI助手可以观察终端活动,而不会意外执行命令或修改终端状态。

用例

  • 监控长时间运行的流程并构建输出
  • 观察基于终端的应用程序行为
  • 通过查看终端历史记录来调试问题
  • 根据当前终端状态提供上下文感知协助

安全考虑

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会话是否有活动窗格

贡献

欢迎投稿!请随时提交问题或拉取请求。

有关开发指南,请参阅 Developpent.md.