App Store Connect MCP Server
App Store Connect MCP-Server — Code-Modus
923 Endpunkte. 2 Tools. Die Spezifikation IST die Implementierung.
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 |
| JS schreiben, um Apples OpenAPI-Spezifikation abzufragen. Endpunkte entdecken, Parameter prüfen, Schemas lesen. |
| 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 maintenanceSchnellstart
1. App Store Connect-Anmeldedaten abrufen
Gehen Sie zu App Store Connect → Benutzer und Zugriff → Integrationen → Schlüssel
Klicken Sie auf „+“, um einen neuen Schlüssel zu generieren (Rolle „Admin“ oder „Finanzen“)
Laden Sie die
.p8-Datei herunter (kann nur einmal heruntergeladen werden!)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 |
| 10-stellige Key ID |
| UUID Issuer ID |
| Absoluter Pfad zu Ihrer |
| 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 buildVerweisen 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-SandboxKein
fetch,require,process,eval,setTimeoutverfügbarAnmeldedaten werden per Binding injiziert — niemals für den generierten Code sichtbar
Antwort wird gekürzt, um Kontext-Überlastung zu verhindern
Nur
spec(Suche) oderapi(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 pointWarum 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 checkLizenz
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.
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 Connectors
ASO analytics and App Store optimization tools for indie iOS developers and AI agents.
- app-managerOAuthapp.lance
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
Analyze and manage Apple Ads from your AI assistant with RevenueCat insights and safety controls.
Live App Store & Google Play data for AI agents: app discovery, ASO keywords, reviews.
Related MCP Servers
- AlicenseBqualityCmaintenanceEnables interaction with Apple's App Store Connect API through natural language to manage apps, beta testing, localizations, analytics, sales reports, and CI/CD workflows for iOS and macOS development.31123MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Apple App Store Connect operations including app management, TestFlight, analytics, reviews, subscriptions, and more through 54 tools.614911MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Apple App Store Connect through the official API, including apps, metadata, reviews, TestFlight, provisioning, users, and reports.MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to manage Apple App Store Connect resources like apps, builds, TestFlight, and reviews through natural language.2021MIT
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/TrialAndErrorAI/appstore-connect-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server