App Store Connect MCP Server
Servidor MCP de App Store Connect — Modo Código
923 endpoints. 2 herramientas. La especificación ES la implementación.
El problema
Los servidores MCP tradicionales envuelven cada endpoint de la API como una herramienta independiente. La API de App Store Connect de Apple tiene 923 endpoints. Eso significa 923 definiciones de herramientas, más de 100 000 tokens de contexto y una nueva versión cada vez que Apple añade un endpoint.
Related MCP server: mcp-appstore-connect
La solución
Modo Código: 2 herramientas reemplazan a 923.
Herramienta | Qué hace |
| Escribe JS para consultar la especificación OpenAPI de Apple. Descubre endpoints, verifica parámetros, lee esquemas. |
| Escribe JS para llamar a la API. La autenticación es automática. Encadena múltiples llamadas. |
El LLM escribe la consulta. La especificación ES la implementación. Añadir endpoints = Apple actualiza su especificación. Cero cambios de código por nuestra parte.
Traditional MCP: 923 endpoints → 923 tools → ~100K tokens → constant maintenance
Code Mode: 923 endpoints → 2 tools → ~1K tokens → zero maintenanceInicio rápido
1. Obtén las credenciales de App Store Connect
Ve a App Store Connect → Usuarios y acceso → Integraciones → Claves
Haz clic en "+" para generar una nueva clave (rol de Administrador o Finanzas)
Descarga el archivo
.p8(¡solo se puede descargar una vez!)Anota tu ID de clave (Key ID) y tu ID de emisor (Issuer ID)
2. Instala a través de 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 hace que el servidor esté disponible en todos tus proyectos. Omite -e APP_STORE_VENDOR_NUMBER si no necesitas informes financieros.
O bien, omite la forma en línea de variables de entorno y configúralas en tu shell / configuración de MCP (ver más abajo).
3. Configura las credenciales
Tres variables de entorno obligatorias (una opcional):
Variable | Descripción |
| ID de clave de 10 caracteres |
| ID de emisor UUID |
| Ruta absoluta a tu archivo |
| Requerido para informes financieros |
Configurar para Claude Code
Configura las variables de entorno en tu shell o pásalas a través de .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"
}
}
}
}Configurar para Claude Desktop
Añádelo a ~/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"
}
}
}
}Construir desde el código fuente (alternativa)
git clone https://github.com/TrialAndErrorAI/appstore-connect-mcp
cd appstore-connect-mcp
npm install
npm run buildLuego apunta tu configuración de MCP a node /ruta/a/appstore-connect-mcp/dist/index.js en lugar de npx.
Ejemplos de uso
Descubrir endpoints
search: "Find all endpoints related to customer reviews"El LLM escribe:
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;Listar tus aplicaciones
execute: "List all my apps"El LLM escribe:
const apps = await api.request({ method: 'GET', path: '/v1/apps' });
return apps.data.map(a => ({ id: a.id, name: a.attributes.name }));Encadenar múltiples llamadas
execute: "Get latest reviews for my first app"El LLM escribe:
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
}))
};Qué puedes acceder
Los 923 endpoints de la API de App Store Connect, incluyendo:
Categoría | Endpoints | Qué obtienes |
Metadatos de App | 29 | Título, subtítulo, palabras clave, descripción — leer Y escribir |
Análisis | 10 | Impresiones, visitas a la página, descargas, atribución de origen |
Ventas y Finanzas | 2 | Ingresos, unidades, beneficios por país |
Reseñas de clientes | 5 | Calificaciones, texto de reseña, responder a reseñas |
Suscripciones | 30 | Gestión de suscripciones, precios, grupos, ofertas |
Compras integradas | 29 | Gestión de IAP, códigos de oferta |
Versiones | 28 | Gestión de versiones, lanzamiento gradual |
Capturas de pantalla | 12 | Subir, reordenar, gestionar conjuntos de capturas |
Pruebas A/B | 24 | Experimentos de página de producto, variantes de tratamiento |
Páginas de producto personalizadas | 18 | Páginas de destino personalizadas por campaña publicitaria |
TestFlight | 23 | Grupos beta, probadores, compilaciones |
Precios | 11 | Precios por territorio, puntos de precio |
Compilaciones | 29 | Gestión de compilaciones, estado de procesamiento |
Consulta API-COVERAGE.md para ver el mapa agrupado completo.
Cómo funciona
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) │
└─────────────────────────────────────────────────┘Seguridad
El código se ejecuta en un entorno aislado (sandbox)
vmde Node.jsNo hay acceso a
fetch,require,process,eval,setTimeoutCredenciales inyectadas mediante enlace: nunca visibles para el código generado
Respuesta truncada para evitar el exceso de contexto
Solo
spec(búsqueda) oapi(ejecución) disponibles como globales
Arquitectura
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¿Por qué el Modo Código?
MCP Tradicional | Modo Código | |
Herramientas | 1 por endpoint (923) | 2 en total |
Tokens de contexto | ~100K+ | ~1K |
Añadir endpoints | Nueva herramienta + código + esquema + lanzamiento | Apple actualiza la especificación. Cero cambios. |
Encadenar llamadas | Reingresar al LLM entre cada una | Ejecución única, múltiples llamadas |
Mantenimiento | Actualizar 923 definiciones de herramientas | Actualizar 1 archivo de especificación |
Inspirado en el patrón de Modo Código de Cloudflare.
Desarrollo
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 checkLicencia
MIT — Úsala, modifícala, véndela. Solo haz que funcione.
Créditos
Creado por Trial and Error Inc. Utilizado en producción por RenovateAI, una aplicación de diseño de interiores impulsada por IA para iOS, Android y web. Patrón de modo código de Cloudflare.
"No implementamos endpoints individuales. Implementamos la capacidad de llamar a CUALQUIER endpoint."
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