Skip to main content
Glama
imfaisii

App Store Connect MCP Server

by imfaisii

App Store Connect MCP Server

La API completa de App Store Connect, como servidor MCP. 1,263 operaciones generadas directamente desde la especificación oficial OpenAPI de Apple, expuestas a Claude Code, Claude Desktop, Cursor y a cualquier otro cliente del Model Context Protocol mediante solo 4 herramientas eficientes en tokens.

CI Model Context Protocol App Store Connect API 4.4.1 1263 operations 4 MCP tools Bun TypeScript License: MIT


¿Qué es el servidor MCP de App Store Connect?

app-store-connect-mcp es un servidor del Model Context Protocol (MCP) de código abierto para la API de App Store Connect. Instálalo una vez y tu agente de IA podrá leer y escribir todo lo que Apple expone para tus apps y tu cuenta de desarrollador:

Listados de App Store y metadatos · builds de TestFlight, grupos beta y testers · compras dentro de la app · suscripciones renovables automáticamente, ofertas y ofertas de recuperación · clasificaciones de Game Center, logros y emparejamiento · flujos de trabajo de Xcode Cloud y ejecuciones de builds · perfiles de aprovisionamiento, certificados, bundle IDs y dispositivos · envíos a App Review y detalles de la revisión · reseñas de clientes y respuestas · precios, disponibilidad y territorios · informes de ventas, financieros y de analítica · usuarios, roles e invitaciones · App Clips, recursos de fondo y distribución alternativa.

La mayoría de los servidores MCP de App Store Connect envuelven manualmente dos o tres docenas de endpoints y luego quedan desactualizados. Este está generado a partir de la especificación OpenAPI publicada por Apple, por lo que la cobertura es toda la superficie documentada y se mantiene al día con un único bun run generate.

En este repositorio no hay credenciales. Tú proporcionas tu propia clave de API de App Store Connect en tiempo de ejecución mediante variables de entorno. Nada se incluye, registra ni transmite en ningún lugar excepto Apple.

Tabla de contenidos


Related MCP server: App Store Connect MCP

De un vistazo

Qué es

Servidor MCP para la API completa de App Store Connect

Versión de la API

App Store Connect API 4.4.1 (OpenAPI 3.0.1)

Operaciones en el catálogo

1,263 — una por ruta + método

Rutas de la API

966

Etiquetas de recurso

195

Herramientas MCP registradas

4 metaherramientas: asc_search, asc_schema, asc_call, asc_tags

Desglose por método

797 GET · 176 POST · 158 PATCH · 132 DELETE

Fuente de verdad

El zip OpenAPI de Apple, incluido en openapi/app-store-connect.openapi.json

Autenticación

JWT ES256 generado en tiempo de ejecución a partir de Issuer ID + Key ID + clave privada .p8

URL base

https://api.appstoreconnect.apple.com (se puede sobrescribir)

Transporte

stdio

Runtime

Bun 1.1+ y @modelcontextprotocol/sdk

Licencia

MIT


Por qué 4 herramientas en lugar de 1,263

Registrar cada operación de OpenAPI como una herramienta MCP propia introduce 1,263 esquemas JSON completos en la ventana de contexto del modelo. Eso supone del orden de cientos de miles de tokens consumidos antes de que el agente haga ningún trabajo real — y muchos clientes simplemente rechazan o truncan una lista de herramientas tan grande.

Este servidor mantiene el catálogo completo interno y expone una superficie pequeña y estable sobre él:

asc_search  →  find operations           (names, methods, paths, tags — no schemas)
asc_schema  →  describe one operation    (full input JSON Schema + call hint)
asc_call    →  execute one operation     (real request, or _dryRun)
asc_tags    →  list resource tags        (with operation counts, to narrow search)

El agente paga exactamente por el esquema que va a usar, y nada más. Un flujo típico de tres pasos cuesta unos pocos miles de tokens en lugar de unos cientos de miles.

Válvula de escape (solo depuración)

export ASC_EXPOSE_ALL_TOOLS=1   # also register all 1,263 operations as individual MCP tools

Déjalo sin establecer en condiciones normales. Existe para depurar la especificación y es extremadamente costoso en contexto.


Las cuatro herramientas MCP

Búsqueda de texto libre sobre operationId, nombre, ruta, etiquetas, método y descripción. Devuelve resultados ordenados sin los esquemas JSON.

