xcode-cloud-mcp

xcode-cloud-mcp

Local MCP server enabling agents to track Xcode Cloud builds and access TestFlight crash reports through the App Store Connect API.

Category
Visit Server

README

xcode-cloud-mcp (self-owned)

Local Model Context Protocol server so your agents can track Xcode Cloud builds via the App Store Connect API.

It also reads TestFlight beta-feedback crash reports. These are distinct from Xcode Cloud CI failures: they are reports a TestFlight tester explicitly submitted, including the raw crash log for a selected report.

This is your private copy — no third-party Xcode Cloud MCP package. Only well-known dependencies:

Package Why
@modelcontextprotocol/sdk MCP stdio server
jose ES256 JWT for App Store Connect
zod Tool argument schemas

What agents can do

Tool Purpose
list_products Discover Xcode Cloud products
list_apps Discover App Store Connect apps for TestFlight diagnostics
list_workflows Workflows for a product
get_workflow Single workflow details
start_build Trigger a build (optional git ref)
cancel_build Cancel an in-flight build
list_build_runs Recent runs for a workflow
get_build_run Status snapshot
get_build_actions Per-action progress (build/test/archive)
wait_for_build Poll until terminal status or timeout
get_build_issues Errors / warnings
list_action_artifacts Logs / result bundles metadata
get_build_logs Download log text for an action
get_test_results Tests for an action
get_test_failures Failed tests across a run
list_beta_feedback_crashes Privacy-minimized TestFlight crash-report summaries
get_beta_crash_log Raw log for one selected TestFlight crash report

Typical agent flow

  1. list_products → list_workflows
  2. start_build or list_build_runs for an existing run
  3. wait_for_build / get_build_run + get_build_actions
  4. On failure: get_build_issues, get_test_failures, get_build_logs

TestFlight crash-report flow

  1. list_apps (optionally filter by bundle id)
  2. list_beta_feedback_crashes with the selected appId
  3. get_beta_crash_log for a specific submissionId

The listing intentionally omits tester email and the free-form feedback comment. Raw crash logs are bounded by maxChars (80,000 by default) and should be retrieved only when needed for diagnosis.

Prerequisites

  • Node.js 20+
  • Apple Developer account with Xcode Cloud
  • App Store Connect API key (Developer or App Manager is usually enough)

Create an API key

  1. App Store Connect → Users and Access → Integrations → App Store Connect API
  2. Generate a key → download the .p8 (once only)
  3. Note Key ID and Issuer ID

Setup

cd ~/Desktop/projects/xcode-cloud-mcp
npm install
npm run build

Copy env template and fill in values:

cp .env.example .env
APP_STORE_KEY_ID=YOUR_KEY_ID
APP_STORE_ISSUER_ID=YOUR_ISSUER_UUID
APP_STORE_PRIVATE_KEY_PATH=/Users/you/path/to/AuthKey_XXXXXXXXXX.p8

Prefer APP_STORE_PRIVATE_KEY_PATH over pasting PEM into config.

Run locally (smoke)

export $(grep -v '^#' .env | xargs)
npm run dev
# process waits on stdio — that's correct for MCP

Quick API check without MCP (optional):

node --import tsx -e '
import { loadConfig } from "./src/config.ts";
import { AppStoreAuth } from "./src/auth.ts";
import { AppStoreConnectClient } from "./src/client.ts";
const c = loadConfig();
const client = new AppStoreConnectClient(c, new AppStoreAuth(c));
const doc = await client.get("/v1/ciProducts", { limit: 5 });
console.log(JSON.stringify(doc, null, 2));
'

Grok config

Add to ~/.grok/config.toml (user scope) or project .grok/config.toml:

[mcp_servers.xcode-cloud]
command = "node"
args = ["/Users/deepanshu/Desktop/projects/xcode-cloud-mcp/dist/index.js"]
startup_timeout_sec = 30
env = {
  APP_STORE_KEY_ID = "YOUR_KEY_ID",
  APP_STORE_ISSUER_ID = "YOUR_ISSUER_UUID",
  APP_STORE_PRIVATE_KEY_PATH = "/Users/deepanshu/Desktop/projects/AuthKey_XXXXXXXXXX.p8"
}

Or via CLI:

grok mcp add xcode-cloud \
  -e APP_STORE_KEY_ID=YOUR_KEY_ID \
  -e APP_STORE_ISSUER_ID=YOUR_ISSUER_UUID \
  -e APP_STORE_PRIVATE_KEY_PATH=/Users/deepanshu/Desktop/projects/AuthKey_XXXXXXXXXX.p8 \
  -- node /Users/deepanshu/Desktop/projects/xcode-cloud-mcp/dist/index.js

Then /mcps → confirm tools, or:

grok mcp doctor xcode-cloud

Cursor

~/.cursor/mcp.json:

{
  "mcpServers": {
    "xcode-cloud": {
      "command": "node",
      "args": ["/Users/deepanshu/Desktop/projects/xcode-cloud-mcp/dist/index.js"],
      "env": {
        "APP_STORE_KEY_ID": "YOUR_KEY_ID",
        "APP_STORE_ISSUER_ID": "YOUR_ISSUER_UUID",
        "APP_STORE_PRIVATE_KEY_PATH": "/Users/deepanshu/Desktop/projects/AuthKey_XXXXXXXXXX.p8"
      }
    }
  }
}

Security

  • Never commit .p8, .env, or keys
  • Restrict key role to the minimum needed
  • Rotate keys if they leak
  • This server speaks only to api.appstoreconnect.apple.com (override only via ASC_API_BASE_URL)

Project layout

src/
  index.ts          # stdio entry
  config.ts         # env loading
  auth.ts           # JWT ES256
  client.ts         # ASC REST client
  types.ts          # CI resource shapes
  format.ts         # tool response helpers
  tools/register.ts # MCP tools

License

Private — for your use only.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured