Skip to main content
Glama
TrialAndErrorAI

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.

TypeScript MCP SDK License: MIT API Version

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

search(code)

Escribe JS para consultar la especificación OpenAPI de Apple. Descubre endpoints, verifica parámetros, lee esquemas.

execute(code)

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 maintenance

Inicio rápido

1. Obtén las credenciales de App Store Connect

  1. Ve a App Store Connect → Usuarios y acceso → Integraciones → Claves

  2. Haz clic en "+" para generar una nueva clave (rol de Administrador o Finanzas)

  3. Descarga el archivo .p8 (¡solo se puede descargar una vez!)

  4. 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

APP_STORE_KEY_ID

ID de clave de 10 caracteres

APP_STORE_ISSUER_ID

ID de emisor UUID

APP_STORE_P8_PATH

Ruta absoluta a tu archivo .p8

APP_STORE_VENDOR_NUMBER (opcional)

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 build

Luego 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) vm de Node.js

  • No hay acceso a fetch, require, process, eval, setTimeout

  • Credenciales inyectadas mediante enlace: nunca visibles para el código generado

  • Respuesta truncada para evitar el exceso de contexto

  • Solo spec (búsqueda) o api (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 check

Licencia

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.

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