Parámetro

Tipo

Requerido

Descripción

query

string

opcional*

Texto libre, p. ej. "list apps", "beta testers", "sales reports", "/v1/builds"

tag

string

opcional*

Filtro de etiqueta OpenAPI exacto, p. ej. Apps, Builds, BetaGroups

method

string

opcional

GET, POST, PATCH, DELETE, PUT

limit

integer

opcional

Máximo de resultados, por defecto 15, máximo 50

* Se requiere al menos uno de query, tag o method.

{ "query": "list apps", "method": "GET", "limit": 5 }

asc_schema — describe una operación

Devuelve el esquema JSON completo de entrada de la operación, su lista de parámetros de ruta, su lista de parámetros de consulta y un callHint que indica cómo invocarla.

Parámetro

Tipo

Requerido

Descripción

operation

string

OperationId o nombre de herramienta generado, p. ej. apps_getCollection

asc_call — ejecuta la operación

Parámetro

Tipo

Requerido

Descripción

operation

string

OperationId o nombre de herramienta generado

args

object

opcional

Parámetros de ruta, parámetros de consulta, body, _dryRun. Se permiten propiedades adicionales

_dryRun

boolean

opcional

Resuelve método/ruta/consulta/cuerpo sin llamar a Apple

Los campos de ruta y consulta funcionan anidados dentro de args o como claves de nivel superior junto a operation. Las escrituras JSON:API van en body.

// read
{ "operation": "apps_getCollection", "args": { "limit": 10, "fields[apps]": "name,bundleId,sku" } }

// dry run — no network call, shows the resolved request
{ "operation": "apps_getCollection", "_dryRun": true, "args": { "limit": 10 } }

// write (JSON:API document)
{
  "operation": "betaGroups_createInstance",
  "args": {
    "body": {
      "data": {
        "type": "betaGroups",
        "attributes": { "name": "Internal QA" },
        "relationships": { "app": { "data": { "type": "apps", "id": "1234567890" } } }
      }
    }
  }
}

asc_tags — oriéntate dentro de la API

Parámetro

Tipo

Requerido

Descripción

limit

integer

opcional

Máximo de etiquetas, por defecto las 195, ordenadas por recuento de operaciones

Manejo de respuestas

  • Las respuestas JSON se devuelven parseadas.

  • Las respuestas CSV, XML y de texto se devuelven como texto.

  • Las descargas gzip y binarias (informes financieros, informes de ventas) se devuelven en base64 con encoding, contentType, byteLength y una nota de decodificación.

  • Las respuestas de más de ~120,000 caracteres se truncan con una sugerencia para acotar filter[…], fields[…] o limit.

  • Los errores HTTP 4xx/5xx se muestran como errores MCP con el cuerpo de error de Apple intacto, de modo que el agente pueda leer la cadena detail de Apple y autocorregirse.


Cobertura: todos los recursos de App Store Connect

Las 1,263 operaciones en 195 etiquetas de recurso. Los recuentos son operaciones por etiqueta.

Apps, listados y metadatos de App Store — ~250 operaciones

Apps (86) · AppStoreVersions (30) · AppInfos (20) · AppCustomProductPageLocalizations (12) · AppStoreVersionExperiments (12) · AppStoreVersionLocalizations (12) · AppEncryptionDeclarations (8) · AppEventLocalizations (8) · AppStoreVersionExperimentTreatmentLocalizations (7) · AppCategories (6) · AppCustomProductPages (6) · AppEvents (6) · AppPreviewSets (6) · AppScreenshotSets (6) · AppStoreVersionExperimentTreatments (6) · EndUserLicenseAgreements (6) · AppCustomProductPageVersions (5) · AppInfoLocalizations (4) · AppPreviews (4) · AppScreenshots (4) · AppEventScreenshots (4) · AppEventVideoClips (4) · AccessibilityDeclarations (4) · AndroidToIosAppMappingDetails (4) · AppTags (3) · AppStoreVersionPhasedReleases (3) · AgeRatingDeclarations (1) · AppStoreVersionPromotions (1) · AppStoreVersionReleaseRequests (1) · RoutingAppCoverages (4)

TestFlight y pruebas beta — ~90 operaciones

