返回 MCP 目录
public公开dns本地运行

mcp_linux_administration_ssh-openwebui_tool

一个通过SSH控制Linux虚拟机的MCP服务器,集成OpenWebUI界面,提供自动安全检查和实时命令执行功能。

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

  1. 打开 OpenWebUI → 工作区 → 工具
  2. 点击 + 创建工具
  3. 复制并粘贴 ssh_linux_control.py 的全部内容
  4. 保存

大功告成!🎉

💻 使用示例

向 OpenWebUI 提问:

  • "列出我的虚拟机"
  • "连接到 vm1 并检查磁盘空间"
  • "显示 vm1 的内存使用情况"
  • "在我的服务器上运行 'systemctl status nginx'"

✨ 主要特性

✅ 基于密码的 SSH 认证(无需密钥)
✅ 自动检测破坏性命令
✅ 支持 sudo(使用配置文件中的密码)
✅ 检测 40 多种破坏性命令模式
✅ 实时命令输出

🔒 破坏性命令安全机制

rm -rfshutdownsystemctl 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 文件。

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端