mcp-ssh-tmux
](https://badge.fury.io/py/mcp-ssh-tmux) ](https://pepy.tech/project/mcp-ssh-tmux)  ](https://github.com/devnullvoid/mcp-ssh-tmux/stargazers)
一个高性能、持久的模型上下文协议(MCP)服务器,通过本地管理SSH会话 tmux 例子
为什么存在这种情况?
传统的SSH自动化运行单个命令,而不在执行之间进行状态跟踪。其他实现依赖于复杂的正则表达式模式来检测命令完成。通过使用 tmux 作为一个持久的终端多路复用器,这个项目完全消除了这种复杂性。AI代理只是像人类一样“看”屏幕——服务器提供视觉快照,代理自然地解释提示、错误和输出。
主要特点
- 坚持:SSH连接在中保持活动状态
tmux即使MCP服务器或您的AI客户端重新启动。 - 可观测性:您可以手动运行
tmux attach -t mcp-ssh实时查看代理正在做什么。 - 可靠性:用途
ssh -G用于健壮的配置解析(处理别名、身份文件等)。 - 安全:内置命令验证,以防止常见的危险操作。
- 文件传输:用于读取和写入远程文件的本机工具。Reads更喜欢全文件SSH传输,并在需要时回退到现有的PTY。
安装
需求
- 终端复用器 必须安装在您的系统上
- Ubuntu/Debian: apt install tmux - macOS: brew install tmux - 拱门: pacman -S tmux
经由 uv (推荐)
uv tool install mcp-ssh-tmux经由 pip
pip install mcp-ssh-tmux配置
将此添加到您的 mcp.json (例如,在克劳德桌面、光标或1mcp中):
{
"mcpServers": {
"ssh-tmux": {
"command": "uv",
"args": [
"run",
"mcp-ssh-tmux"
]
}
}
}*注意:如果您是通过安装的 uv tool install,你可以直接使用 mcp-ssh-tmux 作为命令。*
工具
open_session(host, username, port):在唯一的tmux窗口中打开新的SSH连接。send_command(session_id, command, lines, timeout):发送命令并轮询提示/输出。仅返回最后一个lines终端输出/回滚。timeout(默认2.0秒)控制等待时间——对于软件包安装等较慢的命令,等待时间会增加。send_keys(session_id, keys):发送不带Enter键的原始按键。用于Ctrl+C、Ctrl+D、交互式输入等。get_snapshot(session_id, lines):捕获当前屏幕状态。仅返回最后一个lines终端输出/回滚。read_remote_file(session_id, remote_path, fallback_lines):读取远程文本文件。更喜欢这个cat通过send_command()当你需要完整的文件内容时。fallback_lines如果直接SSH读取不可用,则控制有界tmux历史捕获。write_remote_file(session_id, remote_path, content, append):将内容写入远程文件。list_sessions():列出所有活动的SSH窗口。close_session(session_id):打碎窗户并清理干净。 警告:这将终止会话中所有正在运行的进程。对于长时间运行的任务,保持会话打开并使用以下命令进行监视get_snapshot().
重要说明
读取文件
- 使用
read_remote_file()文件内容:send_command("cat ...")和get_snapshot()是屏幕/快照工具,因此它们只返回终端输出的尾部。 lines控制快照深度:增加lines上send_command()或get_snapshot()当您需要更多终端历史记录,但使用read_remote_file()用于实际文件读取。fallback_lines控制PTY回退深度:如果直接SSH文件读取不可用,read_remote_file()只检查最后一个fallback_linestmux的历史。必要时增加它,但要保持它的界限。- 最适合文本文件:
read_remote_file()用于配置、源代码、日志和类似的文本内容。
会话管理
- 不要关闭具有活动进程的会话:关闭会话会终止所有正在运行的命令(构建、下载等)
- 监控长时间运行的任务:使用
get_snapshot()在不关闭会话的情况下检查进度 - 会话持续:即使MCP服务器重新启动,SSH连接在tmux中仍然有效
- 人工检查:运行
tmux attach -t mcp-ssh实时查看发生了什么
致谢
贡献
欢迎投稿!请随时提交拉取请求。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
明星历史
如果你觉得这个项目有用,请考虑给它一颗星! ⭐
许可证
麻省理工学院
