asc-mcp
Un servidor MCP para App Store Connect: 41 herramientas para publicar una versión desde tu agente, que cubren metadatos, capturas de pantalla, compilaciones, TestFlight, compras dentro de la aplicación, envío y publicación.
Documentación
asc-mcp
Publica una versión en la App Store desde tu agente de codificación. Un servidor MCP para App Store Connect: 41 herramientas que editan metadatos de versión, suben capturas de pantalla, adjuntan builds, gestionan TestFlight, crean compras dentro de la app, envían y publican, además de una capa de inteligencia que audita una versión antes de enviarla y resume tus reseñas. 6 flujos de trabajo con comandos de barra y una Skill de Claude incluida. No es otro envoltorio de API.
asc-mcp.pages.dev · npm · Precio: prueba gratuita de 7 días, luego $9/mes
Claude Desktop, un clic: descarga el último asc-mcp.mcpb y ábrelo. Claude te pedirá tu Issuer ID y te permitirá elegir tu .p8 con un selector de archivos. Sin JSON, sin buscar reinicios.
Todo lo demás (Claude Code, Cursor, Windsurf, Cline), un comando:
npx @pofky/asc-mcp init --write # finds your .p8, asks for your Issuer ID, writes your MCP config
Luego pregúntale a tu agente: "inicia mi prueba de asc-mcp, mi correo es you@example.com". Las 41 herramientas se desbloquean por 7 días, sin tarjeta y sin nada que cancelar, y la prueba se activa en la sesión en la que ya estás, así que lo que te tenía bloqueado funcionará en la siguiente llamada. Después, Pro cuesta $9 al mes. Seis herramientas quedan gratis, y tres de ellas solo necesitan Node.
| Tú dices | Qué sucede |
|---|---|
| "Ejecuta una verificación previa en mi app" | Audita metadatos, límites de caracteres, capturas de pantalla, estado del build. Detecta los problemas que causan el 40% de los rechazos. |
| "Dame un informe matutino" | Resume todas tus apps: quién está en revisión, quién fue rechazado, nuevas reseñas con baja calificación, elementos de acción. |
| "Genera notas de versión desde mi historial de git" | Lee los commits desde la última etiqueta, los categoriza y te da datos estructurados para escribir el texto de "Novedades". |
| "¿Mi app está en revisión?" | Estado exacto de revisión con contexto ("tiempo típico: 24-48 horas") |
| "Muéstrame reseñas de 1 estrella" | Reseñas de clientes filtradas por calificación, territorio, ordenadas por fecha |
| "¿Cuáles fueron mis descargas esta semana?" | Resumen de ventas e ingresos por territorio |
Sin cambiar de contexto. Sin portal. Solo pregunta.
Qué hace esto diferente
Sucesor mantenido de JoshuaRileyDev/app-store-connect-mcp-server (archivado en febrero de 2026). Ángulo diferente, misma superficie de API y más.
Otros servidores MCP de ASC envuelven la API y te dan de 80 a 982 endpoints crudos. Este te da 41 herramientas con criterio, 6 Prompts de comando de barra y una Skill de Claude que piensan. Las herramientas de lectura resumen y auditan; las herramientas de control Pro realmente manejan App Store Connect, desde editar metadatos hasta enviar y publicar, con la misma clave de API. Dos herramientas usan MCP Sampling: el modelo de tu propio cliente hace el trabajo de LLM, así que no hay costo extra de este servidor.
Por qué el control total es posible sin fastlane: el deliver y el pilot de fastlane son solo llamadas a la misma API REST de App Store Connect contra la que este servidor se autentica con tu .p8. Así que casi todo lo que automatizarías con fastlane es una herramienta aquí, sin necesidad de la cadena de herramientas de Ruby. El único paso que necesita tu Mac es compilar y firmar el binario, que build_and_archive y upload_binary gestionan mediante Xcode.
Configuración (3 minutos)
Paso 1. Crea una clave de API en App Store Connect > Integraciones > API de App Store Connect (rol de Admin o App Manager), luego toma tres cosas de esa misma página:
- Issuer ID (
ASC_ISSUER_ID): el UUID que se muestra en la parte superior de la página, con un botón de copiar al lado. - Key ID (
ASC_KEY_ID): el ID de 10 caracteres junto a tu clave, también en el nombre del archivoAuthKey_XXXXXXXXXX.p8. - Archivo
.p8(ASC_PRIVATE_KEY_PATH): haz clic en Descargar y apunta a este archivo guardado. Apple solo te permite descargarlo una vez, así que guárdalo en un lugar seguro.
Paso 2. Instala:
npm install -g @pofky/asc-mcp
No se necesita instalación global si prefieres npx (consulta la configuración manual a continuación).
Configuración más rápida (recomendada). Coloca tu .p8 en la ruta estándar de Apple ~/.appstoreconnect/private_keys/ (el archivo se llama AuthKey_XXXXXXXXXX.p8, y el Key ID está en el nombre del archivo). Luego ejecuta:
npx @pofky/asc-mcp init --write # auto-detects the key, asks for your Issuer ID, and writes the config for you
# or: npx @pofky/asc-mcp init # same, but prints the block to paste yourself
init --write encuentra tu configuración de Claude Desktop / Claude Code, hace una copia de seguridad y fusiona el bloque del servidor, así que no hay edición de JSON. El servidor también detecta automáticamente la ruta de .p8 en tiempo de ejecución, así que solo necesitas ASC_ISSUER_ID (y ASC_LICENSE_KEY para Pro).
Ejecutarlo desde un agente, o cualquier tubería. No hay terminal para responder preguntas, así que pasa lo que se habría preguntado:
npx @pofky/asc-mcp init --write --issuer <your-issuer-uuid> # add --config <path> if you keep several client configs
Imprime el bloque listo para pegar de cualquier manera, y nunca inventa un valor: si falta el Issuer ID, lo dice en lugar de escribir una configuración que fallaría en la autenticación de Apple. --key-path, --key-id y --license están ahí por la misma razón, y cada uno también lee de la variable de entorno ASC_* correspondiente.
¿Atascado? Ejecuta npx @pofky/asc-mcp doctor (o pídele a tu agente que llame a asc_setup_check). Verifica tu clave, Issuer ID, una conexión en vivo con App Store Connect y tu licencia, e imprime la solución exacta para cualquier problema. En tu agente, el comando /asc-start guía a un usuario primerizo por todo esto.
Configuración manual. Añade a la configuración MCP de tu agente (config de Claude Desktop, o ~/.claude.json para Claude Code). Usa npx para instalación cero, o asc-mcp si instalaste globalmente:
{
"mcpServers": {
"appstore-connect": {
"command": "npx",
"args": ["-y", "@pofky/asc-mcp"],
"env": {
"ASC_ISSUER_ID": "YOUR_ISSUER_ID"
}
}
}
}
Con el .p8 en ~/.appstoreconnect/private_keys/, ASC_ISSUER_ID es la única variable de entorno requerida (Key ID y ruta de la clave se detectan automáticamente). Añade ASC_LICENSE_KEY para desbloquear Pro.
Paso 3. Pídele a tu agente: "Lista mis apps de App Store Connect"
Paso 4, para probar la mitad de pago. Pídele a tu agente: "inicia mi prueba de asc-mcp, mi correo es you@example.com". Llama a asc_start_trial, que desbloquea las 41 herramientas por 7 días sin tarjeta y sin nada que cancelar. La clave se activa en la sesión en ejecución, así que lo que te tenía bloqueado funcionará en la siguiente llamada, y se escribe en tu configuración MCP para que sobreviva a un reinicio. Una prueba por cuenta de desarrollador de Apple.
Funciona con Claude Code, Cursor, Windsurf, Cline y cualquier cliente compatible con MCP.
Herramientas
Gratis (sin registro, sin clave de licencia)
| Herramienta | Qué hace |
|---|---|
asc_start_trial | 7 días de todo, sin tarjeta. Pídele a tu agente que lo ejecute con tu correo. Desbloquea las 41 herramientas en la sesión en ejecución, sin reiniciar, sin nada que cancelar. |
asc_setup_check | Ejecútalo primero si algo falla. Verifica tu clave, Issuer ID, una conexión en vivo con App Store Connect y el nivel de licencia, e imprime la solución exacta para cada fallo. |
asc_guide | Empieza aquí. El manual dentro del agente para cada flujo (primer lanzamiento, actualización, IAP, suscripciones, reseñas, TestFlight, binario), con cada paso manual del sitio web de App Store Connect marcado en línea. Consulta también USER_GUIDE.md y LIMITATIONS.md. |
list_apps | Lista todas tus apps con nombre, bundle ID, SKU y App ID |
app_details | Historial de versiones, estado del build, estado de lanzamiento, fechas |
review_status | Estado actual de revisión con contexto legible para humanos |
Pro (prueba gratuita de 7 días, luego $9/mes)
| Herramienta | Qué hace | Por qué importa |
|---|---|---|
list_reviews | Reseñas de clientes filtradas por calificación, territorio, orden de clasificación | Ve lo que dicen los usuarios sin abrir el portal |
sales_report | Descargas diarias/semanales/mensuales e ingresos por territorio | Conoce tus números al instante |
release_preflight | Auditoría previa al envío: metadatos, límites de caracteres, capturas de pantalla, builds | Detecta más del 40% de las causas comunes de rechazo antes de enviar |
daily_briefing | Resumen matutino de todas las apps: estado, reseñas, rechazos | Una llamada reemplaza 10 minutos de clics en el portal |
release_notes | Commits de git desde la última etiqueta, categorizados para escribir "Novedades" | Tu agente de IA escribe notas de versión a partir de tus cambios reales |
keyword_insights | Analiza palabras clave contra la competencia de búsqueda de iTunes, calificaciones de dificultad | Ve qué palabras clave valen la pena de un vistazo |
competitor_snapshot | Consulta cualquier app: calificaciones, reseñas, versión, precio, notas de versión | Inteligencia competitiva sin salir de tu editor |
metadata_diff | Compara metadatos de versión en vivo vs pendiente en todas las localizaciones | Verifica exactamente qué cambió antes de enviar |
triage_reviews | Toma reseñas recientes y las agrupa en 3 a 5 temas con conteos, categorías de acción y citas, usando MCP Sampling | Costo extra cero: el modelo de tu cliente hace la agrupación |
draft_review_response | Redacta una respuesta pública a una reseña individual en el idioma de la reseña, mediante Sampling. Solicita tono si tu cliente lo admite. Nunca publica automáticamente. | Se respeta la pauta 1.2 de Apple; tú pegas en ASC tú mismo |
Control y Publicación (Pro)
Estas herramientas escriben en App Store Connect. Cada acción orientada al exterior (enviar, publicar, subir binario) requiere un confirm: true explícito, así que nada sale de tu máquina por accidente.
| Herramienta | Qué hace |
|---|---|
create_version | Crea una nueva versión editable de App Store para tu próximo lanzamiento |
update_version_metadata | Edita descripción, palabras clave, novedades, texto promocional, URLs, nombre de la app, subtítulo. Valida los límites de caracteres de Apple y rechaza escrituras que excedan el límite |
upload_screenshots | Sube capturas de pantalla para un tipo de pantalla de dispositivo (reservar, subir, confirmar, con checksum) |
list_builds | Lista builds recientes y su estado de procesamiento (VALID = listo) |
wait_for_build | Consulta hasta que un build termine de procesarse, para que la cadena no necesite una pausa manual |
attach_build | Adjunta un build a la versión editable (por defecto el build procesado más reciente) |
submit_for_review | Envía la versión a App Review (flujo moderno de reviewSubmissions). Se requiere confirm: true |
release_version | Publica una versión aprobada en la App Store pública. Se requiere confirm: true |
manage_phased_release | Inicia, pausa, reanuda o completa el despliegue gradual de 7 días |
list_beta_groups | Lista tus grupos beta de TestFlight |
assign_build_to_group | Envía un build a un grupo beta para que los evaluadores puedan instalarlo |
invite_beta_tester | Invita a un evaluador externo por correo y agrégalo a un grupo |
set_app_metadata | Establece categoría primaria/secundaria, copyright, derechos de contenido y cumplimiento de exportación (cifrado) en una sola llamada |
set_app_price | Establece el precio base creando el programa de precios (price_usd: 0 para gratis), auto-igualado en todos los territorios |
set_app_availability | Hace la app disponible en todos los territorios de la App Store (o un subconjunto), con inclusión automática para futuros |
set_review_contact | Establece el contacto de App Review y la cuenta de demostración opcional en la versión |
set_age_rating | Establece la declaración de clasificación por edades v2 (conjunto completo de descriptores de contenido) |
set_privacy_nutrition | Guía + enlace profundo para las etiquetas de privacidad de la App (no accesible por API) |
set_eu_trader_status | Guía + enlace profundo para el estado de trader de la DSA de la UE (no accesible por API) |
create_iap | Crea una compra dentro de la app no consumible/consumible con localización, disponibilidad y un precio auto-igualado |
create_subscription | Crea un grupo de suscripciones, suscripción, localización, disponibilidad, precio y prueba gratuita |
set_iap_review_screenshot | Adjunta la captura de pantalla de App Review a una suscripción o compra dentro de la app |
setup_app_store_signing | Descarga los perfiles de aprovisionamiento de la App Store de la app y escribe un ExportOptions.plist de firma manual (funciona con una clave de API de privilegio mínimo) |
build_and_archive | Compila, archiva y exporta un .ipa firmado mediante xcodebuild (necesita Xcode en tu Mac) |
upload_binary | Sube el .ipa a App Store Connect mediante altool, usando tu clave de API. Se requiere confirm: true |
Todo el flujo se encadena: setup_app_store_signing a build_and_archive a upload_binary a wait_for_build (bloquea hasta VALID) a attach_build a update_version_metadata a upload_screenshots a set_app_metadata/set_app_price/set_app_availability/set_age_rating/set_review_contact a release_preflight a submit_for_review a release_version. El comando de barra /asc-ship-release lo gestiona por ti.
release_preflight es la fuente única de verdad para "¿se puede enviar esto?": verifica cada campo direccionable por API y termina con una lista personalizada de "Pasos manuales para finalizar" para las pocas cosas que Apple solo permite en el sitio web (agrupación del primer IAP, etiquetas de privacidad de App Privacy, estado de comerciante de la UE).
Obtener Pro | Recupera tu clave de licencia
Qué sigue siendo manual (y por qué)
Un puñado de cosas que Apple no expone a las claves de API. El MCP nunca finge lo contrario: o devuelve los pasos exactos del sitio web más un enlace profundo, o detecta el caso y aborta para que nada quede a medias. Detalle completo en LIMITATIONS.md (y asc_guide topic:limitations):
- Crear un registro de app / App Group.
POST /v1/appsestá prohibido para claves de API; hazlo una vez en el sitio web. - Etiqueta de privacidad de App Privacy. No está en la API.
set_privacy_nutritiondevuelve la lista de verificación más un enlace profundo. - Estado de comerciante de la UE (DSA). No está en la API.
set_eu_trader_statusdevuelve los pasos. Decisión legal. - Primeros IAP/suscripciones de una app. Deben enviarse con la versión en el sitio web;
submit_for_reviewaborta en lugar de dejar la versión huérfana. Los productos posteriores se envían vía API. - Creación de certificados / firma en la nube. Las claves de privilegio mínimo no pueden;
setup_app_store_signingusa perfiles de firma manual en su lugar. - Compilar el binario. Requiere Xcode en tu Mac (
build_and_archivelo ejecuta localmente). - Publicar una respuesta pública a una reseña.
draft_review_responsela redacta; tú la pegas en el sitio web.
Cómo funciona Sampling (sin costo adicional)
triage_reviews y draft_review_response usan la primitiva de Sampling del MCP. Cuando llamas a una de estas herramientas, este servidor envía una solicitud sampling/createMessage de vuelta a tu propio cliente MCP. Tu cliente ejecuta el LLM localmente (Claude Desktop usa tu cuenta; Claude Code usa su sesión). Nunca llamamos a Anthropic desde nuestro lado.
Resultado: la agrupación de reseñas y el borrador de respuestas te cuestan exactamente lo que pagarías por cualquier otra solicitud de Claude, ni un centavo más de este servidor.
Si tu cliente MCP aún no admite Sampling, ambas herramientas devuelven un resultado estructurado degraded: true con una explicación clara. Actualiza Claude Desktop o Claude Code a una versión reciente para obtener funcionalidad completa.
Comandos de barra (Prompts)
Escríbelos en Claude Desktop o Claude Code y el agente ejecuta un flujo de trabajo predefinido con múltiples herramientas:
| Comando de barra | Qué hace |
|---|---|
/asc-start | ¿Nuevo aquí? Verifica la conexión, lista tus apps, explica gratis vs Pro en lenguaje sencillo y recomienda tu siguiente paso. No asume conocimientos de App Store Connect. |
/asc-weekly-review | Llama a daily_briefing y luego a list_reviews (baja calificación, últimos 7 días) para cada app, agrupa temas, devuelve un resumen único con lista de acciones de 3 viñetas. |
/asc-rejection-audit | Dado un app_id, llama a release_preflight + metadata_diff + review_status, lee el resultado contra los principales motivos de rechazo de 2026 (directriz 2.3 metadatos, 4.0 diseño, privacidad-IA 5.1.2). Produce secciones de Bloqueante / Posible marca / Seguro. |
/asc-release-go-no-go | Dado un app_id, combina preflight + cola de reseñas + diff de metadatos + principales competidores en la misma categoría. Devuelve un GO o NO-GO directo con tres razones de respaldo. |
/asc-ship-release | Dado un app_id, impulsa el lanzamiento completo: localiza o crea la versión editable, empuja metadatos, adjunta la compilación más reciente, sube capturas de pantalla, ejecuta preflight y luego envía. Se detiene para confirmar antes de cada paso orientado al exterior. |
/asc-first-app | Dado un app_id, impulsa el primer 1.0 de una app nueva desde el registro existente hasta el envío, manejando cada restricción de primera vez y deteniéndose en cada paso manual del sitio web (etiqueta de privacidad, estado de comerciante, agrupación del primer IAP). |
Estos son Prompts MCP según la especificación. Ningún otro MCP de App Store Connect los incluye.
Skill de Claude (instalación en una línea)
Después de instalar el MCP, ejecuta:
npx @pofky/asc-mcp install-skill
Esto copia un pequeño Skill asc-review-triage a ~/.claude/skills/ para que Claude detecte automáticamente preguntas relacionadas con reseñas ("¿alguna reseña mala últimamente?", "¿qué dicen mis usuarios?", "calificaciones esta semana?") y llame a las herramientas ASC correctas sin que tengas que explicar el flujo de trabajo cada vez.
Funciona en macOS, Linux y Windows. Para eliminarlo: npx @pofky/asc-mcp uninstall-skill.
Ejemplos Reales de Salida
"Ejecuta una verificación previa antes de enviar"
Release Preflight: v2.3
State: PREPARE_FOR_SUBMISSION
Platform: IOS
PASS (with 1 warning)
Warnings (recommended):
- Missing screenshot set for APP_IPHONE_67. May be required.
Passing checks: 4
- [en-US] Description OK (3874/4000 chars).
- [en-US] Keywords OK (96/100 chars).
- 2 screenshot set(s) found across 1 locale(s).
- Build 40 attached and valid.
Total: 4 pass, 1 warn, 0 fail
"Informe matutino"
Daily Briefing - 2026-04-13
2 apps in your account
Tempo: Habit Builder
- Latest: v2.3 (IOS) - Waiting for Review
- Action needed: v2.3 is Waiting for Review
- Reviews (last 3d): 5 new, avg 4.2 stars
NightOwl Weather
- Latest: v1.1 (IOS) - Live
- No new reviews in the last 3 days
"Genera notas de versión desde git"
Git History for Release Notes
Since: v2.2.0
Commits: 8
Character limit: 4000 chars for "What's New"
New Features (3)
- feat: add habit streak calendar view
- feat: dark mode support
- add widget for home screen
Bug Fixes (2)
- fix: notification timing off by 1 hour
- fix: crash on iPad when rotating
Instructions: Write user-facing "What's New" text.
Lead with the most impactful change. Keep under 4000 chars.
¿Por Qué Este Sobre las Alternativas Gratuitas?
| Envoltorios de API crudos (gratis) | Este servidor | |
|---|---|---|
| Número de herramientas | 80 a 982 | 41 herramientas opinadas (lectura + control) |
| Prompts MCP (comandos de barra) | No | Sí, 6 flujos de trabajo predefinidos |
| Sampling MCP (costo cero de LLM en servidor) | No | Sí, triaje de reseñas + borradores de respuestas |
| Skill de Claude incluido | No | Sí, instalación en una línea |
| Auditoría previa al envío | No | Sí, detecta rechazos antes de que envíes |
| Informes entre apps | No | Sí, una llamada, todas las apps |
| Notas de versión conscientes de git | No | Sí, lee el historial de commits de tu proyecto |
| Resúmenes inteligentes de reseñas | No | Sí, agrupación de temas, elementos de acción |
| Configuración | Compilar desde el código fuente (Swift o Node) | Un comando, init --write escribe tu configuración |
| Nivel gratuito | Algunos | Sí, 6 herramientas, sin registro. Tres de ellas solo necesitan Node |
| Prueba la mitad de pago | n/d | 7 días, sin tarjeta, iniciado desde dentro de tu agente |
Los envoltorios crudos te dan endpoints. Esto te da respuestas.
Seguridad
Tus credenciales nunca salen de tu máquina:
- La clave privada
.p8se lee localmente. Los tokens JWT se generan en tu computadora. - Las llamadas a la API van directamente desde tu máquina a
api.appstoreconnect.apple.com. - El servidor de licencias solo ve tu cadena de clave de licencia. Cero datos de Apple, cero credenciales.
- Totalmente de código abierto. Lee el código.
Compatible Con
- Claude Code (Anthropic)
- Cursor
- Windsurf
- Cline
- Cualquier cliente que admita el Model Context Protocol
Requisitos
- Node.js 18+
- Membresía del Programa de Desarrolladores de Apple
- Clave de API de App Store Connect (rol de Administrador o Administrador de Apps)
Legal
Este proyecto no está afiliado, respaldado ni patrocinado por Apple Inc. Apple, App Store, App Store Connect, TestFlight, iOS y macOS son marcas comerciales de Apple Inc.
Licencia
MIT