CloudAlly MCP

io.github.Servosity由 GitHub 账号 Servosity 发布v0.2.0更新于 Nov 6, 2026

Restore or download CloudAlly mailboxes as of a past date, and find failing backups

概览

AI 生成的概览

非官方本地 MCP 服务器兼命令行工具,让助手查看 CloudAlly 备份、规划还原,并按过去某日期下载邮箱归档。

可以做什么
  • 查找所有客户中过期或失败的备份,并按账户读取备份状态
  • 列出备份任务、实体与还原作业,并查看还原历史
  • 列出某邮箱在某月的备份,并规划每个邮箱在某日期会从哪个备份还原
  • 提交整个任务还原到一个或多个日期,先展示计划再执行
  • 按指定日期、以客户所在时区提交并获取邮箱归档下载
  • 把只读接口镜像到本地 SQLite 以便离线检索,并可按 ID 调用任意 CloudAlly API 接口
适用场景
适合为多个客户租户管理 CloudAlly 备份的 MSP 与经销商运维人员,让助手回答哪些邮箱备份失败、某过去日期存在哪些备份,或准备批量还原与年终归档,而不必在门户中逐个邮箱操作。
运行要求
以本地进程(stdio)在桌面运行;README 另述面向远程代理的 HTTP 传输方式。需要 CloudAlly API 应用密钥对(CLOUDALLY_CLIENT_ID、CLOUDALLY_CLIENT_SECRET),并通过随附命令行工具完成一次登录:伙伴登录(CLOUDALLY_PARTNER_EMAIL、CLOUDALLY_PARTNER_PASSWORD)或单公司登录(CLOUDALLY_EMAIL、CLOUDALLY_PASSWORD)。需能访问 CloudAlly 的 API 与客户门户。
安装前请注意
还原会写回线上邮箱,删除备份任务会删除其数据。默认未开启只读模式时,通用执行工具在调用方传入确认参数后可调用任意接口,包括还原与删除,下载链接为 60 秒有效的实时链接。伙伴登录可触达所有客户账户。下载的归档是写入磁盘的客户数据。除非每次调用都有人工批准,否则请保持 CLOUDALLY_MCP_READ_ONLY=1,并保护好保存的令牌与本地 SQLite 镜像。

安装

在 SourceWeft 中

  1. 打开 控制台中的 CloudAlly MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

CloudAlly + AI - for ChatGPT, Claude, GitHub Copilot, Microsoft 365 Copilot, Gemini, and any agent that speaks MCP

Unofficial. Community-built Claude Code Skill and MCP server for the CloudAlly API. Not affiliated with, endorsed by, or sponsored by CloudAlly or OpenText. CloudAlly is a trademark of OpenText Corporation.

[CloudAlly skill - preview card]

Comparing backup vendors? One of our MSP partners told us, "My guys now spend a tenth of the time on backups." Fixing is included in every Servosity co-managed backup plan, and our engineers tell you what they did. See how co-managed backup works

Restore or download every CloudAlly mailbox as it stood on a past date, read each mailbox's backup history, and find failing backups across every customer. Works with the AI you already use - ChatGPT (Plus/Pro+), Claude Desktop, Codex, Claude Code, Claude Cowork, and GitHub Copilot - plus Microsoft 365 Copilot / Copilot Studio and Google Gemini via the remote path. Free, open source, runs on your laptop. Built for MSP owners. No code required.

Works with your agent

The six agents MSP owners actually use (self-serve, works today):

Your AI agentHow to install the CloudAlly skill
Claude DesktopRun installer, then Settings > Extensions to register cloudally-mcp (no JSON editing).
ChatGPT (paid plans)Run installer, serve cloudally-mcp over HTTPS behind an OAuth proxy that adds its bearer token, register as a Developer Mode connector.
Codex CLIPaste the install prompt below.
Claude CodePaste the install prompt below.
Claude CoworkPaste the install prompt below.
GitHub Copilot (VS Code)Run installer, add cloudally-mcp to mcp.json under the servers key, then pick Agent mode.

For ChatGPT, run cloudally-mcp --transport http and serve it over HTTPS behind an authenticating proxy that signs ChatGPT in with OAuth and adds the Authorization: Bearer header the server requires (ChatGPT cannot send a fixed bearer token, so a bare tunnel gets HTTP 401) - no bridge package is needed. See mcp-install.md.

