Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

App Store Connect MCP

von abd3lraouf-studiosVersion 1.3.0i★ –iLäuft auf deinem Computer
Name in der Registryio.github.abd3lraouf-studios/app-store-connect-mcp

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

App Store Connect + StoreKit 2: 1,293 Apple operations behind 11 tools, writes confirmed.

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft auf deinem Computer
  • Transport: stdio
  • Kategorie: Sonstiges
  • Das musst du eintragen: ASC_KEY

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 1 von 1 bestanden
  • Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
  • Das trägst du selbst ein: ASC_KEY, ASC_ISSUER_ID, ASC_KEY_ID, ASC_BUNDLE_ID, ASC_APP_APPLE_ID

Als geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.

Du brauchst

  • npmNode.js installiert (für den Befehl npx)

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "app-store-connect": {
      "command": "npx",
      "args": [
        "-y",
        "@abd3lraouf/app-store-connect-mcp"
      ],
      "env": {
        "ASC_KEY": "your-value",
        "ASC_ISSUER_ID": "your-value",
        "ASC_KEY_ID": "your-value",
        "ASC_BUNDLE_ID": "your-value",
        "ASC_APP_APPLE_ID": "your-value"
      }
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add app-store-connect --env ASC_KEY=your-value --env ASC_ISSUER_ID=your-value --env ASC_KEY_ID=your-value --env ASC_BUNDLE_ID=your-value --env ASC_APP_APPLE_ID=your-value -- npx -y @abd3lraouf/app-store-connect-mcp

Trag die leeren Werte ein, bevor du ihn startest.

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "app-store-connect": {
      "command": "npx",
      "args": [
        "-y",
        "@abd3lraouf/app-store-connect-mcp"
      ],
      "env": {
        "ASC_KEY": "your-value",
        "ASC_ISSUER_ID": "your-value",
        "ASC_KEY_ID": "your-value",
        "ASC_BUNDLE_ID": "your-value",
        "ASC_APP_APPLE_ID": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "app-store-connect": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@abd3lraouf/app-store-connect-mcp"
      ],
      "env": {
        "ASC_KEY": "your-value",
        "ASC_ISSUER_ID": "your-value",
        "ASC_KEY_ID": "your-value",
        "ASC_BUNDLE_ID": "your-value",
        "ASC_APP_APPLE_ID": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Werte, die du selbst einträgst

  • ASC_KEY geheim erforderlich env
    keychain: (recommended), or a path to your AuthKey .p8
  • ASC_ISSUER_ID env
    Issuer ID. Not needed if stored in the keychain envelope.
  • ASC_KEY_ID env
    API key ID. Not needed if stored in the keychain envelope.
  • ASC_BUNDLE_ID env
    Required for App Store Server API calls and to verify Apple's signatures.
  • ASC_APP_APPLE_ID env
    Numeric Apple ID. Apple requires it to verify Production signatures.

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 8. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto abd3lraouf-studios bestätigt, dem das Repo gehört

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 0 % der anderen 18606 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 30 % der anderen 18606 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 18606 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist App Store Connect MCP sicher?

Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Das musst du eintragen: ASC_KEY

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.3.0) kam vor 2 Monaten in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, VMware Storage

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

von formulahendryAm Anfang↓ 66/Wo.★ 440Aktualisiert vor 14 Monaten

Läuft auf deinem Computer

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

von desktop-commanderWachsend★ 211Aktualisiert vor 3 Tagen

Läuft in der Cloud✓ desktopcommander.app

VMware Storage

VMware vSphere storage with 16 MCP tools: datastores, iSCSI, vSAN, FC multipath.

von vmware-skillsGanz neu↓ 322/Wo.Aktualisiert heute

Läuft auf deinem Computer

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

App Store Connect MCP Server

Give Claude your App Store Connect account without giving it the keys to your pricing. An MCP server covering the App Store Connect API *and* the App Store Server API (StoreKit 2) — 1,293 operations behind 13 tools, for Claude Code, Claude Desktop, Cursor and anything else that speaks Model Context Protocol.

1,293 operations · 13 tools · key never on disk · Apple signatures verified
flowchart LR

A["Claude Cursor · any MCP client"] -->|"search · call · write"| B["app-store-connect-mcp 13 tools"] B --> C{"risk tier"} C -->|"READ · 811 ops"| D["Apple App Store Connect API"] C -->|"WRITE · 482 ops"| E["ask a human first"] E -->|approved| D E -->|declined| F["nothing is sent"] B --> G["App Store Server API StoreKit 2 · signatures verified"]

style E fill:#ffe8b3,stroke:#c98a00,color:#000 style F fill:#ffd6d6,stroke:#c00,color:#000 style D fill:#d6f5d6,stroke:#2a2,color:#000 style G fill:#d6f5d6,stroke:#2a2,color:#000


Don't install this

Genuinely. There are cheaper ways to spend your afternoon, and several kinds of person should close the tab now:

You want an agent that just does things. This one stops and asks before it changes a price, deletes anything, or touches who can access your account — and it asks *you*, not itself. If that sounds like friction, it is. That is the product.

You want every endpoint as its own tool. Some servers register 890. Yours would spend six figures of context on tool definitions before answering a single question. This registers 11 and finds the rest by searching.

tool definitions loaded into context, before you ask anything

one tool per endpoint ███████████████████████████████████ >100k tokens this server ▌ ~1k tokens

You're on Windows or Linux and wanted Keychain. Keychain storage is macOS only. You can use a file path elsewhere, but the best part of this is macOS-shaped.

You want it to write your App Store copy. It will fetch your reviews and your localisations. It will not invent marketing prose and push it live, and there is no flag to make it.

You're evaluating this for a product you sell. Read the licence first. Internal use is free; reselling it isn't.

Still here? Then the rest is probably for you.


What it refuses to do

Most of the engineering here went into restraint, so it is the honest place to start.

It won't run generated code. The elegant way to cover a huge API is to let the model write JavaScript and eval it in a sandbox. Node's vm is not a sandbox — its own documentation says so — and any host object handed in leaks the whole realm back through its prototype chain:

spec.constructor.constructor('return process.env.HOME')()   // → /Users/you

That is a reproduction of a real shipping MCP server's sandbox, and it returns your home directory. Its 15-second timeout doesn't help either: it bounds only *synchronous* code, so an async loop runs forever. This server dispatches parameters, not code. Same coverage, same token cost, nothing to escape.

It won't let a write pretend to be a read. Reads and writes are separate tools. asc_write carries _meta["anthropic/requiresUserInteraction"], which Claude Code honours even under `bypassPermissions`. The model cannot talk its way past it; only the operator can, by starting the server with --no-confirm — which drops the flag, the prompt and the token together, for runs where nobody is present to answer.

It won't decide your pricing intent for you. preserve_current_price is a required parameter with no default. Apple defaults it to false — meaning your existing subscribers get moved to the new price. Making it required forces that decision into the open, where a person can see it.

It won't create ongoing commitments to answer a question. Fetching analytics needs a report request, and accessType: ONGOING is a standing obligation on your account, not a query. The tool reads reports; it will not create one silently.

It won't pretend it sanitised your reviews. Customer review text is written by strangers and lands in your model's context verbatim. Results carrying it *lead* with a note saying it is data to report on, not instructions to follow. It is deliberately not filtered for injection phrases — that is a game attackers iterate against, and passing such a filter would imply a safety it cannot deliver.

It won't tell you a signature is fine when it hasn't checked. See below.


Install

Claude Code, one line:

claude mcp add --scope user app-store-connect \

--env ASC_KEY=keychain:my-asc-key \ --env ASC_BUNDLE_ID=com.example.app \ --env ASC_APP_APPLE_ID=1234567890 \ -- npx -y @abd3lraouf/app-store-connect-mcp

Nothing to clone or build. Or from source, if you'd rather read it first:

git clone https://github.com/abd3lraouf-studios/app-store-connect-mcp

cd app-store-connect-mcp && npm install && npm run build

Or, for Claude Desktop, Cursor and friends:

{

"mcpServers": { "app-store-connect": { "command": "npx", "args": ["-y", "@abd3lraouf/app-store-connect-mcp"], "env": { "ASC_KEY": "keychain:my-asc-key", "ASC_BUNDLE_ID": "com.example.app", "ASC_APP_APPLE_ID": "1234567890" } } } }

Then ask it *"check the App Store Connect connection"* — that runs asc_status, which verifies your credentials with one lightweight request and tells you exactly what is missing if anything is.

Your key belongs in the Keychain

Apple lets you download a .p8 exactly once. A plaintext copy on disk is a copy that can leak.

ASC_KEY=keychain:my-asc-key          # recommended

ASC_KEY=/path/to/AuthKey.p8 # works, but plaintext ASC_PRIVATE_KEY='-----BEGIN…' # discouraged: ps -E exposes it

Store it as base64 JSON so the identifiers travel *with* the key material — ASC_KEY_ID then cannot drift out of sync with the key it names, a mismatch that surfaces only as an opaque 401:

security add-generic-password -s my-asc-key -a api -w "$(

jq -nc --arg i "$ISSUER" --arg k "$KEYID" --arg p "$(cat AuthKey.p8)" \ '{issuerID:$i,keyID:$k,privateKeyPEM:$p}' | base64 )"


The thirteen tools

Five core, covering everything:

Tool
asc_statusCredentials, reachability, remaining rate-limit budget. Run this first when anything fails — it separates a bad key from a bad request.
asc_search_endpointsSearch 1,293 operations across both APIs by keyword, method, tag or risk tier.
asc_describe_endpointParameters, request-body schema with real field names, risk tier.
asc_callReads. Path and query parameters, pagination, both APIs.
asc_writeEverything that changes data. Confirmation, dry_run.

Eight composite, for chains the raw API cannot express in a single call. A tool that merely saved one request was left out — it would need keeping in step with Apple forever and buys nothing asc_call doesn't already do:

ToolWhat it collapses
asc_pricing_get~175 lookups → a handful, for subscriptions and one-time purchases. The currency lives on the territory, not the price row, so reading prices by hand gives ambiguous numbers.
asc_pricing_setThe same chain plus the write, with the subscriber decision forced into the open.
asc_preflight_versionSix resources → GO / NO-GO, each gap naming the operation that fixes it.
asc_listing_screenshotsA request per locale → four, via included.
asc_upload_screenshotApple's reserve → PUT-at-offsets → commit-with-MD5 sequence, across two hosts.
asc_upload_iap_screenshotThe same sequence for an in-app purchase's review screenshot — the field that keeps an IAP in MISSING_METADATA.
asc_availability_setOne PATCH per territory (up to 175; Apple has no bulk endpoint), then re-reads every one and reports what did not take.
asc_analytics_reportFive hops → signed URL → gunzip → rows, with every segment stitched.

Why asc_upload_screenshot cannot be one API call

Apple's asset flow spans two hosts and ends in a checksum that fails *silently* if you get it wrong — the upload simply sits in AWAITING_UPLOAD looking like nothing happened. uploadOperations appears in Apple's OpenAPI document only as a value in a fields[] enum, so an agent reading the spec can see the field exists and still have no idea it must act on it.

sequenceDiagram

participant M as Claude participant S as this server participant A as App Store Connect participant U as Apple asset host

M->>S: asc_upload_screenshot(set, file) S->>A: POST /v1/appScreenshots (fileName, fileSize) A-->>S: id + uploadOperations[] loop each byte range S->>U: PUT bytes at offset, Apple's headers Note over S,U: pre-signed URL — no bearer token sent end S->>A: PATCH uploaded=true + MD5 checksum A-->>S: assetDeliveryState S-->>M: state, and how to clean up if it failed

Plus four resources (@asc:cookbook, @asc:enums, @asc:risk, @asc:sources) and four workflows as slash commands: /mcp__asc__release-readiness, pricing-audit, review-triage, testflight-status.


Write safety

An HTTP method is a poor proxy for consequence. PATCH /v1/subscriptionPrices and PATCH /v1/appInfos/{id} are both writes; only one changes what customers are charged, and neither is undone by repeating it. So every operation carries a tier (counts are App Store Connect; StoreKit 2 adds 14 reads and 16 writes):

TierCount
READ797No change.
WRITE238Changes data.
REVENUE61Pricing, subscriptions, entitlements.
DESTRUCTIVE132Deletes.
RELEASE12Builds, submissions, what ships.
ACCESS12Who can reach the account.
INFRASTRUCTURE11Certificates, identifiers, callback URLs.
flowchart TD

A["asc_write called"] --> B{"--read-only?"} B -->|yes| Z["blocked"] B -->|no| N{"--no-confirm?"} N -->|yes| S["send it"] N -->|no| C{"risk tier"} C -->|"WRITE"| S["send it"] C -->|"REVENUE · DESTRUCTIVE INFRASTRUCTURE · ACCESS · RELEASE"| D{"client supports elicitation?"} D -->|yes| E["ask the person method · path · body · tier"] D -->|no| F["issue a token<

Nur der Anfang wird gezeigt; den Rest findest du im Repo

PopNx fragen