article
README
🚀 MCP 服务器 - 用于 OpenWebUI 的 SSH Linux 控制
通过 OpenWebUI 直接通过 SSH 控制你的 Linux 虚拟机,并对破坏性命令进行自动安全检查。
🚀 快速开始
1. 配置你的虚拟机
复制示例配置文件并进行编辑:
cp config.yaml.example config.yaml
nano config.yaml # 或者使用你喜欢的编辑器
添加你的虚拟机信息:
hosts:
vm1:
hostname: "192.168.1.100"
username: "root"
password: "yourpassword"
description: "My Server"
2. 启动服务器
docker compose up -d --build
3. 连接到 OpenWebUI 网络
# 查找你的 OpenWebUI 网络名称
docker network ls | grep openwebui
# 连接容器(将 'openwebui_default' 替换为你的网络名称)
docker network connect openwebui_default ssh-control-mcp
4. 将工具添加到 OpenWebUI
- 打开 OpenWebUI → 工作区 → 工具
- 点击 + 创建工具
- 复制并粘贴
ssh_linux_control.py的全部内容 - 保存
大功告成!🎉
💻 使用示例
向 OpenWebUI 提问:
- "列出我的虚拟机"
- "连接到 vm1 并检查磁盘空间"
- "显示 vm1 的内存使用情况"
- "在我的服务器上运行 'systemctl status nginx'"
✨ 主要特性
✅ 基于密码的 SSH 认证(无需密钥)
✅ 自动检测破坏性命令
✅ 支持 sudo(使用配置文件中的密码)
✅ 检测 40 多种破坏性命令模式
✅ 实时命令输出
🔒 破坏性命令安全机制
像 rm -rf、shutdown、systemctl stop 等命令需要明确确认:
- 首次尝试:显示警告
- 使用
confirmed=True重试以执行命令
🛠️ 故障排除
工具无法连接到服务器:
# 检查容器是否正在运行
docker ps | grep ssh-control-mcp
# 查看日志
docker logs ssh-control-mcp
# 测试 API
curl http://localhost:3000/api/hosts
如果 OpenWebUI 是容器化的,确保两个容器在同一网络中:
docker network connect <openwebui-network> ssh-control-mcp
📁 文件结构
config.yaml.example- 示例配置文件(可安全提交)config.yaml- 你的虚拟机凭据(已添加到 .gitignore,请勿提交)ssh_linux_control.py- OpenWebUI 工具文件docker-compose.yml- 容器配置文件src/ssh_control_mcp/- MCP 服务器和 HTTP 包装器
⚠️ 安全注意事项
⚠️ 重要提示
切勿提交
config.yaml- 它包含明文密码。
💡 使用建议
使用
config.yaml.example作为模板。本工具仅设计用于在受信任的网络上进行本地虚拟机管理。
📄 许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
微信扫一扫