BetaGroups (21) · BetaTesters (16) · BetaAppLocalizations (7) · BetaBuildLocalizations (7) · PreReleaseVersions (6) · BetaAppReviewDetails (5) · BetaAppReviewSubmissions (5) · BetaLicenseAgreements (5) · BuildBetaDetails (5) · BetaAppClipInvocations (4) · BetaFeedbackCrashSubmissions (4) · BetaRecruitmentCriteria (3) · BetaAppClipInvocationLocalizations (3) · BetaFeedbackScreenshotSubmissions (2) · BetaCrashLogs (1) · BetaRecruitmentCriterionOptions (1) · BetaTesterInvitations (1) · BuildBetaNotifications (1)

Compilaciones y subidas — ~50 operaciones

Builds (30) · BuildBundles (8) · BuildUploads (5) · BuildUploadFiles (3) · DiagnosticSignatures (1)

Compras dentro de la app y suscripciones — ~200 operaciones

Subscriptions (32) · InAppPurchases (25) · SubscriptionGroups (10) · InAppPurchaseOfferCodes (9) · SubscriptionOfferCodes (9) · InAppPurchaseImages (8) · InAppPurchaseLocalizations (8) · InAppPurchasePriceSchedules (8) · InAppPurchaseVersions (8) · SubscriptionGroupLocalizations (8) · SubscriptionImages (8) · SubscriptionLocalizations (8) · SubscriptionVersions (8) · SubscriptionPlanAvailabilities (6) · SubscriptionPromotionalOffers (6) · WinBackOffers (6) · InAppPurchaseAppStoreReviewScreenshots (4) · InAppPurchaseAvailabilities (4) · InAppPurchaseOfferCodeOneTimeUseCodes (4) · SubscriptionAppStoreReviewScreenshots (4) · SubscriptionAvailabilities (4) · SubscriptionGroupVersions (4) · SubscriptionOfferCodeOneTimeUseCodes (4) · SubscriptionPricePoints (4) · InAppPurchaseOfferCodeCustomCodes (3) · SubscriptionIntroductoryOffers (3) · SubscriptionOfferCodeCustomCodes (3) · PromotedPurchases (4) · InAppPurchasePricePoints (2) · SubscriptionGracePeriods (2) · SubscriptionPrices (2) · InAppPurchaseContents (1) · InAppPurchaseSubmissions (1) · SubscriptionGroupSubmissions (1) · SubscriptionSubmissions (1) · SandboxTesters (2) · SandboxTestersClearPurchaseHistoryRequest (1)

Game Center — ~330 operaciones

GameCenterDetails (42) · GameCenterGroups (29) · GameCenterLeaderboardSets (27) · GameCenterLeaderboards (21) · GameCenterAchievements (19) · GameCenterAchievementLocalizations (14) · GameCenterActivities (14) · GameCenterLeaderboardLocalizations (12) · GameCenterLeaderboardSetLocalizations (12) · GameCenterMatchmakingRuleSets (11) · GameCenterMatchmakingQueues (10) · GameCenterAppVersions (9) · GameCenterAchievementImages (8) · GameCenterChallenges (8) · GameCenterLeaderboardImages (8) · GameCenterLeaderboardSetImages (8) · GameCenterLeaderboardSetMemberLocalizations (8) · GameCenterActivityVersions (7) · GameCenterActivityLocalizations (6) · GameCenterChallengeLocalizations (6) · GameCenterChallengeVersions (6) · GameCenterMatchmakingRules (6) · GameCenterEnabledVersions (5) · más versiones, imágenes y lanzamientos de logros/clasificaciones/actividades/retos, equipos de emparejamiento, pruebas de conjuntos de reglas, envíos de entradas y envíos de logros de jugador

Xcode Cloud (integración continua) — ~50 operaciones

CiProducts (13) · CiBuildActions (9) · CiWorkflows (8) · CiBuildRuns (6) · ScmRepositories (6) · CiMacOsVersions (4) · CiXcodeVersions (4) · ScmProviders (4) · CiArtifacts (1) · CiIssues (1) · CiTestResults (1) · ScmGitReferences (1) · ScmPullRequests (1)

Certificados, identificadores y perfiles — ~45 operaciones

BundleIds (11) · Profiles (10) · Certificates (7) · MerchantIds (7) · PassTypeIds (7) · Devices (4) · BundleIdCapabilities (3)

