Skip to main content
Glama
TrialAndErrorAI

App Store Connect MCP Server

App Store Connect MCP-Server — Code-Modus

923 Endpunkte. 2 Tools. Die Spezifikation IST die Implementierung.

TypeScript MCP SDK License: MIT API Version

Das Problem

Herkömmliche MCP-Server kapseln jeden API-Endpunkt als separates Tool. Die App Store Connect API von Apple hat 923 Endpunkte. Das bedeutet 923 Tool-Definitionen, über 100.000 Kontext-Token und eine neue Version jedes Mal, wenn Apple einen Endpunkt hinzufügt.

Related MCP server: mcp-appstore-connect

Die Lösung

Code-Modus: 2 Tools ersetzen 923.

Tool

Was es tut

search(code)

JS schreiben, um Apples OpenAPI-Spezifikation abzufragen. Endpunkte entdecken, Parameter prüfen, Schemas lesen.

execute(code)

JS schreiben, um die API aufzurufen. Authentifizierung erfolgt automatisch. Mehrere Aufrufe verketten.

Die LLM schreibt die Abfrage. Die Spezifikation IST die Implementierung. Endpunkte hinzufügen = Apple aktualisiert seine Spezifikation. Keine Code-Änderungen auf unserer Seite.

Traditional MCP:  923 endpoints → 923 tools → ~100K tokens → constant maintenance
Code Mode:        923 endpoints → 2 tools   → ~1K tokens   → zero maintenance

Schnellstart

1. App Store Connect-Anmeldedaten abrufen

  1. Gehen Sie zu App Store Connect → Benutzer und Zugriff → Integrationen → Schlüssel

  2. Klicken Sie auf „+“, um einen neuen Schlüssel zu generieren (Rolle „Admin“ oder „Finanzen“)

  3. Laden Sie die .p8-Datei herunter (kann nur einmal heruntergeladen werden!)

  4. Notieren Sie Ihre Key ID und Issuer ID

2. Installation via Claude Code

claude mcp add appstore-connect -s user \
  -e APP_STORE_KEY_ID=YOUR_KEY_ID \
  -e APP_STORE_ISSUER_ID=YOUR_ISSUER_ID \
  -e APP_STORE_P8_PATH=/absolute/path/to/AuthKey_XXXXXXXXXX.p8 \
  -e APP_STORE_VENDOR_NUMBER=YOUR_VENDOR_NUMBER \
  -- npx -y @trialanderror-ai/appstore-connect-mcp

-s user macht den Server für alle Ihre Projekte verfügbar. Lassen Sie -e APP_STORE_VENDOR_NUMBER weg, wenn Sie keine Finanzberichte benötigen.

Oder überspringen Sie die Inline-Form der Umgebungsvariablen und setzen Sie diese in Ihrer Shell / MCP-Konfiguration (siehe unten).

3. Anmeldedaten konfigurieren

Drei erforderliche Umgebungsvariablen (eine optional):

Variable

Beschreibung

APP_STORE_KEY_ID

10-stellige Key ID

APP_STORE_ISSUER_ID

UUID Issuer ID

APP_STORE_P8_PATH

Absoluter Pfad zu Ihrer .p8-Datei

APP_STORE_VENDOR_NUMBER (optional)

Erforderlich für Finanzberichte

Konfiguration für Claude Code

Setzen Sie entweder Umgebungsvariablen in Ihrer Shell oder übergeben Sie sie über .mcp.json:

{
  "mcpServers": {
    "appstore-connect": {
      "command": "npx",
      "args": ["-y", "@trialanderror-ai/appstore-connect-mcp"],
      "env": {
        "APP_STORE_KEY_ID": "YOUR_KEY_ID",
        "APP_STORE_ISSUER_ID": "YOUR_ISSUER_ID",
        "APP_STORE_P8_PATH": "/path/to/AuthKey_XXXXXXXXXX.p8",
        "APP_STORE_VENDOR_NUMBER": "YOUR_VENDOR_NUMBER"
      }
    }
  }
}

Konfiguration für Claude Desktop

Hinzufügen zu ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "appstore-connect": {
      "command": "npx",
      "args": ["-y", "@trialanderror-ai/appstore-connect-mcp"],
      "env": {
        "APP_STORE_KEY_ID": "YOUR_KEY_ID",
        "APP_STORE_ISSUER_ID": "YOUR_ISSUER_ID",
        "APP_STORE_P8_PATH": "/path/to/AuthKey_XXXXXXXXXX.p8"
      }
    }
  }
}

Aus Quellcode bauen (Alternative)

git clone https://github.com/TrialAndErrorAI/appstore-connect-mcp
cd appstore-connect-mcp
npm install
npm run build

Verweisen Sie dann in Ihrer MCP-Konfiguration auf node /path/to/appstore-connect-mcp/dist/index.js anstelle von npx.

Anwendungsbeispiele

Endpunkte entdecken

search: "Find all endpoints related to customer reviews"

Die LLM schreibt:

const reviews = Object.entries(spec.paths)
  .filter(([p]) => p.includes('customerReview'))
  .map(([path, methods]) => ({
    path,
    methods: Object.keys(methods).map(m => m.toUpperCase())
  }));
return reviews;

Ihre Apps auflisten

execute: "List all my apps"

Die LLM schreibt:

const apps = await api.request({ method: 'GET', path: '/v1/apps' });
return apps.data.map(a => ({ id: a.id, name: a.attributes.name }));

Mehrere Aufrufe verketten

execute: "Get latest reviews for my first app"

Die LLM schreibt:

const apps = await api.request({ method: 'GET', path: '/v1/apps', params: { limit: '1' } });
const appId = apps.data[0].id;
const reviews = await api.request({
  method: 'GET',
  path: `/v1/apps/${appId}/customerReviews`,
  params: { limit: '5', sort: '-createdDate' }
});
return {
  app: apps.data[0].attributes.name,
  reviews: reviews.data.map(r => ({
    rating: r.attributes.rating,
    title: r.attributes.title,
    body: r.attributes.body
  }))
};

Worauf Sie zugreifen können

Alle 923 App Store Connect API-Endpunkte, einschließlich:

Kategorie

Endpunkte

Was Sie erhalten

App-Metadaten

29

Titel, Untertitel, Keywords, Beschreibung — lesen UND schreiben

Analysen

10

Impressionen, Seitenaufrufe, Downloads, Quellen-Attribution

Verkäufe & Finanzen

2

Umsatz, Einheiten, Erlöse nach Land

Kundenrezensionen

5

Bewertungen, Rezensionstext, auf Rezensionen antworten

Abonnements

30

Abo-Verwaltung, Preise, Gruppen, Angebote

In-App-Käufe

29

IAP-Verwaltung, Angebotscodes

Versionen

28

Versionsverwaltung, phasenweise Einführung

Screenshots

12

Hochladen, neu anordnen, Screenshot-Sets verwalten

A/B-Tests

24

Produktseiten-Experimente, Behandlungsvarianten

Benutzerdefinierte Produktseiten

18

Benutzerdefinierte Landingpages pro Werbekampagne

TestFlight

23

Beta-Gruppen, Tester, Builds

Preise

11

Gebietsbezogene Preise, Preispunkte

Builds

29

Build-Verwaltung, Verarbeitungsstatus

Siehe API-COVERAGE.md für die vollständige gruppierte Übersicht.

Funktionsweise

Claude writes JavaScript
    │
    ▼
┌─────────────────────────────────────────────────┐
│ search({ code })                                │
│  Sandbox executes code against OpenAPI spec     │
│  923 paths, 1337 schemas — pre-resolved $refs   │
│  Returns: matching endpoints + parameters       │
└─────────────────────────────────────────────────┘
    │
    ▼
┌─────────────────────────────────────────────────┐
│ execute({ code })                               │
│  Sandbox executes code against auth'd client    │
│  JWT injected — code never sees credentials     │
│  Supports GET/POST/PATCH/DELETE + chaining      │
│  Auto-decompresses gzipped report responses     │
│  Returns: API response (truncated to 40K chars) │
└─────────────────────────────────────────────────┘

Sicherheit

  • Code läuft in einer Node.js vm-Sandbox

  • Kein fetch, require, process, eval, setTimeout verfügbar

  • Anmeldedaten werden per Binding injiziert — niemals für den generierten Code sichtbar

  • Antwort wird gekürzt, um Kontext-Überlastung zu verhindern

  • Nur spec (Suche) oder api (Ausführung) als Globals verfügbar

Architektur

src/
├── auth/jwt-manager.ts      — JWT with P8 key, ES256, 19-min cache
├── api/client.ts             — HTTP client, rate limiting, gzip handling
├── spec/
│   ├── openapi.json          — Apple's official spec (923 endpoints)
│   └── loader.ts             — Loads + resolves $refs for flat traversal
├── executor/sandbox.ts       — vm-based sandboxed execution
├── server/mcp-server.ts      — MCP server (search, execute, test_connection)
└── index.ts                  — Entry point

Warum Code-Modus?

Herkömmliches MCP

Code-Modus

Tools

1 pro Endpunkt (923)

2 insgesamt

Kontext-Token

~100K+

~1K

Endpunkte hinzufügen

Neues Tool + Code + Schema + Release

Apple aktualisiert Spezifikation. Keine Änderungen.

Aufrufe verketten

LLM-Neueingabe zwischen jedem

Einzelausführung, mehrere Aufrufe

Wartung

923 Tool-Definitionen aktualisieren

1 Spezifikationsdatei aktualisieren

Inspiriert durch Cloudflares Code-Modus-Muster.

Entwicklung

npm install          # Install dependencies
npm run build        # Compile + copy spec
npm run dev          # Watch mode (tsx)
npm start            # Run compiled server
npm run type-check   # TypeScript check

Lizenz

MIT — Nutzen Sie es, ändern Sie es, verkaufen Sie es. Sorgen Sie nur dafür, dass es funktioniert.

Credits

Erstellt von Trial and Error Inc. Wird produktiv eingesetzt von RenovateAI, einer KI-gestützten Wohndesign-App für iOS, Android und Web. Code-Modus-Muster von Cloudflare.


„Wir implementieren keine einzelnen Endpunkte. Wir implementieren die Fähigkeit, JEDEN Endpunkt aufzurufen.“

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

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/TrialAndErrorAI/appstore-connect-mcp'

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