Flotilla
# Flotilla 项目描述(B 线) ## 项目简介 Flotilla 是一款开源的多服务器 SSH MCP(M
Flotilla 项目描述(B 线)
项目简介
Flotilla 是一款开源的多服务器 SSH MCP(Model Context Protocol)工具,旨在将"逐台 SSH 管理 N 台服务器"的传统运维模式转变为"声明一次意图,安全地在整个舰队上执行"的现代化工作流。它让 AI Agent 通过 MCP 协议连接并管理整个服务器舰队——从批量执行命令、跨机配置比对,到滚动更新熔断、策略审批门禁,全部在统一界面下完成,每一步操作均记录在哈希链审计日志中可追溯、可验证。
核心功能
Target 表达式寻址
不同于逐台指定 IP 的传统方式,Flotilla 通过灵活的 Target 表达式同时管理多台服务器,例如 group:prod 定位所有生产环境机器,tag:web !web-3 定位所有 Web 标签机器但排除 web-3,all 代表全舰队。在执行任何操作前,可先用 fleet-resolve 预演查看表达式实际命中了哪些机器,避免误操作影响无辜机器。
三种扇出执行策略 命令执行支持三种扇出模式:并行(所有机器同时执行,速度最快)、串行(逐台执行,确保每台完成后再下一台)、rolling(滚动执行,每批次默认 2 台,批次失败自动熔断停止)。生产环境的破坏性操作(如重启服务、批量部署)默认推荐 rolling 策略,确保故障范围可控。
fleet-diff 跨机比对
fleet-diff 可对全场服务器执行同一条只读命令,按输出相同与否自动分组报告;fleet-diff-file 则按 SHA256 比对指定路径的文件或目录内容,快速发现配置漂移(configuration drift)和异常文件。这对于管理大量相似配置的服务器集群尤为重要。
六层安全模型 Flotilla 从设计之初就将安全作为默认状态而非可选项:永禁清单(高危命令直接拒绝)、角色×层级权限矩阵、资源操作白名单、审批门(破坏性操作触发 MCP elicitation 弹窗需人工确认)、JIT 即时免批授权(可配置时间窗口内免重复审批)、哈希链审计日志(所有操作均上链,可检测篡改)。
AI 辅助审批决策 当执行破坏性命令触发审批门时,本地 LLM 会先生成风险评估摘要(包含操作影响范围、潜在风险等级、替代方案建议),但最终决策权始终在人类手中,AI 只提供辅助建议而非自动判决。
零依赖体检与 SFTP 批量传输
doctor 命令可一键对全舰队所有机器进行健康检查,每台返回 HEALTHY/WARN/CRIT 三级状态;fleet-push/fleet-pull 支持 SFTP 批量分发和收集文件;fleet-copy/fleet-sync 支持服务器间直传(经控制机内存中转,两端均过策略审计,跨网络层无需服务器间互通 SSH 密钥)。
YAML 工作流编排 支持多步骤 YAML 工作流定义,包含变量插值和失败自动回滚机制,适合将复杂的运维流程(如"先停止服务→更新代码→重启服务→验证健康状态")固化为可复用的自动化脚本。
技术实现
Flotilla 的架构设计围绕 MCP 协议展开,分为三个层次:
协议层:工具通过 MCP 协议暴露给 AI Agent,兼容所有支持 stdio 或 Streamable HTTP MCP 的客户端(Claude Code、Cursor、Codex 等),安装后在 Agent 端只需一行命令即可添加。
引擎层:核心处理逻辑位于 flotilla-mcp npm 包内,包含 Target 表达式解析器、策略引擎、审批门控制器、扇出执行器和哈希链审计器。所有逻辑在控制机本地运行,不依赖远程云服务。
传输层:支持两种部署模式——stdio 模式(安装在本地 MacBook/工作机,直接通过本地进程通信连接 Agent)和 HTTP Gateway 模式(部署到一台服务器,通过 Bearer Token 鉴权的 HTTPS MCP 端点对外提供服务,支持 Grok 等平台的自定义 MCP 连接器直连)。
舰队节点管理:各服务器通过 SSH 连接控制机,SSH 密钥管理支持自管理密钥对和一次性密码引导(bootstrap)两种入网方式,新机器入网可在 10 分钟内完成,无需手动配置。
快速上手
第一步:一键入网第一台服务器 在控制机上安装 Flotilla 后,执行引导脚本将第一台服务器纳入舰队:
curl -fsSL https://raw.githubusercontent.com/paipaiio/flotilla-mcp/main/deploy/bootstrap.sh -o bootstrap.sh
bash bootstrap.sh
脚本自动检测系统环境(有 Docker 用 Docker,有 Node≥20 用 Node,都没有自动装 Docker),然后引导入网第一台机器并拉起服务。
第二步:添加更多服务器 对于已有 SSH 公钥的服务器,直接登记:
flotilla add web-1 --host 10.0.1.11 --user deploy --auth key --key ~/.ssh/id_ed25519 --group prod --tags web
对于全新机器(尚未配置公钥),使用 bootstrap 模式一次性密码首连自动安装公钥:
flotilla add web-1 --host 10.0.1.11 --user root --bootstrap --group prod --tags web
第三步:配置 AI Agent 连接 在 Claude Code 中添加 Flotilla MCP:
claude mcp add --transport stdio flotilla -- flotilla-mcp
添加后即可在对话中直接使用自然语言管理服务器,例如:"重启所有 prod 环境的 web 节点,rolling 策略,每次两台"。
第四步:执行舰队级操作
# 预演查看目标机器
flotilla fleet-resolve "group:prod tag:web"
# 对全舰队执行只读命令比对
flotilla fleet-diff "node --version"
# 执行有审批的破坏性操作
flotilla exec --target "group:prod" "sudo systemctl restart myapp"
适用人群
需要管理多台 Linux 服务器的 DevOps 工程师、SRE、后台开发者,以及在使用 AI 编程工具(如 Claude Code、Cursor)时需要频繁在服务器间执行运维操作的团队。尤其适合 5 台以上的中等规模服务器集群管理场景。
评论与建议
登录 后参与评论或提建议