App Review y envíos — ~20 operaciones

ReviewSubmissions (6) · AppStoreReviewDetails (5) · AppStoreReviewAttachments (4) · ReviewSubmissionItems (3) · AppStoreVersionSubmissions (1)

Precios, disponibilidad y territorios — ~25 operaciones

AppPriceSchedules (8) · AppAvailabilities (4) · AppPricePoints (3) · Nominations (5) · Territories (1) · TerritoryAvailabilities (1) · EndAppAvailabilityPreOrders (1)

Informes y analíticas — ~15 operaciones

AnalyticsReportRequests (5) · AnalyticsReportInstances (3) · AnalyticsReports (3) · AnalyticsReportSegments (1) · SalesReports (1) · FinanceReports (1)

Reseñas de clientes — 6 operaciones

CustomerReviews (3) · CustomerReviewResponses (3)

Usuarios y acceso — ~15 operaciones

Users (9) · UserInvitations (6) · Actors (2)

App Clips — ~30 operaciones

AppClipDefaultExperiences (11) · AppClipDefaultExperienceLocalizations (6) · AppClips (5) · AppClipHeaderImages (4) · AppClipAdvancedExperienceImages (3) · AppClipAdvancedExperiences (3) · AppClipAppStoreReviewDetails (3)

Recursos en segundo plano — ~15 operaciones

BackgroundAssets (5) · BackgroundAssetVersions (4) · BackgroundAssetUploadFiles (3) · además de los endpoints de lanzamiento de App Store, beta interna y beta externa

Distribución alternativa (DMA de la UE) — ~15 operaciones

AlternativeDistributionPackageVersions (5) · AlternativeDistributionDomains (4) · AlternativeDistributionKeys (4) · AlternativeDistributionPackages (4) · MarketplaceWebhooks (4) · MarketplaceSearchDetails (3) · AlternativeDistributionPackageDeltas (1) · AlternativeDistributionPackageVariants (1)

Webhooks — 8 operaciones

Webhooks (6) · WebhookDeliveries (1) · WebhookPings (1)

Ejecuta asc_tags en cualquier momento para obtener la lista exacta y actualizada.


Requisitos

  • Bun 1.1 o superior

  • Una clave de API de App Store Connect: ID de emisor, ID de clave y el archivo de clave privada .p8

  • Un cliente MCP que hable stdio: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code con una extensión MCP, Zed o tu propio agente


Obtén tu clave de API de App Store Connect

  1. Inicia sesión en App Store Connect.

  2. Ve a Usuarios y acceso → Integraciones → API de App Store Connect.

  3. Haz clic en + para generar una clave. Elige el rol más pequeño que cubra tu caso de uso (Developer, App Manager o Admin para la gestión de usuarios).

  4. Copia el ID de emisor (un UUID, que se muestra una vez en la parte superior de la página).

  5. Copia el ID de clave (10 caracteres).

  6. Descarga el archivo de clave privada .p8. Apple solo te permite descargarlo una vez. Guárdalo fuera de tu repositorio, por ejemplo en ~/.appstoreconnect/AuthKey_XXXXXXXXXX.p8, y aplícale chmod 600.

La guía oficial de Apple: Creación de claves de API para App Store Connect API.


Instalación en Claude Code

git clone https://github.com/imfaisii/asc-mcp.git
cd asc-mcp
bun install
bun run smoke     # offline catalog check + server boot — no credentials needed

Registra el servidor globalmente:

claude mcp add app-store-connect \
  -s user \
  -t stdio \
  -e ASC_ISSUER_ID=your-issuer-uuid \
  -e ASC_KEY_ID=your-key-id \
  -e ASC_PRIVATE_KEY_PATH=$HOME/.appstoreconnect/AuthKey_XXXXXXXXXX.p8 \
  -- bun run /ABS/PATH/to/asc-mcp/src/index.ts

Verifica y reinicia:

claude mcp get app-store-connect
claude mcp list

Inicia una nueva sesión de Claude Code. Las herramientas aparecen como mcp__app-store-connect__asc_search, …asc_schema, …asc_call y …asc_tags.


Instalación en Claude Desktop

Añade esto a claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "app-store-connect": {
      "command": "bun",
      "args": ["run", "/ABS/PATH/to/asc-mcp/src/index.ts"],
      "env": {
        "ASC_ISSUER_ID": "your-issuer-uuid",
        "ASC_KEY_ID": "your-key-id",
        "ASC_PRIVATE_KEY_PATH": "/ABS/PATH/to/AuthKey_XXXXXXXXXX.p8"
      }
    }
  }
}

Reinicia Claude Desktop.


Instalación en Cursor, Windsurf, VS Code y otros clientes MCP

Cualquier cliente que lance un servidor MCP stdio funciona. La forma es siempre la misma — mcp.example.json en este repositorio es una plantilla lista para copiar.

Cursor~/.cursor/mcp.json (global) o .cursor/mcp.json (por proyecto):

{
  "mcpServers": {
    "app-store-connect": {
      "command": "bun",
      "args": ["run", "/ABS/PATH/to/asc-mcp/src/index.ts"],
      "env": {
        "ASC_ISSUER_ID": "your-issuer-uuid",
        "ASC_KEY_ID": "your-key-id",
        "ASC_PRIVATE_KEY_PATH": "/ABS/PATH/to/AuthKey_XXXXXXXXXX.p8"
      }
    }
  }
}

Windsurf~/.codeium/windsurf/mcp_config.json, mismo bloque mcpServers.

VS Code.vscode/mcp.json con un bloque servers que use los mismos command, args y env.

Tu propio agente — ejecuta bun run src/index.ts y habla MCP a través de stdio. Parecerá que se ha quedado colgado en una terminal sin procesar; eso es un servidor stdio esperando a un cliente, y es correcto.


Variables de entorno

Variable

Requerida

Propósito

ASC_ISSUER_ID

ID de emisor (UUID) de App Store Connect

ASC_KEY_ID

ID de clave (10 caracteres)

ASC_PRIVATE_KEY_PATH

*

Ruta absoluta al archivo de clave privada .p8

ASC_PRIVATE_KEY

*

Contenido PEM en línea, en lugar de una ruta de archivo (útil en CI)

ASC_BASE_URL

no

Por defecto https://api.appstoreconnect.apple.com

ASC_EXPOSE_ALL_TOOLS

no

1 registra las 1.263 operaciones como herramientas MCP individuales. Solo para depuración

* Proporciona exactamente uno de ASC_PRIVATE_KEY_PATH o ASC_PRIVATE_KEY.

También se aceptan estos alias: APP_STORE_CONNECT_ISSUER_ID, APP_STORE_CONNECT_KEY_ID, APP_STORE_CONNECT_PRIVATE_KEY_PATH, APP_STORE_CONNECT_PRIVATE_KEY.

Copia .env.example a .env para shells locales. .env* y *.p8 ya están en .gitignore.


Cómo lo usa un agente

1. asc_tags                                     # optional: orient inside 195 resource tags
2. asc_search { query: "list apps" }            # find candidate operations
3. asc_schema { operation: "apps_getCollection" }  # read the exact input schema
4. asc_call   { operation: "apps_getCollection", args: { limit: 10 } }

Para cualquier operación de escritura, ejecútala primero como una prueba en seco:

{ "operation": "appStoreVersions_updateInstance", "_dryRun": true, "args": { "id": "…", "body": { } } }

_dryRun devuelve el método, la ruta, los parámetros de ruta, la consulta y el cuerpo resueltos sin tocar Apple, para que el agente pueda comprobar su propia solicitud antes de enviarla.


Ejemplos de prompts

Una vez que el servidor está conectado, todo esto funciona en lenguaje natural:

  • "Enumera mis apps con sus IDs de paquete y SKUs."

  • "Muestra las últimas 5 compilaciones de TestFlight para MyApp y a quién se distribuyeron."

  • "Crea un grupo beta de TestFlight llamado Internal QA para MyApp y añade a estos tres evaluadores."

  • "¿Cuál es la versión actual de MyApp en App Store en cada localización, y a cuáles les falta una descripción?"

  • "Descarga el informe de ventas de este mes y resume las unidades por territorio."

  • "Enumera todas las suscripciones renovables automáticamente en mi grupo de suscripciones con sus puntos de precio."

  • "¿Qué perfiles de aprovisionamiento caducan en los próximos 30 días?"

  • "Muestra mi último envío a App Review y su motivo de rechazo."

  • "Obtén las reseñas de clientes más recientes con 1 o 2 estrellas y redacta respuestas."

  • "Activa el flujo de trabajo de Xcode Cloud llamado Release e informa del estado de la ejecución de compilación."

  • "¿Cuáles de mis compras dentro de la app no tienen una captura de pantalla de revisión?"

  • "Añade este UDID de dispositivo a mi cuenta y regenera el perfil de desarrollo."


Scripts

Comando

Propósito

bun install

Instala las dependencias

bun run generate

Reconstruye generated/tools.json y generated/manifest.json a partir de la especificación OpenAPI incluida

bun run start

Inicia el servidor MCP stdio

bun run smoke

Genera, valida el inventario del catálogo y arranca el servidor. Ejecuta un GET /v1/apps en vivo solo si las credenciales están en el entorno

bun run typecheck

tsc --noEmit

bun run live

Comprobación de credenciales en vivo contra GET /v1/apps


Actualizar la especificación OpenAPI de Apple

Apple distribuye un zip. Incluye el JSON, regenera y verifica:

curl -fsSL -o /tmp/asc-openapi.zip \
  "https://developer.apple.com/sample-code/app-store-connect/app-store-connect-openapi-specification.zip"
unzip -p /tmp/asc-openapi.zip '*.json' > openapi/app-store-connect.openapi.json
bun run generate
bun run smoke

generated/ es la salida de compilación. Nunca lo edites a mano: regenéralo en su lugar.

Nota sobre la cobertura: "superficie completa" significa todas las operaciones del zip OpenAPI publicado por Apple para la versión incluida. Si un endpoint está descrito en la documentación humana de Apple pero falta en el zip, aparecerá aquí después de que Apple actualice el zip y tú lo regeneres.


Estructura del proyecto

asc-mcp/
├── openapi/
│   └── app-store-connect.openapi.json   # Apple's spec, vendored (source of truth)
├── generated/
│   ├── tools.json                       # 1263-operation catalog (build output)
│   └── manifest.json                    # counts, tags, spec version
├── src/
│   ├── index.ts                         # MCP stdio server, 4 meta-tools
│   ├── catalog.ts                       # search / resolve over the catalog
│   ├── client.ts                        # fetch wrapper, response shaping
│   ├── auth.ts                          # ES256 JWT, in-memory cache
│   └── types.ts
├── scripts/
│   ├── generate-tools.ts                # OpenAPI → catalog
│   ├── smoke.ts                         # offline inventory + boot check
│   └── live-check.ts                    # live GET /v1/apps
├── assets/                              # README graphics
├── mcp.example.json
├── .env.example
└── package.json

Modelo de seguridad

  • Nada secreto se almacena en este repositorio. Las credenciales provienen únicamente de variables de entorno.

  • .gitignore bloquea *.p8, AuthKey_*.p8 y .env*.

  • Los JWT son ES256, firmados localmente con tu .p8, con audiencia appstoreconnect-v1, válidos durante 20 minutos (el máximo de Apple), almacenados en caché solo en memoria y renovados 60 segundos antes de que expiren.

  • Los resultados de las herramientas nunca devuelven credenciales al modelo.

  • El único destino de red es ASC_BASE_URL, que por defecto es el host de la API de Apple.

  • Si alguna vez confirmas un .p8 por accidente, revoca esa clave en App Store Connect inmediatamente y genera una nueva.

Consulta SECURITY.md para reportar una vulnerabilidad.


Solución de problemas

Missing credentials / ASC_ISSUER_ID not set El cliente MCP no pasó el entorno. Pon las variables en el bloque env del cliente en lugar de en tu perfil de shell — las aplicaciones GUI como Claude Desktop y Cursor no heredan el entorno de tu shell.

HTTP 401 NOT_AUTHORIZED El ID de emisor, el ID de clave y el .p8 deben pertenecer a la misma clave. Confirma que el ID de clave coincide con el nombre del archivo (AuthKey_<KeyID>.p8) y que la clave no ha sido revocada.

HTTP 403 FORBIDDEN_ERROR El rol de la clave es demasiado limitado para esa operación. La gestión de usuarios y los informes de finanzas requieren roles superiores a Developer.

HTTP 409 con una cadena detail de JSON:API Apple está rechazando la forma del documento. Ejecuta la misma llamada con _dryRun: true, compárala con la salida de asc_schema y luego corrige el body.

El servidor "se cuelga" al ejecutar bun run start Eso es correcto. Un servidor MCP stdio se bloquea esperando un cliente en stdin. Usa bun run smoke si quieres una comprobación que termine.

Las herramientas no aparecen en mi cliente Reinicia el cliente después de editar su configuración MCP y usa una ruta absoluta a src/index.ts. Confirma que bun está en el PATH que el cliente ve (which bun), o usa la ruta absoluta al binario bun como command.

Las respuestas se truncan Los payloads de más de ~120,000 caracteres se cortan. Reduce con fields[…], filter[…] y limit en lugar de obtener colecciones completas.


Preguntas frecuentes

¿Es un producto oficial de Apple? No. Es un proyecto independiente de código abierto. "App Store Connect", "TestFlight", "Xcode" y "Game Center" son marcas comerciales de Apple Inc.

¿Cuántas herramientas expone este servidor MCP? Cuatro por defecto — asc_search, asc_schema, asc_call y asc_tags — sobre un catálogo interno de 1,263 operaciones de la API de App Store Connect. Establecer ASC_EXPOSE_ALL_TOOLS=1 registra las 1,263 individualmente, lo que solo es útil para depurar.

¿Soporta TestFlight? Sí. Aproximadamente 90 operaciones cubren grupos beta, probadores beta, invitaciones, localizaciones de compilaciones beta, envíos de revisión de apps beta, comentarios de fallos y criterios de reclutamiento.

¿Puede un agente enviar mi app para revisión? Sí. ReviewSubmissions, ReviewSubmissionItems, AppStoreVersionSubmissions y los recursos de detalle de revisión están todos en el catálogo. Usa _dryRun primero y mantén a un humano en el circuito para cualquier cosa que llegue a la App Store.

¿Funciona con Cursor, Windsurf y VS Code? Sí. Es un servidor MCP stdio estándar, por lo que cualquier cliente del Model Context Protocol puede lanzarlo.

¿Almacena o transmite mi clave de API de App Store Connect? No. La clave se lee del entorno en el momento de la llamada, se usa para firmar un JWT de corta duración localmente, y el JWT solo va al host de la API de Apple.

¿En qué se diferencia de otros servidores MCP de App Store Connect? La mayoría son envoltorios escritos a mano alrededor de un pequeño subconjunto de endpoints. Este genera su catálogo a partir de la especificación oficial de OpenAPI de Apple, por lo que la cobertura es toda la superficie publicada, y actualizarlo es un comando en lugar de una reescritura.

¿Por qué no simplemente darle al modelo 1,263 herramientas? Los esquemas JSON completos para 1,263 operaciones cuestan cientos de miles de tokens de contexto y muchos clientes truncan o rechazan listas tan largas. Buscar, luego esquema, luego llamar cuesta unos pocos miles de tokens por tarea.

¿Puedo usarlo en CI? Sí. Establece ASC_PRIVATE_KEY con el PEM en línea en lugar de una ruta de archivo, para que ningún .p8 necesite tocar el disco del runner.

¿Maneja los límites de tasa de la API de App Store Connect? No reintenta en tu nombre. Las respuestas y encabezados de límite de tasa de Apple se pasan directamente para que el agente (o tu código) decida cómo retroceder.

¿Qué versión de la API de App Store Connect está incluida? 4.4.1, OpenAPI 3.0.1. Ejecuta bun run generate después de colocar una especificación más nueva para actualizarse.


Contribuciones

Las incidencias y las solicitudes de extracción son bienvenidas. Consulta CONTRIBUTING.md. Dos reglas son las más importantes: generated/ se regenera en lugar de editarse a mano, y no aparecen credenciales en ninguna solicitud de extracción.


Licencia

MIT © imfaisii

No afiliado ni respaldado por Apple Inc.


Palabras clave: App Store Connect MCP · App Store Connect API MCP server · MCP server for App Store Connect · Model Context Protocol Apple · TestFlight MCP · Xcode Cloud MCP · in-app purchase MCP · App Store automation · Claude Code App Store Connect · Cursor MCP App Store Connect · iOS release automation with AI agents

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Free public MCP for AI agents — 193 tools, 44 workflows. No API key.

  • SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.

  • 100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.

View all MCP Connectors

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/imfaisii/asc-mcp'

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