mcpField
M
Mcp Ssh Wingman

Mcp Ssh Wingman

本地服务
github.com/conallob开发工具415 周前更新

关于 Mcp Ssh Wingman

Mcp Ssh Wingman 是一个 MCP 服务,供 AI 助手查看由 tmux 管理的 Unix shell 会话。其只读设计可提供终端状态,但不允许发送命令或按键。

主要功能

  1. 01读取当前终端内容
  2. 02读取 tmux 回滚历史
  3. 03获取终端尺寸和元数据
  4. 04通过 MCP 资源提供终端状态

适用场景

  1. 01监控长时间运行的进程
  2. 02查看终端应用的行为
  3. 03通过终端历史输出调试
  4. 04根据终端状态提供辅助信息

MCP 相关

它向 MCP 客户端提供读取终端的工具和资源,包括当前内容、回滚历史及会话元数据。它不会执行命令或向终端发送输入。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP SSH Wingman

Test codecov Go Version License Buy Me A Coffee

一个模型上下文协议(MCP)服务,通过 tmux 提供对 Unix shell 提示词的只读访问。这使 Claude 等 AI 助手能够安全地查看终端环境,而无需执行命令。

功能

  • 🔒 只读访问 - 查看终端内容,无需承担执行风险
  • 🖥️ tmux 集成 - 利用 tmux 的会话管理功能,可靠地访问终端
  • 📜 回滚历史 - 访问终端历史输出
  • 📊 终端元数据 - 获取尺寸、当前路径和会话信息
  • 🔌 MCP 协议 - 用于集成 AI 助手的标准协议

常见问题

会添加 GNU screen 支持吗?

近期不会。虽然 screen 可用于结对编程/调试,但它没有任何机制来强制启用只读模式。

由于只读保护是此 MCP 与其他具备 ssh 功能的 MCP 之间的主要区别,因此 screen 需要先支持只读会话,才能集成。

会添加 zellij 支持吗?

将来有可能。需要先实现 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。

用法

运行服务
# 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(数字):从回滚缓冲区中获取的行数

示例:

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

参与贡献

欢迎贡献!请随时提交问题或拉取请求。

开发指南请参阅 DEVELOPMENT.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。