Also for the Microsoft and Google stacks

Big install base, but an honest heads-up: these are the remote / enterprise path, not the local binary you just installed.

AgentWhat it takes
Microsoft 365 Copilot / Copilot StudioNot self-serve. Host cloudally-mcp over HTTPS, then wire it into Copilot Studio (Tools > Add a tool > Model Context Protocol > Server URL) or a declarative agent. Needs a Copilot Studio license + tenant admin. See mcp-install.md.
Google GeminiGemini CLI is local - same as Claude Code. The Gemini app is remote - same HTTPS path as ChatGPT, authenticating proxy included. See mcp-install.md.

Skill-native agents (also covered): Hermes and OpenClaw read this skill's SKILL.md directly and speak MCP - see their install sections below. Also works with Cursor, Windsurf, Cline, Continue.dev, and Zed via MCP. Full per-tool wire-up: docs/which-agent.md.

Run more than one agent? Install across all 51+ supported agents in one command: npx skills add Servosity/msp-skills@latest (requires Node.js, then run the per-skill installer for the CLI/MCP binaries). See docs/which-agent.md.

Install in 60 seconds

Fastest for Claude Desktop - one-click .mcpb

Download CloudAlly MCP (.mcpb) - then open Claude Desktop > Settings > Extensions and select the file. One click, no JSON, no shell. (Browse every CloudAlly release on the releases page.)

CloudAlly still needs one sign-in from a terminal: the extension calls cloudally-cli for its tools and reads its saved token, so also install the CLI (Path B below) and run cloudally-cli auth login --partner (or auth login for one company) once.

Prefer the Claude Code plugin? Add the marketplace once, then install - works immediately, no directory listing required:

/plugin marketplace add Servosity/msp-skills/plugin install cloudally@msp-skills

Path A - paste one prompt into your AI agent (recommended)

Copy this into Claude Code, Codex CLI, or Claude Cowork:

Install the CloudAlly Skill and MCP server from Servosity/msp-skills in this agent workspace. If this workspace uses a POSIX shell (macOS, Linux, WSL, or Bash), run bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/cloudally/install.sh). If it uses Windows PowerShell, run iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/cloudally/install.ps1 | iex. Then authenticate per the README and run cloudally-cli --help to explore.

The same prompt works in any agent that can run shell.

Path B - run the installer yourself

Windows (PowerShell):

powershell
iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/cloudally/install.ps1 | iex

macOS / Linux:

bash
bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/cloudally/install.sh)

The installer drops both cloudally-cli (the CLI) and cloudally-mcp (the MCP server) into your user bin path. Claude Code, Codex, and Cowork discover the Skill via SKILL.md in this directory.

Verify:

bash
cloudally-cli --version

Upgrade to the latest version

The installer always fetches the current release - re-run it to upgrade:

macOS / Linux:

bash
bash <(curl -fsSL https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/cloudally/install.sh)

Windows (PowerShell):

powershell
iwr -useb https://raw.githubusercontent.com/Servosity/msp-skills/main/skills/cloudally/install.ps1 | iex

Claude Desktop .mcpb users: download the latest .mcpb (top of this section) and re-select it in Settings > Extensions. Claude Code plugin users: /plugin update cloudally@msp-skills.

Add to Claude Desktop, GitHub Copilot, Gemini CLI, Microsoft 365 Copilot, or another MCP client

After the installer runs, see mcp-install.md and docs/which-agent.md for the per-agent wire-up - one section per agent, including the GitHub Copilot servers key and the remote Microsoft 365 Copilot / Copilot Studio path. Claude Desktop's Settings > Extensions panel is the simplest path; the MCP config block (for users who prefer editing JSON) is documented in mcp-install.md.

Install for Hermes

From the Hermes CLI:

bash
hermes skills install servosity/msp-skills/skills/cloudally --force

Inside a Hermes chat session:

/skills install servosity/msp-skills/skills/cloudally --force

Hermes speaks MCP natively, so it can also use the cloudally-mcp server directly - same install path, same env vars.

Install for OpenClaw

Tell your OpenClaw agent (copy this):

Install the cloudally skill from https://github.com/servosity/msp-skills/tree/main/skills/cloudally. The skill defines how its required CLI (cloudally-cli) can be installed via the openclaw: frontmatter block.

OpenClaw isn't generally available yet; the frontmatter wiring is pre-shipped and will activate the moment OpenClaw launches.

Authenticate

Create an API application in the CloudAlly partner portal (Integrations > REST API), then sign in once with your partner login and check it:

bash
export CLOUDALLY_CLIENT_ID=<client id>export CLOUDALLY_CLIENT_SECRET=<client secret>export CLOUDALLY_PARTNER_EMAIL=<partner portal login email>cloudally-cli auth login --partner --password-stdin < password-filecloudally-cli doctor

Windows (PowerShell):

powershell
$env:CLOUDALLY_CLIENT_ID = "<client id>"$env:CLOUDALLY_CLIENT_SECRET = "<client secret>"$env:CLOUDALLY_PARTNER_EMAIL = "<partner portal login email>"Get-Content password-file | cloudally-cli auth login --partner --password-stdincloudally-cli doctor

Windows PowerShell 5.1 sends piped text as ASCII. For a password with non-ASCII characters, run $OutputEncoding = [System.Text.UTF8Encoding]::new($false) first, or set $env:CLOUDALLY_PARTNER_PASSWORD and run cloudally-cli auth login --partner.

$env: lasts only for that window; use setx or System Properties > Environment Variables to keep the key pair.

auth login --partner saves the access and refresh tokens (never printed) and the CLI refreshes them on its own. The partner login reaches every customer and is what the distributor-* and reseller-* commands, auth use-account, past backup dates, downloads and backup health need. To work inside one company only, set CLOUDALLY_EMAIL and CLOUDALLY_PASSWORD and run cloudally-cli auth login instead. doctor then makes one authenticated read (GET /v2/user), so it reports whether the token actually works, not just whether one is set.

What this skill does

Question your MSP keeps askingCommand
Which mailboxes across all my customers have not backed up in two days, or failed?cloudally-cli sync --resources distributor_accounts-backup-statuses, then cloudally-cli backup health --stale-days 2 --group-by account (it reads the synced feed)
What backups does this mailbox have for December?cloudally-cli backup snapshots --account 5f1c2a --task 64b0e9 --entity [email protected] --month 2025-12
Which backup would each mailbox be restored from for December 31st?cloudally-cli restore plan --account 5f1c2a --task 64b0e9 --date 2025-12-31
Restore every mailbox on the task to October 1stcloudally-cli restore plan --account 5f1c2a --task 64b0e9 --date 2026-10-01, then the same flags on restore submit plus --yes once the human confirms the plan
Archive every mailbox as it stood on December 31st, in the customer's timezonecloudally-cli download submit --account 5f1c2a --task 64b0e9 --on-date 2025-12-31 --utc-offset -5, then the same command plus --yes once the human confirms the plan
Download every finished archive into an existing folder (create it first: mkdir archives)cloudally-cli download fetch --account 5f1c2a --dest ./archives --year 2025 --batch 20261015-201500-ab12
What did we restore for this customer since September?cloudally-cli restore history --account 5f1c2a --since 2026-09-01
What is the latest backup status of every customer's mailboxes and sites?cloudally-cli distributor-accounts backup-statuses --all
Which customer accounts do I manage?cloudally-cli distributor-accounts list --all
Which backup tasks does this customer have?cloudally-cli auth use-account 5f1c2a then cloudally-cli tasks list --type BACKUP --all
What state is every entity of this backup task in?cloudally-cli tasks get 64b0e9 --select entities.entity,entities.status
How are all of this account's tasks doing?cloudally-cli user status --all
Run this backup task nowcloudally-cli tasks backup-now 64b0e9
Which restore jobs are running or finished?cloudally-cli tasks list --type RESTORE
What are this month's bills across my resellers?cloudally-cli distributor-resellers all-bills

Full command reference: guide.md. For the AI-agent operating contract (--agent, --dry-run, when to confirm before mutating, and how CloudAlly behaves), see AGENTS.md.

What makes this different

cloudally (a Ruby gem) and n8n-nodes-cloudally (n8n workflow nodes) wrap CloudAlly's documented API.

This one is a single binary that works as a CLI and an MCP server, and it goes past the documented API where that API stops. CloudAlly's API reports only each mailbox's latest backup and its export call creates no job, so backup snapshots, restore plan and the download commands read past backup dates and create downloads through the customer portal, using the same partner handoff the partner portal uses when you click a customer. restore submit works on a whole task and one or more dates, download submit on a whole task and one date, record every row in a local ledger, and resume without resending anything whose outcome is unknown. download fetch mints each 60-second download link and streams the archive in the same step.

It also covers the rest of the Management API v2 (distributor, reseller and customer endpoints, backup tasks, users, billing and recovery): it handles the company and partner logins, refreshes tokens on its own, switches into a customer account with auth use-account, and can mirror the read endpoints into a local SQLite store for offline search.

CloudAlly's own partner and customer portals restore and export one mailbox and one date at a time through a wizard. This works from the AI agent you already use, shows a plan before anything changes, and keeps a local record of every restore and download it started.

The pain this closes

"Restore every mailbox to how it was on the 1st" and "give us every mailbox as it stood on December 31st for the last few years" are routine requests, and in the CloudAlly portal each one is a wizard per mailbox per date. The documented API cannot answer which backup existed on a past date, an MS365 mailbox is five separate downloads with their own timestamps, timestamps are UTC (so the backup stamped December 31st holds December 30th for a US customer), and download links die after 60 seconds.

  • cloudally-cli restore plan then restore submit - a whole task restored to one date, planned first and recorded in a ledger.
  • cloudally-cli download submit --utc-offset -5 then download fetch --batch <key> - year-end archives of every mailbox, in the customer's own day, collected to disk.
  • cloudally-cli backup health - every stale or failing mailbox across every customer in one list.
  • cloudally-cli distributor-accounts backup-statuses - the latest backup status of every customer in one call.
  • cloudally-cli auth use-account <accountId> then tasks list - one customer's backup tasks without a portal session.

See pain-point.md for the longer narrative.

Frequently asked questions

Does this work with ChatGPT?

Yes, on Plus, Pro, Team, Business, Enterprise, and Education plans (Free tier does not yet expose Developer Mode). ChatGPT connects to remote MCP servers over HTTPS, not local stdio binaries. The CloudAlly MCP server runs locally, but it speaks HTTP natively: set CLOUDALLY_MCP_HTTP_TOKEN to a long random value, start it with cloudally-mcp --transport http (it serves http://127.0.0.1:7777/mcp by default and refuses to start without that token), and serve that endpoint over HTTPS behind an authenticating proxy that signs ChatGPT in with OAuth and adds the Authorization: Bearer header the server requires (ChatGPT cannot send a fixed bearer token, so a bare tunnel gets HTTP 401). No bridge package is involved. Step-by-step in mcp-install.md.

Does this work with Codex, Cursor, Windsurf, Cline, Copilot, or Gemini?

Yes - all of them speak MCP. Cross-tool install commands are in the matrix above and the deep-dive in docs/which-agent.md.

Do I need to know how to code?

No. The recommended install is to paste one sentence into Claude Code or Codex - your agent reads SKILL.md and does the install. The fallback is a one-line installer per OS (bash or PowerShell). Neither path requires writing code. You'll enter the CloudAlly API client id and secret once and run cloudally-cli auth login --partner.

Is my CloudAlly data safe?

Your data stays on your machine. The CLI and MCP server are local binaries. The SQLite mirror sits in a directory under your user account. The AI agent only sees what the CLI returns - typically a query result, not raw bulk data. Download links are minted and streamed in one step, never stored. Every request, the customer-portal session's included, goes through a shared credential kit: it holds the key pair, the tokens and the portal session, sends each only to CloudAlly's API or https://app.cloudally.com, and replaces any output that would carry one with a [credkit: withheld ...] notice. The archive bytes download fetch writes to your folder are customer data and stay outside it, so keep that folder private. Credentials are read from your environment or your agent's config; never bundled into this repo or transmitted anywhere by MSP Skills.

What credentials does it need?

A CloudAlly API application key pair (CLOUDALLY_CLIENT_ID, CLOUDALLY_CLIENT_SECRET) plus one login. auth login --partner (with CLOUDALLY_PARTNER_EMAIL and CLOUDALLY_PARTNER_PASSWORD) reaches every customer and is needed for partner-wide commands, past backup dates and downloads; auth login (with CLOUDALLY_EMAIL and CLOUDALLY_PASSWORD) is limited to one company.

Can it change or delete my customers' backups?

It can, because CloudAlly's API can: restores write back into live mailboxes, and deleting a backup task deletes its backed-up data. restore submit, download submit and download start print exactly what they would do and stop until you pass --yes, and download jobs are only ever EXPORT jobs. The generated API commands (recovery restore and every delete or unsubscribe) send at once with no confirmation, so governance.md marks them human-only. CLOUDALLY_MCP_READ_ONLY=1 gives an MCP agent read-only tools. With it off (the default), restore_submit, download_submit and download_start only preview, but cloudally_execute can call any API endpoint, including recovery restore and tasks delete, with no plan, ledger or guard (a write runs as soon as the caller passes confirm=true, which an agent can do), and download_link returns live 60-second links; set it to 1 unless a human approves every call.

Can it download mailbox archives?

Yes. The documented export call (recovery export and its distributor and reseller variants) answers 200 and creates no job, so download submit (every mailbox backed up on one date) and download start (one single-archive mailbox) create the jobs through the customer portal the way the portal does, and download fetch mints each 60-second link and writes the archive to a folder you choose. Both creates print a plan and stop until you pass --yes.

Why does a December 31st download hold December 30th?

CloudAlly stamps backups in UTC, and a nightly backup runs late in the evening local time, so it is stamped the next UTC day. Pass --utc-offset to download submit (-5 for US Eastern in winter, -4 during daylight saving time) and --on-date then means the customer's own calendar day.

What does it cost?

Free. Apache-2.0 licensed. You pay only for whichever AI agent you use (Claude, ChatGPT, Codex, etc.), and that's billed by your AI provider, not by us.

Safety model

TierExamplesRecommended agent policy
Readbackup health, backup snapshots, restore plan, restore watch, restore history, download list, download watch; every list / get / details / bills / backup-statuses read; sync, search, export (local writes only: the response cache, the local store, files you name)Allow
Sensitive readdownload link (a 60-second presigned URL to a mailbox archive), download fetch (CLI only; writes complete mailbox archives to disk; --plan-only previews)Human-in-the-loop; never paste a link anywhere
Writedownload submit, download start (EXPORT jobs only; each needs --yes); backup-now, activate, pause, add-entity, cancel on backup tasks; creating accounts, resellers and users; settings and permission updatesHuman-in-the-loop
Restorerestore submit (needs --yes) and the recovery restore commands (no confirm), which write back into live mailboxes, sites and drivesHuman-in-the-loop; run restore plan first
Destructivetasks delete and its distributor and reseller variants (delete a backup task and its data), remove-entity, unsubscribe, user delete, delete-userHuman only
Credentialauth login, auth use-account, auth set-token, auth logout, session login, session partner-login and session refresh, access-token, sign-in-token, user update-password, importHuman-in-the-loop only
Data egress--deliver webhook:<url>, feedback --send, and feedback when CLOUDALLY_FEEDBACK_ENDPOINT is set with CLOUDALLY_FEEDBACK_AUTO_SEND=trueHuman-in-the-loop

The MCP cloudally_execute tool can call any endpoint of CloudAlly's spec by ID: each call follows the tiers above, and the tool is not listed while CLOUDALLY_MCP_READ_ONLY=1 (cloudally_read stays, and refuses every state-changing endpoint).

The strongest control is the company login (auth login), which cannot reach any other customer; use the partner login only where partner-wide work is needed. Full details, including how to lock it down, are in governance.md.

Status

Live-verified. Confirmed by @sonofskywalker3 (Servosity) against their own production tenant (receipt). More MSPs run it live in our weekly Build Sessions. RSVP at compoundingteams.com/build-sessions.


Standards. Conforms to the open Agent Skills spec (Anthropic, Dec 2025; 40+ agents). MCP-compatible - works with any MCP-capable agent including Hermes. OpenClaw-ready (frontmatter pre-wired, awaiting OpenClaw launch).

Maintained by Servosity. Apache-2.0 licensed. Built with CLI Printing Press. Last updated: 2026-11-05.

来源:skills/cloudally/README.md,提交 8f2e267

工具

0
SourceWeft 曾在隔离沙箱中以无凭据方式启动该软件包一次,以列出其工具,但未能完成:该软件包类型无法在沙箱中运行。

版本历史

2
  1. v0.2.0最新Nov 6, 2026
  2. v0.1.0Nov 5, 2026

评分

已满足适用检查项的 40%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

    请在仓库或注册中心条目中声明许可证。