
Devicecloud
io.github.RubenGlezPublished by GitHub account RubenGlezv0.3.3Updated Nov 7, 2026
Triage failing DeviceCloud Maestro test runs: fail reasons, screenshots, flaky-flow analytics
Overview
Read-only MCP server that pulls failing DeviceCloud Maestro test runs — fail reasons, screenshots, reports and flaky-flow analytics — into the editor for…
- What you can do
- Diagnose a run in one call: failed flows, fail reasons, durations, downloaded failure screenshots and a passed/failed/flaky summary
- Rank suite health over a window, classifying flows as healthy, flaky, broken or regression
- List and filter recent uploads, and read overall and per-flow status with fail reasons
- Fetch JUnit XML and HTML reports, and download raw artifacts such as logs, screenshots and video
- Review per-flow pass-rate analytics and drill into run history for a single flow file
- When to use it
- Useful when Maestro flows run on DeviceCloud from CI and you want the assistant to read the failure evidence and fix the flow or app code without opening the dashboard. Also handy for deciding which flaky or broken flows are worth fixing first.
- Requirements
- Node.js 22 or later; the server runs on demand via npx, so there is no separate install step. A DeviceCloud API key supplied in the DEVICE_CLOUD_API_KEY environment variable, exported from the shell profile so the spawned process inherits it. Network access to the DeviceCloud REST API; the unzip binary is needed for HTML report extraction.
Installation
In SourceWeft
- Open Devicecloud in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
devicecloud-mcp
Triage failing DeviceCloud runs so your agent can fix them, without opening the dashboard.
When a DeviceCloud run goes red in CI, the reason why is buried in the web dashboard: the fail reason, the failure screenshot, the logs. This server pulls all of it straight into your editor, so your AI assistant (Claude Code, Cursor, Claude Desktop, etc.) can read the evidence, find the root cause, and fix the flow or app code. You commit, CI re-runs, and the dashboard stays closed.
DeviceCloud is a platform for running Maestro flows on real devices. Your CI triggers the runs; this server is how you debug the ones that fail.
It lets the assistant:
- diagnose a run in one call: failed flows, fail reasons, failure-screenshot paths, and a passed/failed/flaky summary, ready to act on
- rank suite health: classify every flow as healthy, flaky, broken, or regression over a window so you know what's worth fixing first
- list recent uploads, filter by name (commit message + short SHA) or date
- read per-flow status and
failReasonfor any upload - pull the JUnit XML report
- download and auto-unzip the HTML report (with failure screenshots highlighted)
- download raw artifacts (logs, screenshots, video) as a zip
- spot flaky vs genuinely-broken flows with per-flow pass-rate analytics
- drill into run history for a specific flow file
The server is read-only against the DeviceCloud REST API: no dcd CLI dependency, and nothing an agent does can trigger billable runs. Triggering and re-running tests stay with your CI; cancelling a run stays in the dashboard.
Install
Requires Node.js 22+ — check with node --version. There's no separate install step; the server runs on demand via npx.
Add this to your MCP client config:
Get your API key at console.devicecloud.dev/settings.
Claude Code: add it with one command
Skip editing JSON — register the server in one step:
Add -s user to make it available in every project instead of only the current one.
Configure your assistant
The config block above is the same for every client; only the file location differs.
Claude Code (project-scoped, .mcp.json)
Add to a .mcp.json at the root of any project where you want the tools available:
Then export the key from your shell profile so Claude Code's child process inherits it:
Setting it only in an interactive shell isn't enough; Claude Code spawns the MCP from its own environment, so the variable needs to be in the profile.
Claude Code (user-scoped, ~/.claude.json)
If you want it available everywhere instead of per-project, add the same devicecloud block under mcpServers in ~/.claude.json.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). Restart Claude Desktop after saving; a tools icon appears in the chat input once the server connects.
Cursor
Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json at the project root (project-scoped).
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json.
Other MCP-compatible clients
Any client that supports stdio MCP servers uses the same { command, args, env } shape. Consult the client's docs for the config file location.
Note: OpenAI products (ChatGPT, Codex, the Assistants API) use their own tool protocol and do not support MCP servers.
Verify
After restarting your assistant:
You should see a JSON-shaped response with an uploads array. If instead you get DEVICE_CLOUD_API_KEY env var is required, the variable isn't reaching the spawned process; re-check that it's exported from your shell profile (not just the current shell).
Available tools
Upload-naming convention
Uploads are typically named after the commit or build that triggered them. A common convention is to include the short SHA:
Filter with name = "*a1b2c3d4*" to find every upload for a specific commit. The wildcard is *, not %.
When uploads do and don't exist
DeviceCloud uploads are created when you trigger a run, via the CLI, a CI step, the GitHub Action, or the API directly. Whether a given commit has an upload depends entirely on your CI setup. If list_uploads returns nothing for a SHA you expect, the run probably wasn't triggered for that commit.
Troubleshooting
DEVICE_CLOUD_API_KEY env var is required: the variable isn't visible to the spawned MCP. Export it from~/.zshrc/~/.bashrc, restart your assistant.unzip failed(fromget_html_report): theunzipbinary is missing or crashed. Install withbrew install unzip(macOS ships with it; Linux usually does too).- HTTP 401 / 403: the API key is wrong or revoked. Regenerate it at console.devicecloud.dev/settings.
- Empty
list_uploadsfor your SHA: a run probably wasn't triggered for that commit. See "When uploads do and don't exist" above.
Source: README.md at commit 729d94d
Tools
0Version history
2- v0.3.3LatestNov 7, 2026
- v0.3.2Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts