Skip to main content
Glama
thatfactory

xcode-cloud-mcp

by thatfactory

xcode-cloud-mcp

Minimaler MCP-Server zum Entdecken von Xcode-Cloud-Produkten, zum Inspizieren und Bearbeiten von Workflows, zum Überwachen von Build-Läufen und zum Abrufen von Build-Problemen, Logs, Testzusammenfassungen und UI-Test-Artefakten über die App Store Connect API.

Funktionen

Funktion

Tool(s)

Beispielverwendung

Beispielrückgabe

Produkte entdecken

list_products

„Zeig mir die Xcode-Cloud-Produkte, die in diesem Konto verfügbar sind.“

Demo App, productType: APP, createdDate: 2026-03-30T10:00:00Z

Workflows entdecken

list_workflows

„Liste die Workflows für Produkt def456 auf.“

Feature Branch, description, isEnabled: true, containerFilePath: Chauffeur.xcodeproj

Workflow-Konfiguration anzeigen

get_workflow_details

„Zeig mir die vollständigen Workflow-Details für abc123, einschließlich Umgebung und Aktionen.“

general, environment, startConditions, actions, postActions

Laufende oder aktuelle Builds überwachen

list_build_runs

„Zeig mir die laufenden Builds für Workflow abc123, damit ich sie überwachen kann.“

number: 93, executionProgress: RUNNING, completionStatus: null, startedDate: ...

Workflow aktivieren oder deaktivieren

set_workflow_enabled

„Deaktiviere Workflow abc123, während wir neue Einstellungen testen.“

operation.type: set_workflow_enabled, workflow.general.isEnabled: false

Name, Beschreibung oder Clean-Modus aktualisieren

update_workflow_general

„Benenne Workflow abc123 in Feature Branch v2 um und passe seine Beschreibung an.“

changedFields: [name, description], aktualisiertes workflow.general

Startbedingungen explizit aktualisieren

update_workflow_start_conditions

„Ändere Workflow abc123, sodass Pull-Request-Builds nicht mehr automatisch abgebrochen werden.“

aktualisiertes workflow.startConditions.pullRequest.autoCancel: false

Workflow-Aktionsliste ersetzen

update_workflow_actions

„Entferne die Archiv-Aktion aus Workflow abc123 und füge sie wieder hinzu, sobald das Experiment abgeschlossen ist.“

actionCount: 4 nach dem Entfernen, dann actionCount: 5 nach dem Wiederherstellen

Build-Status schnell einsehen

get_build_issues

„Was ist beim letzten fehlgeschlagenen Build für Workflow abc123 schiefgelaufen?“

issueCounts: { errors: 1, testFailures: 3, warnings: 2 }

Kompakte Build-Log-Zusammenfassungen lesen

get_build_logs

„Rufe Logs von Build 81 ab und fasse den Fehler zusammen.“

failedTests, highlights, excerpt, savedLogsDirectory

Logs für lokales grep materialisieren

materialize_build_logs

„Lade die Logs für Build 81 herunter, damit ich sie lokal durchsuchen kann.“

savedLogsDirectory: /var/folders/..., savedLogs: [...]

Testergebnisse zusammenfassen

get_test_results

„Fasse die Testergebnisse für den letzten fehlgeschlagenen Build zusammen.“

testFailures, issueCounts, summary

Direkt zu fehlgeschlagenen Tests springen

get_failed_tests

„Welche Tests sind in Build 81 fehlgeschlagen?“

displayExpiryDateReturnsFormattedDateWhenExpiryDateExists(), Assertion-Meldung, gespeicherte Log-Pfade

UI-Test-Artefakte abrufen

get_test_artifacts

„Zeig mir die Screenshots und Videos des letzten fehlgeschlagenen UI-Testlaufs.“

screenshots, videos, resultBundles, downloadUrl

Lokale temporäre Dateien bereinigen

cleanup_saved_logs

„Entferne gespeicherte Logs, die älter als 24 Stunden sind.“

removedDirectories: [...], retainedDirectories: [...]

Die Build-Suche ist workflowbezogen. Abruf-Tools akzeptieren eine direkte buildRunId, oder eine workflowId plus buildNumber, oder eine workflowId plus buildSelector: "latest" | "latestFailing".

list_products und list_workflows paginieren automatisch durch alle Ergebnisse.

list_build_runs unterstützt status: "all" | "failed" | "succeeded" | "running" | "pending" und ein optionales limit, das standardmäßig 20 beträgt, sodass Agenten aktive Workflows abfragen können, ohne jeden Lauf lokal nachzubearbeiten oder die MCP-Antwortgröße aufzublähen.

Related MCP server: appstore-release-mcp

Anforderungen

  • Node.js 20+

  • App Store Connect API-Anmeldedaten mit Zugriff auf Xcode Cloud

Umgebungsvariablen

Primäre Namen:

  • APPSTORE_CONNECT_API_KEY_ID

  • APPSTORE_CONNECT_API_ISSUER_ID

  • APPSTORE_CONNECT_API_KEY_CONTENT

Kompatibilitäts-Aliase:

  • APP_STORE_KEY_ID

  • APP_STORE_ISSUER_ID

  • APP_STORE_PRIVATE_KEY

Der private Schlüssel kann als wörtlicher mehrzeiliger PEM-Inhalt oder als Zeichenfolge mit maskiertem \n übergeben werden.

Claude-Einrichtung

claude mcp add xcode-cloud \
  --env APPSTORE_CONNECT_API_KEY_ID="$APPSTORE_CONNECT_API_KEY_ID" \
  --env APPSTORE_CONNECT_API_ISSUER_ID="$APPSTORE_CONNECT_API_ISSUER_ID" \
  --env APPSTORE_CONNECT_API_KEY_CONTENT="$APPSTORE_CONNECT_API_KEY_CONTENT" \
  -- npx -y @thatfactory/xcode-cloud-mcp

Codex-Einrichtung

codex mcp add xcode-cloud \
  --env APPSTORE_CONNECT_API_KEY_ID="$APPSTORE_CONNECT_API_KEY_ID" \
  --env APPSTORE_CONNECT_API_ISSUER_ID="$APPSTORE_CONNECT_API_ISSUER_ID" \
  --env APPSTORE_CONNECT_API_KEY_CONTENT="$APPSTORE_CONNECT_API_KEY_CONTENT" \
  -- npx -y @thatfactory/xcode-cloud-mcp

Verfügbare Tools

  • list_products()

  • list_workflows(productId)

  • get_workflow_details(workflowId)

  • list_build_runs(workflowId, limit?, status?)

  • set_workflow_enabled(workflowId, enabled)

  • update_workflow_general(workflowId, name?, description?, clean?)

  • update_workflow_start_conditions(workflowId, branchStartCondition?, manualBranchStartCondition?, pullRequestStartCondition?, manualPullRequestStartCondition?, scheduledStartCondition?, tagStartCondition?, manualTagStartCondition?)

  • update_workflow_actions(workflowId, actions)

  • get_build_issues(buildRunId? workflowId? buildNumber? buildSelector?)

  • get_build_logs(buildRunId? workflowId? buildNumber? buildSelector?, maxCharacters?)

  • materialize_build_logs(buildRunId? workflowId? buildNumber? buildSelector?)

  • get_test_results(buildRunId? workflowId? buildNumber? buildSelector?)

  • get_failed_tests(buildRunId? workflowId? buildNumber? buildSelector?)

  • get_test_artifacts(buildRunId? workflowId? buildNumber? buildSelector?)

  • cleanup_saved_logs(buildRunId?, maxAgeHours?)

Verhalten beim Log-Abruf

get_build_logs hält die MCP-Antwort absichtlich kompakt:

  • Es lädt und extrahiert textähnliche Build-Log-Artefakte in ein temporäres lokales Verzeichnis.

  • Es gibt savedLogsDirectory und savedLogs zurück, damit lokale Agenten die extrahierten Dateien mit rg, grep oder cat untersuchen können.

  • Es gibt eine kompakte failedTests-Zusammenfassung, highlights und einen begrenzten excerpt zurück.

  • Selbst wenn ein Aufrufer ein sehr großes maxCharacters übergibt, wird der Inline-Auszug begrenzt, um übermäßig große MCP-Antworten zu vermeiden.

Empfohlener Agenten-Workflow:

  1. Rufe get_failed_tests oder get_build_logs auf.

  2. Lies savedLogsDirectory.

  3. Verwende rg in diesem Verzeichnis, um den genauen fehlgeschlagenen Test oder die Assertion zu untersuchen.

  4. Falls nötig, rufe cleanup_saved_logs auf, wenn die Untersuchung abgeschlossen ist.

Temporäre Logs werden unter dem System-Temp-Verzeichnis in einem Pfad wie folgt geschrieben:

/tmp/xcode-cloud-mcp/build-logs/<buildRunId>

Auf macOS wird dies normalerweise zu einem Pfad unter /var/folders/.../T/ aufgelöst.

Bereinigungsrichtlinie:

  • Jeder neue Aufruf für dieselbe buildRunId löscht und erstellt zuerst das build-spezifische temporäre Verzeichnis neu.

  • Ältere Build-Verzeichnisse werden automatisch entfernt, wenn sie älter als 24 Stunden sind.

  • Sie können cleanup_saved_logs auch direkt für eine buildRunId oder für alle Verzeichnisse aufrufen, die älter als ein gewähltes Aufbewahrungsfenster sind.

Beispiel-Prompts

Retrieve logs of the latest failing build for workflow abc123.
Retrieve logs of build 81, then inspect the returned savedLogsDirectory and grep for Expectation failed.
Get the failed tests for build 81, then open the saved logs directory and inspect the failing test in context.
Retrieve logs of build number 42 for workflow abc123.
Show me the latest failing UI test artifacts for workflow abc123.
List the workflows for product def456 and then summarize the latest build.
Show me the full workflow details for workflow abc123, including environment, start conditions, actions, and whether it is enabled.
Disable workflow abc123, remove the archive action, then restore the original action list after the experiment.

Verhalten der Workflow-Details

get_workflow_details gibt die Live-Workflow-Konfiguration zurück, die von App Store Connect bereitgestellt wird, gruppiert in:

  • general

  • environment

  • startConditions

  • actions

  • postActions

Hinweise:

  • environment enthält Repository, xcodeVersion und macOsVersion, wenn App Store Connect sie zurückgibt.

  • actions enthält Aktionstyp, Schema, Plattform, Ziel, erforderlichen Bestehensstatus und Testplan-Details, falls vorhanden.

  • postActions wird derzeit als leeres Array mit einem Hinweis zurückgegeben, da die App Store Connect-Workflow-Payload in der beobachteten API-Antwort keine separaten Post-Aktionen enthält.

Verhalten bei Workflow-Aktualisierungen

Die Workflow-Aktualisierungstools sind bewusst explizit:

  • set_workflow_enabled schaltet nur isEnabled um.

  • update_workflow_general ändert nur name, description und clean.

  • update_workflow_start_conditions ändert nur die von dir übergebenen Startbedingungsobjekte.

  • update_workflow_actions ersetzt das gesamte actions-Array, daher sollten Aufrufer zuerst den aktuellen Workflow abrufen und dann die endgültige gewünschte Aktionsliste senden.

Wichtige Einschränkung:

  • Wenn der Workflow in Xcode Cloud Restrict Editing aktiviert hat, können Änderungen fehlschlagen, selbst wenn der App Store Connect-API-Schlüssel über App Manager-Zugriff verfügt.

  • Damit MCP-Änderungen zuverlässig funktionieren, deaktiviere das Kontrollkästchen Restrict Editing für diesen Workflow, bevor du die Schreibwerkzeuge verwendest.

  • Wenn Apple die Anfrage danach weiterhin ablehnt, verwende eine stärkere API-Schlüsselrolle wie Admin.

Lokale Entwicklung

Abhängigkeiten installieren:

npm install

Tests ausführen:

npm test

Paket erstellen:

npm run build
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
10Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for Appcircle mobile CI/CD platform.

  • MCP server for interacting with the Supabase platform

  • An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/thatfactory/xcode-cloud-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server