App Store Connect MCP Server
App Store Connect MCP Server
Die vollständige App Store Connect API als MCP-Server. 1.263 Operationen, direkt aus Apples offizieller OpenAPI-Spezifikation generiert, über nur 4 token-effiziente Tools für Claude Code, Claude Desktop, Cursor und jeden anderen Model Context Protocol-Client verfügbar.
Was ist der App Store Connect MCP-Server?
app-store-connect-mcp ist ein Open-Source-Model Context Protocol (MCP)-Server für die App Store Connect API. Installiere ihn einmal und dein KI-Agent kann alles lesen und schreiben, was Apple für deine Apps und dein Entwicklerkonto bereitstellt:
App-Store-Einträge und Metadaten · TestFlight-Builds, Beta-Gruppen und Tester · In-App-Käufe · automatisch verlaufende Abonnements, Angebote und Win-back-Angebote · Game-Center-Ranglisten, Erfolge und Matchmaking · Xcode-Cloud-Workflows und Build-Läufe · Provisioning-Profile, Zertifikate, Bundle-IDs und Geräte · App-Review-Einreichungen und Review-Details · Kundenbewertungen und Antworten · Preise, Verfügbarkeit und Gebiete · Vertriebs-, Finanz- und Analyseberichte · Benutzer, Rollen und Einladungen · App Clips, Hintergrund-Assets und alternative Distribution.
Die meisten App Store Connect MCP-Server wickeln zwei oder drei Dutzend Endpunkte von Hand ab und veralten dann. Dieser hier ist aus Apples veröffentlichter OpenAPI-Spezifikation generiert, sodass die Abdeckung die gesamte dokumentierte Oberfläche umfasst und mit einem einzigen bun run generate aktuell bleibt.
In diesem Repository liegen keine Zugangsdaten. Du stellst deinen eigenen App Store Connect API-Key zur Laufzeit über Umgebungsvariablen bereit. Es wird nichts gebündelt, protokolliert oder irgendwohin übertragen, außer an Apple.
Inhaltsverzeichnis
Related MCP server: App Store Connect MCP
Auf einen Blick
Was es ist | MCP-Server für die vollständige App Store Connect API |
API-Version | App Store Connect API 4.4.1 (OpenAPI 3.0.1) |
Operationen im Katalog | 1.263 — eine pro Pfad + Methode |
API-Pfade | 966 |
Ressourcen-Tags | 195 |
Registrierte MCP-Tools | 4 Meta-Tools: |
Methoden-Aufteilung | 797 |
Quelle der Wahrheit | Apples OpenAPI-Zip, eingecheckt unter |
Authentifizierung | ES256-JWT, zur Laufzeit aus Issuer-ID + Key-ID + |
Basis-URL |
|
Transport | stdio |
Laufzeit | Bun 1.1+ und |
Lizenz | MIT |
Warum 4 Tools statt 1.263?
Wenn jede OpenAPI-Operation als eigenes MCP-Tool registriert wird, werden 1.263 vollständige JSON-Schemas in das Kontextfenster des Modells gekippt. Das ist in der Größenordnung von Hunderttausenden Tokens, die verbrannt werden, bevor der Agent irgendeine echte Arbeit leistet — und viele Clients lehnen eine so große Tool-Liste schlicht ab oder kürzen sie.
Dieser Server hält den vollständigen Katalog intern und legt eine kleine, stabile Oberfläche darüber:
asc_search → find operations (names, methods, paths, tags — no schemas)
asc_schema → describe one operation (full input JSON Schema + call hint)
asc_call → execute one operation (real request, or _dryRun)
asc_tags → list resource tags (with operation counts, to narrow search)Der Agent bezahlt genau für das Schema, das er gerade verwenden will, und sonst nichts. Ein typischer Drei-Schritte-Ablauf kostet ein paar tausend Tokens statt ein paar hunderttausend.
Notausstieg (nur zum Debuggen)
export ASC_EXPOSE_ALL_TOOLS=1 # also register all 1,263 operations as individual MCP toolsLass das im normalen Betrieb nicht gesetzt. Es existiert zum Debuggen der Spezifikation und ist im Kontext extrem teuer.
Die vier MCP-Tools
asc_search — die richtige Operation finden
Volltextsuche über operationId, Name, Pfad, Tags, Methode und Beschreibung. Liefert nach Relevanz sortierte Treffer ohne die JSON-Schemas.
Parameter | Typ | Erforderlich | Beschreibung |
| string | optional* | Freitext, z. B. |
| string | optional* | Exakter OpenAPI-Tag-Filter, z. B. |
| string | optional |
|
| integer | optional | Maximale Treffer, Standard |
* Mindestens eines von query, tag oder method.
{ "query": "list apps", "method": "GET", "limit": 5 }asc_schema — eine Operation beschreiben
Gibt das vollständige Eingabe-JSON-Schema der Operation, ihre Pfad-Parameterliste, ihre Query-Parameterliste und einen callHint zurück, der zeigt, wie sie aufgerufen wird.
Parameter | Typ | Erforderlich | Beschreibung |
| string | ja | Operation-ID oder generierter Tool-Name, z. B. |
asc_call — die Operation ausführen
Parameter | Typ | Erforderlich | Beschreibung |
| string | ja | Operation-ID oder generierter Tool-Name |
| object | optional | Pfad-Parameter, Query-Parameter, |
| boolean | optional | Methode/Pfad/Query/Body ohne Aufruf von Apple auflösen |
Pfad- und Query-Felder funktionieren entweder verschachtelt in args oder als Top-Level-Schlüssel neben operation. JSON:API-Schreibvorgänge kommen in body.
// read
{ "operation": "apps_getCollection", "args": { "limit": 10, "fields[apps]": "name,bundleId,sku" } }
// dry run — no network call, shows the resolved request
{ "operation": "apps_getCollection", "_dryRun": true, "args": { "limit": 10 } }
// write (JSON:API document)
{
"operation": "betaGroups_createInstance",
"args": {
"body": {
"data": {
"type": "betaGroups",
"attributes": { "name": "Internal QA" },
"relationships": { "app": { "data": { "type": "apps", "id": "1234567890" } } }
}
}
}
}asc_tags — Orientierung in der API
Parameter | Typ | Erforderlich | Beschreibung |
| integer | optional | Maximale Tags, Standard alle 195, sortiert nach Operationsanzahl |
Umgang mit Antworten
JSON-Antworten werden geparst zurückgegeben.
CSV-, XML- und Text-Antworten werden als Text zurückgegeben.
Gzip- und Binär-Downloads (Finanzberichte, Vertriebsberichte) kommen als Base64 mit
encoding,contentType,byteLengthund einem Decode-Hinweis zurück.Antworten über ~120.000 Zeichen werden gekürzt, mit einem Hinweis,
filter[…],fields[…]oderlimiteinzugrenzen.HTTP 4xx/5xx werden als MCP-Fehler mit Apples eigenem Fehlerbody angezeigt, damit der Agent Apples
detail-String lesen und sich selbst korrigieren kann.
Abdeckung: jede App Store Connect-Ressource
Alle 1.263 Operationen über 195 Ressourcen-Tags. Die Zahlen sind Operationen pro Tag.
Apps, Einträge und App-Store-Metadaten — ~250 Operationen
Apps (86) · AppStoreVersions (30) · AppInfos (20) · AppCustomProductPageLocalizations (12) · AppStoreVersionExperiments (12) · AppStoreVersionLocalizations (12) · AppEncryptionDeclarations (8) · AppEventLocalizations (8) · AppStoreVersionExperimentTreatmentLocalizations (7) · AppCategories (6) · AppCustomProductPages (6) · AppEvents (6) · AppPreviewSets (6) · AppScreenshotSets (6) · AppStoreVersionExperimentTreatments (6) · EndUserLicenseAgreements (6) · AppCustomProductPageVersions (5) · AppInfoLocalizations (4) · AppPreviews (4) · AppScreenshots (4) · AppEventScreenshots (4) · AppEventVideoClips (4) · AccessibilityDeclarations (4) · AndroidToIosAppMappingDetails (4) · AppTags (3) · AppStoreVersionPhasedReleases (3) · AgeRatingDeclarations (1) · AppStoreVersionPromotions (1) · AppStoreVersionReleaseRequests (1) · RoutingAppCoverages (4)
TestFlight und Beta-Tests — ~90 Operationen
BetaGroups (21) · BetaTesters (16) · BetaAppLocalizations (7) · BetaBuildLocalizations (7) · PreReleaseVersions (6) · BetaAppReviewDetails (5) · BetaAppReviewSubmissions (5) · BetaLicenseAgreements (5) · BuildBetaDetails (5) · BetaAppClipInvocations (4) · BetaFeedbackCrashSubmissions (4) · BetaRecruitmentCriteria (3) · BetaAppClipInvocationLocalizations (3) · BetaFeedbackScreenshotSubmissions (2) · BetaCrashLogs (1) · BetaRecruitmentCriterionOptions (1) · BetaTesterInvitations (1) · BuildBetaNotifications (1)
Builds und Uploads — ~50 Operationen
Builds (30) · BuildBundles (8) · BuildUploads (5) · BuildUploadFiles (3) · DiagnosticSignatures (1)
In-App-Käufe und Abonnements — ~200 Operationen
Subscriptions (32) · InAppPurchases (25) · SubscriptionGroups (10) · InAppPurchaseOfferCodes (9) · SubscriptionOfferCodes (9) · InAppPurchaseImages (8) · InAppPurchaseLocalizations (8) · InAppPurchasePriceSchedules (8) · InAppPurchaseVersions (8) · SubscriptionGroupLocalizations (8) · SubscriptionImages (8) · SubscriptionLocalizations (8) · SubscriptionVersions (8) · SubscriptionPlanAvailabilities (6) · SubscriptionPromotionalOffers (6) · WinBackOffers (6) · InAppPurchaseAppStoreReviewScreenshots (4) · InAppPurchaseAvailabilities (4) · InAppPurchaseOfferCodeOneTimeUseCodes (4) · SubscriptionAppStoreReviewScreenshots (4) · SubscriptionAvailabilities (4) · SubscriptionGroupVersions (4) · SubscriptionOfferCodeOneTimeUseCodes (4) · SubscriptionPricePoints (4) · InAppPurchaseOfferCodeCustomCodes (3) · SubscriptionIntroductoryOffers (3) · SubscriptionOfferCodeCustomCodes (3) · PromotedPurchases (4) · InAppPurchasePricePoints (2) · SubscriptionGracePeriods (2) · SubscriptionPrices (2) · InAppPurchaseContents (1) · InAppPurchaseSubmissions (1) · SubscriptionGroupSubmissions (1) · SubscriptionSubmissions (1) · SandboxTesters (2) · SandboxTestersClearPurchaseHistoryRequest (1)
Game Center — ~330 Operationen
GameCenterDetails (42) · GameCenterGroups (29) · GameCenterLeaderboardSets (27) · GameCenterLeaderboards (21) · GameCenterAchievements (19) · GameCenterAchievementLocalizations (14) · GameCenterActivities (14) · GameCenterLeaderboardLocalizations (12) · GameCenterLeaderboardSetLocalizations (12) · GameCenterMatchmakingRuleSets (11) · GameCenterMatchmakingQueues (10) · GameCenterAppVersions (9) · GameCenterAchievementImages (8) · GameCenterChallenges (8) · GameCenterLeaderboardImages (8) · GameCenterLeaderboardSetImages (8) · GameCenterLeaderboardSetMemberLocalizations (8) · GameCenterActivityVersions (7) · GameCenterActivityLocalizations (6) · GameCenterChallengeLocalizations (6) · GameCenterChallengeVersions (6) · GameCenterMatchmakingRules (6) · GameCenterEnabledVersions (5) · plus Erfolge-/Bestenlisten-/Aktivitäten-/Herausforderungen-Versionen, Bilder, Veröffentlichungen, Matchmaking-Teams, Regelwerk-Tests, Einreichungen von Einträgen und Spieler-Erfolgs-Einreichungen
Xcode Cloud (kontinuierliche Integration) — ~50 Operationen
CiProducts (13) · CiBuildActions (9) · CiWorkflows (8) · CiBuildRuns (6) · ScmRepositories (6) · CiMacOsVersions (4) · CiXcodeVersions (4) · ScmProviders (4) · CiArtifacts (1) · CiIssues (1) · CiTestResults (1) · ScmGitReferences (1) · ScmPullRequests (1)
Zertifikate, Identifikatoren und Profile — ~45 Operationen
BundleIds (11) · Profiles (10) · Certificates (7) · MerchantIds (7) · PassTypeIds (7) · Devices (4) · BundleIdCapabilities (3)
App Review und Einreichungen — ~20 Operationen
ReviewSubmissions (6) · AppStoreReviewDetails (5) · AppStoreReviewAttachments (4) · ReviewSubmissionItems (3) · AppStoreVersionSubmissions (1)
Preisgestaltung, Verfügbarkeit und Gebiete — ~25 Operationen
AppPriceSchedules (8) · AppAvailabilities (4) · AppPricePoints (3) · Nominations (5) · Territories (1) · TerritoryAvailabilities (1) · EndAppAvailabilityPreOrders (1)
Berichte und Analysen — ~15 Operationen
AnalyticsReportRequests (5) · AnalyticsReportInstances (3) · AnalyticsReports (3) · AnalyticsReportSegments (1) · SalesReports (1) · FinanceReports (1)
Kundenbewertungen — 6 Operationen
CustomerReviews (3) · CustomerReviewResponses (3)
Benutzer und Zugriff — ~15 Operationen
Users (9) · UserInvitations (6) · Actors (2)
App Clips — ~30 Operationen
AppClipDefaultExperiences (11) · AppClipDefaultExperienceLocalizations (6) · AppClips (5) · AppClipHeaderImages (4) · AppClipAdvancedExperienceImages (3) · AppClipAdvancedExperiences (3) · AppClipAppStoreReviewDetails (3)
Hintergrund-Assets — ~15 Operationen
BackgroundAssets (5) · BackgroundAssetVersions (4) · BackgroundAssetUploadFiles (3) · plus App Store-, interne Beta- und externe Beta-Veröffentlichungs-Endpunkte
Alternative Distribution (EU-DMA) — ~15 Operationen
AlternativeDistributionPackageVersions (5) · AlternativeDistributionDomains (4) · AlternativeDistributionKeys (4) · AlternativeDistributionPackages (4) · MarketplaceWebhooks (4) · MarketplaceSearchDetails (3) · AlternativeDistributionPackageDeltas (1) · AlternativeDistributionPackageVariants (1)
Webhooks — 8 Operationen
Webhooks (6) · WebhookDeliveries (1) · WebhookPings (1)
Führe asc_tags jederzeit aus, um die aktuelle, exakte Liste zu erhalten.
Voraussetzungen
Bun 1.1 oder neuer
Ein App Store Connect API-Schlüssel: Issuer ID, Key ID und die
.p8-Datei mit dem privaten SchlüsselEin MCP-Client, der stdio spricht: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code mit einer MCP-Erweiterung, Zed oder dein eigener Agent
Hol dir deinen App Store Connect API-Schlüssel
Melde dich bei App Store Connect an.
Gehe zu Benutzer und Zugriff → Integrationen → App Store Connect API.
Klicke auf +, um einen Schlüssel zu generieren. Wähle die kleinste Rolle, die deinen Anwendungsfall abdeckt (
Developer,App ManageroderAdminfür Benutzerverwaltung).Kopiere die Issuer ID (eine UUID, die oben auf der Seite einmal angezeigt wird).
Kopiere die Key ID (10 Zeichen).
Lade die
.p8-Datei mit dem privaten Schlüssel herunter. Apple erlaubt dir, sie genau einmal herunterzuladen. Speichere sie außerhalb deines Repositorys, zum Beispiel~/.appstoreconnect/AuthKey_XXXXXXXXXX.p8, und führechmod 600darauf aus.
Apples eigene Anleitung: Creating API keys for App Store Connect API.
Installation in Claude Code
git clone https://github.com/imfaisii/asc-mcp.git
cd asc-mcp
bun install
bun run smoke # offline catalog check + server boot — no credentials neededRegistriere den Server global:
claude mcp add app-store-connect \
-s user \
-t stdio \
-e ASC_ISSUER_ID=your-issuer-uuid \
-e ASC_KEY_ID=your-key-id \
-e ASC_PRIVATE_KEY_PATH=$HOME/.appstoreconnect/AuthKey_XXXXXXXXXX.p8 \
-- bun run /ABS/PATH/to/asc-mcp/src/index.tsÜberprüfe und starte neu:
claude mcp get app-store-connect
claude mcp listStarte eine neue Claude Code-Sitzung. Die Tools erscheinen als mcp__app-store-connect__asc_search, …asc_schema, …asc_call und …asc_tags.
Installation in Claude Desktop
Füge dies zu claude_desktop_config.json hinzu:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"app-store-connect": {
"command": "bun",
"args": ["run", "/ABS/PATH/to/asc-mcp/src/index.ts"],
"env": {
"ASC_ISSUER_ID": "your-issuer-uuid",
"ASC_KEY_ID": "your-key-id",
"ASC_PRIVATE_KEY_PATH": "/ABS/PATH/to/AuthKey_XXXXXXXXXX.p8"
}
}
}
}Starte Claude Desktop neu.
Installation in Cursor, Windsurf, VS Code und anderen MCP-Clients
Jeder Client, der einen stdio-MCP-Server startet, funktioniert. Die Form ist immer dieselbe — mcp.example.json in diesem Repository ist eine fertige Vorlage zum Kopieren.
Cursor — ~/.cursor/mcp.json (global) oder .cursor/mcp.json (pro Projekt):
{
"mcpServers": {
"app-store-connect": {
"command": "bun",
"args": ["run", "/ABS/PATH/to/asc-mcp/src/index.ts"],
"env": {
"ASC_ISSUER_ID": "your-issuer-uuid",
"ASC_KEY_ID": "your-key-id",
"ASC_PRIVATE_KEY_PATH": "/ABS/PATH/to/AuthKey_XXXXXXXXXX.p8"
}
}
}
}Windsurf — ~/.codeium/windsurf/mcp_config.json, derselbe mcpServers-Block.
VS Code — .vscode/mcp.json mit einem servers-Block, der dieselben command, args und env verwendet.
Dein eigener Agent — führe bun run src/index.ts aus und sprich MCP über stdio. Es wird so aussehen, als ob es in einem rohen Terminal hängt; das ist ein stdio-Server, der auf einen Client wartet, und das ist korrekt.
Umgebungsvariablen
Variable | Erforderlich | Zweck |
| ja | Issuer ID (UUID) von App Store Connect |
| ja | Key ID (10 Zeichen) |
| ja* | Absoluter Pfad zur |
| ja* | Inline-PEM-Inhalt, statt eines Dateipfads (nützlich in CI) |
| nein | Standardmäßig |
| nein |
|
* Gib genau eine der beiden an: ASC_PRIVATE_KEY_PATH oder ASC_PRIVATE_KEY.
Diese Aliase werden ebenfalls akzeptiert: APP_STORE_CONNECT_ISSUER_ID, APP_STORE_CONNECT_KEY_ID, APP_STORE_CONNECT_PRIVATE_KEY_PATH, APP_STORE_CONNECT_PRIVATE_KEY.
Kopiere .env.example nach .env für lokale Shells. .env* und *.p8 sind bereits in .gitignore.
Wie ein Agent es verwendet
1. asc_tags # optional: orient inside 195 resource tags
2. asc_search { query: "list apps" } # find candidate operations
3. asc_schema { operation: "apps_getCollection" } # read the exact input schema
4. asc_call { operation: "apps_getCollection", args: { limit: 10 } }Für alles, was schreibt, führe es zuerst als Trockenlauf aus:
{ "operation": "appStoreVersions_updateInstance", "_dryRun": true, "args": { "id": "…", "body": { } } }_dryRun gibt die aufgelöste Methode, den Pfad, die Pfadparameter, die Abfrage und den Body zurück, ohne Apple zu berühren, damit der Agent seine eigene Anfrage überprüfen kann, bevor er sie abschickt.
Beispiel-Prompts
Sobald der Server verbunden ist, funktionieren all diese in natürlicher Sprache:
„Liste meine Apps mit ihren Bundle-IDs und SKUs auf."
„Zeige die letzten 5 TestFlight-Builds für MyApp und an wen sie verteilt wurden."
„Erstelle eine TestFlight-Beta-Gruppe namens Internal QA für MyApp und füge diese drei Tester hinzu."
„Was ist die aktuelle App Store-Version von MyApp in jeder Lokalisierung, und welchen fehlt eine Beschreibung?"
„Ziehe den Verkaufsbericht dieses Monats und fasse die Einheiten nach Gebiet zusammen."
„Liste alle automatisch verlängerbaren Abonnements in meiner Abonnementgruppe mit ihren Preispunkten auf."
„Welche Provisioning-Profile laufen in den nächsten 30 Tagen ab?"
„Zeige meine neueste App Review-Einreichung und ihren Ablehnungsgrund."
„Hole die neuesten Kundenbewertungen mit 1 oder 2 Sternen und entwirf Antworten."
„Starte den Xcode Cloud-Workflow namens Release und melde den Status des Build-Runs."
„Welchen meiner In-App-Käufe fehlt ein Review-Screenshot?"
„Füge diese Geräte-UDID zu meinem Konto hinzu und generiere das Entwicklungsprofil neu."
Skripte
Befehl | Zweck |
| Abhängigkeiten installieren |
|
|
| Den stdio-MCP-Server starten |
| Generieren, Katalog-Inventar validieren, Server starten. Führt einen Live- |
|
|
| Live-Anmeldedatenprüfung gegen |
Apples OpenAPI-Spezifikation aktualisieren
Apple liefert eine Zip-Datei. Die JSON-Datei einbinden, neu generieren, überprüfen:
curl -fsSL -o /tmp/asc-openapi.zip \
"https://developer.apple.com/sample-code/app-store-connect/app-store-connect-openapi-specification.zip"
unzip -p /tmp/asc-openapi.zip '*.json' > openapi/app-store-connect.openapi.json
bun run generate
bun run smokegenerated/ ist Build-Ausgabe. Bearbeite sie niemals von Hand — generiere stattdessen neu.
Abdeckungshinweis: „Volle Oberfläche" bedeutet jede Operation in Apples veröffentlichter OpenAPI-Zip-Datei für die eingebundene Version. Wenn ein Endpunkt in Apples menschlicher Dokumentation beschrieben ist, aber in der Zip-Datei fehlt, erscheint er hier, nachdem Apple die Zip-Datei aktualisiert hat und du neu generierst.
Projektstruktur
asc-mcp/
├── openapi/
│ └── app-store-connect.openapi.json # Apple's spec, vendored (source of truth)
├── generated/
│ ├── tools.json # 1263-operation catalog (build output)
│ └── manifest.json # counts, tags, spec version
├── src/
│ ├── index.ts # MCP stdio server, 4 meta-tools
│ ├── catalog.ts # search / resolve over the catalog
│ ├── client.ts # fetch wrapper, response shaping
│ ├── auth.ts # ES256 JWT, in-memory cache
│ └── types.ts
├── scripts/
│ ├── generate-tools.ts # OpenAPI → catalog
│ ├── smoke.ts # offline inventory + boot check
│ └── live-check.ts # live GET /v1/apps
├── assets/ # README graphics
├── mcp.example.json
├── .env.example
└── package.jsonSicherheitsmodell
In diesem Repository werden keine Geheimnisse gespeichert. Anmeldedaten stammen ausschließlich aus Umgebungsvariablen.
.gitignoreblockiert*.p8,AuthKey_*.p8und.env*.JWTs sind ES256, werden lokal mit Ihrer
.p8signiert, auf die Zielgruppeappstoreconnect-v1beschränkt, 20 Minuten gültig (Apples Maximum), nur im Speicher zwischengespeichert und 60 Sekunden vor Ablauf aktualisiert.Tool-Ergebnisse geben Anmeldedaten niemals an das Modell zurück.
Das einzige Netzwerkziel ist
ASC_BASE_URL, das standardmäßig auf Apples API-Host verweist.Wenn Sie jemals versehentlich eine
.p8committen, widerrufen Sie diesen Schlüssel sofort in App Store Connect und generieren Sie einen neuen.
Siehe SECURITY.md zum Melden einer Sicherheitslücke.
Fehlerbehebung
Missing credentials / ASC_ISSUER_ID not set
Der MCP-Client hat die Umgebung nicht durchgereicht. Legen Sie die Variablen im env-Block des Clients ab, nicht in Ihrem Shell-Profil – GUI-Apps wie Claude Desktop und Cursor erben Ihre Shell-Umgebung nicht.
HTTP 401 NOT_AUTHORIZED
Issuer ID, Key ID und .p8 müssen alle zum selben Schlüssel gehören. Stellen Sie sicher, dass die Key ID mit dem Dateinamen übereinstimmt (AuthKey_<KeyID>.p8) und dass der Schlüssel nicht widerrufen wurde.
HTTP 403 FORBIDDEN_ERROR
Die Rolle des Schlüssels ist für diese Operation zu eingeschränkt. Benutzerverwaltung und Finanzberichte benötigen höhere Rollen als Developer.
HTTP 409 mit einer JSON:API-detail-Zeichenkette
Apple lehnt die Dokumentstruktur ab. Führen Sie denselben Aufruf mit _dryRun: true aus, vergleichen Sie mit der asc_schema-Ausgabe und korrigieren Sie dann den body.
Der Server „hängt“, wenn ich bun run start ausführe
Das ist korrekt. Ein stdio-MCP-Server blockiert und wartet auf einen Client auf stdin. Verwenden Sie bun run smoke, wenn Sie eine Prüfung möchten, die beendet wird.
Tools werden in meinem Client nicht angezeigt
Starten Sie den Client nach dem Bearbeiten seiner MCP-Konfiguration neu und verwenden Sie einen absoluten Pfad zu src/index.ts. Stellen Sie sicher, dass bun im PATH des Clients liegt (which bun), oder verwenden Sie den absoluten Pfad zur bun-Binärdatei als command.
Antworten werden abgeschnitten
Nutzlasten über ~120.000 Zeichen werden gekürzt. Verwenden Sie fields[…], filter[…] und limit, anstatt ganze Sammlungen abzurufen.
Häufig gestellte Fragen
Ist das ein offizielles Apple-Produkt? Nein. Es ist ein unabhängiges Open-Source-Projekt. „App Store Connect“, „TestFlight“, „Xcode“ und „Game Center“ sind Marken von Apple Inc.
Wie viele Tools stellt dieser MCP-Server bereit?
Standardmäßig vier – asc_search, asc_schema, asc_call und asc_tags – basierend auf einem internen Katalog von 1.263 App Store Connect API-Operationen. Das Setzen von ASC_EXPOSE_ALL_TOOLS=1 registriert alle 1.263 einzeln, was nur zum Debuggen nützlich ist.
Unterstützt es TestFlight? Ja. Ungefähr 90 Operationen decken Beta-Gruppen, Beta-Tester, Einladungen, Beta-Build-Lokalisierungen, Beta-App-Review-Einreichungen, Absturz-Feedback und Rekrutierungskriterien ab.
Kann ein Agent meine App zur Überprüfung einreichen?
Ja. ReviewSubmissions, ReviewSubmissionItems, AppStoreVersionSubmissions und die Ressourcen für Überprüfungsdetails sind alle im Katalog. Verwenden Sie zuerst _dryRun und behalten Sie einen Menschen im Prozess für alles, was den App Store erreicht.
Funktioniert es mit Cursor, Windsurf und VS Code? Ja. Es ist ein einfacher stdio-MCP-Server, sodass jeder Model Context Protocol-Client ihn starten kann.
Speichert oder überträgt es meinen App Store Connect API-Schlüssel? Nein. Der Schlüssel wird zur Aufrufzeit aus der Umgebung gelesen, zum lokalen Signieren eines kurzlebigen JWT verwendet, und das JWT geht nur an Apples API-Host.
Wie unterscheidet sich das von anderen App Store Connect MCP-Servern? Die meisten sind handgeschriebene Wrapper um eine kleine Teilmenge von Endpunkten. Dieser generiert seinen Katalog aus Apples offizieller OpenAPI-Spezifikation, sodass die Abdeckung die gesamte veröffentlichte Oberfläche umfasst, und das Aktualisieren ist ein Befehl statt einer Neufassung.
Warum nicht einfach dem Modell 1.263 Tools geben? Vollständige JSON-Schemas für 1.263 Operationen kosten Hunderttausende von Kontext-Token, und viele Clients kürzen oder lehnen so lange Listen ab. Suche-dann-Schema-dann-Aufruf kostet ein paar tausend Token pro Aufgabe.
Kann ich es in CI verwenden?
Ja. Setzen Sie ASC_PRIVATE_KEY mit dem Inline-PEM anstelle eines Dateipfads, sodass keine .p8 die Festplatte des Runners berühren muss.
Behandelt es App Store Connect API-Ratenlimits? Es wiederholt nicht in Ihrem Namen. Apples Ratenlimit-Antworten und -Header werden direkt durchgereicht, sodass der Agent (oder Ihr Code) entscheiden kann, wie er sich zurückzieht.
Welche App Store Connect API-Version ist enthalten?
4.4.1, OpenAPI 3.0.1. Führen Sie bun run generate aus, nachdem Sie eine neuere Spezifikation eingefügt haben, um zu aktualisieren.
Mitwirken
Issues und Pull Requests sind willkommen. Siehe CONTRIBUTING.md. Zwei Regeln sind am wichtigsten: generated/ wird neu generiert und nicht von Hand bearbeitet, und in einem Pull Request erscheinen niemals Anmeldedaten.
Lizenz
MIT © imfaisii
Nicht mit Apple Inc. verbunden oder von ihr unterstützt.
Schlüsselwörter: App Store Connect MCP · App Store Connect API MCP server · MCP server for App Store Connect · Model Context Protocol Apple · TestFlight MCP · Xcode Cloud MCP · in-app purchase MCP · App Store automation · Claude Code App Store Connect · Cursor MCP App Store Connect · iOS release automation with AI agents
This server cannot be installed
Maintenance
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
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Apple App Store Connect operations including app management, TestFlight, analytics, reviews, subscriptions, and more through 54 tools.612511MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Apple App Store Connect through the official API, including apps, metadata, reviews, TestFlight, provisioning, users, and reports.MIT
- AlicenseNot gradedqualityAmaintenanceA Model Context Protocol server that exposes the entire Apple App Store Connect API (1,200+ operations) as MCP tools, enabling AI assistants to query apps, manage builds, handle submissions, read analytics, and more.21MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to manage Apple App Store Connect resources like apps, builds, TestFlight, and reviews through natural language.2018MIT
Related MCP Connectors
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/imfaisii/asc-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server