Sign In

devicecloud-mcp

Package Overview
Dependencies
Maintainers
1
Versions
11
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

devicecloud-mcp - npm Package Compare versions

Comparing version
0.3.1
to
0.3.2
+36
dist/startup.test.js
import assert from "node:assert/strict";
import { readFileSync } from "node:fs";
import { resolve } from "node:path";
import { test } from "node:test";
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
test("the built server initializes and lists its tools", async () => {
const packageJson = JSON.parse(readFileSync(resolve("package.json"), "utf8"));
const transport = new StdioClientTransport({
command: process.execPath,
args: [resolve("dist/index.js")],
env: { DEVICE_CLOUD_API_KEY: "startup-test-key" },
stderr: "pipe",
});
const client = new Client({ name: "startup-test", version: "1.0.0" });
try {
await client.connect(transport);
assert.equal(client.getServerVersion()?.version, packageJson.version);
const { tools } = await client.listTools();
assert.deepEqual(tools.map(({ name }) => name).sort(), [
"diagnose_run",
"download_artifacts",
"get_flow_runs",
"get_html_report",
"get_junit_report",
"get_results",
"get_upload_status",
"list_flow_analytics",
"list_uploads",
"suite_health",
]);
}
finally {
await client.close();
}
});
+3
-1

@@ -6,2 +6,3 @@ #!/usr/bin/env node

import { spawn } from "node:child_process";
import { readFileSync } from "node:fs";
import { mkdir, readdir, writeFile } from "node:fs/promises";

@@ -12,2 +13,3 @@ import { join, resolve as resolvePath } from "node:path";

const API_KEY = process.env.DEVICE_CLOUD_API_KEY;
const { version } = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
if (!API_KEY) {

@@ -418,3 +420,3 @@ console.error("[devicecloud-mcp] DEVICE_CLOUD_API_KEY env var is required");

];
const server = new Server({ name: "devicecloud-mcp", version: "0.1.3" }, { capabilities: { tools: {} } });
const server = new Server({ name: "devicecloud-mcp", version }, { capabilities: { tools: {} } });
server.setRequestHandler(ListToolsRequestSchema, async () => ({

@@ -421,0 +423,0 @@ tools: tools.map(({ name, description, inputSchema }) => ({ name, description, inputSchema })),

{
"name": "devicecloud-mcp",
"version": "0.3.1",
"version": "0.3.2",
"mcpName": "io.github.RubenGlez/devicecloud",

@@ -18,3 +18,2 @@ "description": "Triage failing DeviceCloud Maestro test runs from your AI assistant — fail reasons, failure screenshots, and flaky-flow analytics, without opening the web console",

},
"homepage": "https://rubenglez.dev/devicecloud-mcp",
"bugs": {

@@ -26,3 +25,3 @@ "url": "https://github.com/RubenGlez/devicecloud-mcp/issues"

"engines": {
"node": ">=24"
"node": ">=22"
},

@@ -36,3 +35,3 @@ "files": [

"dependencies": {
"@modelcontextprotocol/sdk": "^1.29.0"
"@modelcontextprotocol/sdk": "1.29.0"
},

@@ -48,3 +47,3 @@ "devDependencies": {

"dev": "tsx src/index.ts",
"test": "node --import tsx/esm --test src/index.test.ts",
"test": "pnpm build && node --import tsx/esm --test src/*.test.ts",
"release": "node scripts/release.mjs",

@@ -51,0 +50,0 @@ "release:minor": "node scripts/release.mjs minor",

@@ -7,4 +7,2 @@ # devicecloud-mcp

**Project page:** [rubenglez.dev/devicecloud-mcp](https://rubenglez.dev/devicecloud-mcp)
When a [DeviceCloud](https://console.devicecloud.dev) 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.

@@ -30,3 +28,3 @@

**Requires Node.js 24+** — check with `node --version`. There's no separate install step; the server runs on demand via `npx`.
**Requires Node.js 22+** — check with `node --version`. There's no separate install step; the server runs on demand via `npx`.

@@ -33,0 +31,0 @@ Add this to your MCP client config: