asc-mcp
Descripción general
asc-mcp es un servidor MCP basado en Swift que conecta un cliente MCP local de macOS con la API de App Store Connect. Expone 502 herramientas en 33 dominios de herramientas de App Store + 2 dominios principales, lo que te permite automatizar flujos de trabajo de lanzamiento de iOS y macOS mediante lenguaje natural.
Se incluyen ejemplos de configuración para Codex, Claude Code, Claude Desktop, Gemini CLI, VS Code con GitHub Copilot, Continue, Cursor y Devin Desktop (antes Windsurf). La configuración del cliente está documentada; la CI de lanzamiento verifica la instalación, la inicialización de MCP y la detección de herramientas en macOS en lugar de lanzar cada cliente de terceros.
¿Eres nuevo? Sigue la Inicio rápido. Las secciones restantes son material de referencia para la configuración avanzada, la selección de herramientas y los colaboradores.
Capacidades principales
Lanzamiento y metadatos — versiones, localizaciones, builds, envíos de revisión, despliegue gradual y Xcode Cloud
TestFlight y cargas — grupos beta, evaluadores, comentarios, reclutamiento, entrega de builds, procesamiento y cumplimiento de exportación
Monetización — compras dentro de la app, suscripciones, precios, disponibilidad, códigos de oferta y ofertas promocionales
Marketing — capturas de pantalla, vistas previas, páginas de producto personalizadas, optimización de la página de producto y compras promocionadas
Cuentas y aprovisionamiento — múltiples equipos de App Store Connect, usuarios, bundle IDs, dispositivos, certificados, perfiles y capacidades
Comentarios y operaciones — reseñas de clientes, webhooks, declaraciones de accesibilidad, analíticas, métricas y diagnósticos
Automatización más segura — modo de solo lectura, salvaguardas de confirmación, paginación estricta y guía de recuperación de mutaciones
Cobertura de API auditable — un contrato OpenAPI de Apple versionado y comprobaciones de desviación en el momento del lanzamiento
Related MCP server: App Store Connect MCP
Soporte de plataformas
asc-mcp es un servidor stdio local: el cliente MCP lo inicia en el mismo equipo. Que un cliente esté disponible en Linux o Windows no hace que este servidor Swift sea multiplataforma.
Environment | Status | Notes |
macOS 15.6+ con Xcode 26.x | Recomendado | La CI de lanzamiento usa específicamente el runner de macOS 15 de GitHub con Xcode 26.2 |
macOS 14.0-15.5 | Solo objetivo de implementación declarado | La compilación y el tiempo de ejecución no están verificados; puede ser necesaria una cadena de herramientas Swift 6.2+ instalada por separado |
Linux | Aún no compatible | El trabajo de portabilidad y la CI de Linux no están completos |
Windows | No compatible | Las dependencias de código fuente actuales y el transporte |
Consulta los requisitos del sistema de Xcode de Apple para conocer las versiones de macOS compatibles con cada versión de Xcode.
Las sesiones web y en la nube no heredan automáticamente una configuración local de MCP. Ejecuta el cliente MCP localmente en un Mac compatible, o usa una función del cliente que mantenga explícitamente la ejecución en ese Mac.
Inicio rápido
La configuración recomendada guarda las credenciales de App Store Connect una sola vez en un archivo local privado. Los clientes MCP solo necesitan entonces la ruta al ejecutable asc-mcp.
1. Instalar asc-mcp
brew install mint
mint install zelentsov-dev/asc-mcp@v4.1.6
~/.mint/bin/asc-mcp --version2. Crear una clave de API de App Store Connect
Abre App Store Connect → Usuarios y acceso → Integraciones → Claves de equipo.
Genera una clave con el rol de menos privilegios que cubra tu flujo de trabajo. App Manager o Admin solo se necesitan cuando las operaciones correspondientes lo requieran.
Descarga el archivo
.p8. Apple solo permite descargarlo una vez.Copia el ID de clave y el ID de emisor.
3. Guardar las credenciales localmente
Crea directorios de configuración privados y luego mueve el archivo .p8 descargado a ~/.keys/. Reemplaza la ruta de origen y el nombre del archivo en el segundo comando:
mkdir -p ~/.config/asc-mcp ~/.keys
chmod 700 ~/.config/asc-mcp ~/.keys
mv /path/to/downloaded/AuthKey_XXXXXXXXXX.p8 ~/.keys/Crea ~/.config/asc-mcp/companies.json:
{
"companies": [
{
"id": "my-company",
"name": "My Company",
"key_id": "XXXXXXXXXX",
"issuer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"key_path": "/Users/you/.keys/AuthKey_XXXXXXXXXX.p8"
}
]
}Reemplaza /Users/you con la ruta real de tu directorio personal. Mantén ambos archivos fuera del repositorio y restringe el acceso:
chmod 600 ~/.config/asc-mcp/companies.json
chmod 600 /Users/you/.keys/AuthKey_XXXXXXXXXX.p8[!CAUTION] Nunca hagas commit de
companies.json, una clave.p8ni credenciales sin procesar a Git. Revoca la clave de App Store Connect inmediatamente si se expone.
4. Conecta tu cliente MCP
Elige un cliente. No necesitas configurar todos los clientes.
Codex
codex mcp add asc-mcp -- ~/.mint/bin/asc-mcp
codex mcp listClaude Code
claude mcp add \
--transport stdio \
--scope user \
asc-mcp \
-- ~/.mint/bin/asc-mcp
claude mcp get asc-mcp
claude mcp listPara Claude Desktop, Gemini CLI, VS Code, Continue, Cursor y Devin Desktop, usa los ejemplos listos para copiar en Configuración del cliente MCP.
5. Pruébalo
Reinicia un cliente GUI después de cambiar su configuración, abre su lista de herramientas MCP y pregunta:
List my App Store Connect apps.Si la conexión o la solicitud falla, consulta Solución de problemas.
Instalación
Mint en macOS (recomendado)
Mint instala la versión fijada desde el código fuente y mantiene el ejecutable en ~/.mint/bin/asc-mcp.
brew install mint
mint install zelentsov-dev/asc-mcp@v4.1.6Actualiza o reinstala la versión fijada:
mint install zelentsov-dev/asc-mcp@v4.1.6 --forceLos usuarios de versiones estables deben instalar una etiqueta de versión. Instalar main o develop está pensado solo para mantenedores y pruebas previas al lanzamiento.
Compilar desde el código fuente
Usa Xcode 26.x en una versión de macOS compatible, o instala una cadena de herramientas Swift 6.2+ independiente.
git clone https://github.com/zelentsov-dev/asc-mcp.git
cd asc-mcp
swift build -c releaseEl ejecutable es .build/release/asc-mcp. Si lo copias a otro lugar, copia también el paquete de recursos adyacente:
cp .build/release/asc-mcp /usr/local/bin/asc-mcp
cp -R .build/release/asc-mcp_asc-mcp.bundle /usr/local/bin/El paquete contiene el contrato de operaciones OpenAPI versionado que usan las comprobaciones de lanzamiento.
Actualizar desde una versión anterior
La versión 4.1 mantiene todos los nombres de herramientas existentes, las entradas obligatorias, las claves de proyección y la forma de los arrays. Las herramientas de lectura de Xcode Cloud ahora rechazan argumentos no documentados y validan los enlaces devueltos, la paginación, el linaje de relaciones y los recursos incluidos de forma más estricta. Los nuevos campos de proyección *Present distinguen los arrays omitidos por Apple de los arrays vacíos presentes, mientras que los campos de array heredados siguen siendo arrays. Las entradas anidadas *_limit recientemente expuestas deben emparejarse con su valor include correspondiente, y las llamadas de continuación deben repetir el ámbito de la solicitud original sin cambios. Las nuevas herramientas de eliminación de productos y flujos de trabajo usan por defecto una vista previa segura y requieren el recibo de vista previa más reciente además de una confirmación exacta del inventario antes de la eliminación permanente.
La versión 4 mantiene todos los nombres de herramientas y filtros de trabajador existentes, pero las llamadas destructivas de Marketing y de adjuntos de reseñas ahora requieren un ID de confirmación exacto antes de cualquier solicitud a Apple:
Herramienta existente | Nueva confirmación requerida |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ppo_update_experiment también requiere confirm_experiment_id cuando se proporciona state. Las llamadas que actualizan solo el nombre o la proporción de tráfico no cambian. Después de un resultado de mutación unknown o committed_unverified, usa la acción de inspección devuelta antes de reintentar.
Elimina los argumentos de nivel superior no documentados de las llamadas existentes de Marketing y de adjuntos de reseñas. La versión 4 rechaza las claves desconocidas antes de cualquier solicitud de red, en lugar de ignorarlas silenciosamente.
Configuración
Credenciales
Se recomienda el archivo ~/.config/asc-mcp/companies.json que se muestra en el Inicio rápido, porque funciona de forma consistente para clientes de terminal y GUI sin duplicar secretos en cada configuración de cliente.
Para varias empresas, añade más entradas:
{
"companies": [
{
"id": "my-company",
"name": "My Company",
"key_id": "XXXXXXXXXX",
"issuer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"key_path": "/Users/you/.keys/AuthKey_XXXXXXXXXX.p8",
"vendor_number": "YOUR_VENDOR_NUMBER"
},
{
"id": "client-company",
"name": "Client Company",
"key_id": "YYYYYYYYYY",
"issuer_id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"key_path": "/Users/you/.keys/AuthKey_YYYYYYYYYY.p8"
}
]
}vendor_number solo es obligatorio para analytics_sales_report, analytics_financial_report y analytics_app_summary. Encuéntralo en App Store Connect → Ventas y tendencias → Informes.
Las variables de entorno son útiles para la automatización, pero las apps GUI lanzadas desde Finder pueden no heredar el entorno de tu shell. La configuración basada en archivos anterior es más sencilla para la mayoría de los usuarios.
Una sola empresa:
export ASC_KEY_ID=XXXXXXXXXX
export ASC_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export ASC_PRIVATE_KEY_PATH=/Users/you/.keys/AuthKey_XXXXXXXXXX.p8
export ASC_COMPANY_NAME="My Company" # optional
export ASC_VENDOR_NUMBER=YOUR_VENDOR_NUMBER # optional, analytics onlyVarias empresas:
export ASC_COMPANY_1_NAME="My Company"
export ASC_COMPANY_1_KEY_ID=XXXXXXXXXX
export ASC_COMPANY_1_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export ASC_COMPANY_1_KEY_PATH=/Users/you/.keys/AuthKey_XXXXXXXXXX.p8
export ASC_COMPANY_2_NAME="Client Company"
export ASC_COMPANY_2_KEY_ID=YYYYYYYYYY
export ASC_COMPANY_2_ISSUER_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
export ASC_COMPANY_2_KEY_PATH=/Users/you/.keys/AuthKey_YYYYYYYYYY.p8La numeración comienza en 1. Cada entrada consecutiva debe proporcionar tanto ASC_COMPANY_{N}_KEY_ID como ASC_COMPANY_{N}_ISSUER_ID; el escaneo se detiene en el primer par que falte.
El servidor resuelve las credenciales en este orden:
--companies /absolute/path/to/companies.jsonParámetro del constructor para la incrustación programática
ASC_MCP_COMPANIES=/absolute/path/to/companies.jsonUbicaciones de archivos de configuración predeterminados, incluido
~/.config/asc-mcp/companies.jsonASC_COMPANY_1_KEY_IDy las demás variables numeradas de varias empresasASC_KEY_ID,ASC_ISSUER_IDy una variable de clave privada para una empresa
Configuración del cliente MCP
Todos los ejemplos a continuación asumen una instalación de Mint y el archivo de credenciales companies.json recomendado. Reemplaza /Users/you con la ruta real de tu directorio personal. Los clientes GUI generalmente requieren una ruta absoluta al ejecutable.
Cliente | Ámbito de configuración | Notas |
Codex | Configuración de usuario mediante CLI; configuración opcional de proyecto de confianza | Compartida por los clientes locales de Codex en el mismo Mac |
Claude Code | Ámbito |
|
Claude Desktop | Configuración de escritorio a nivel de usuario | Reinicia después de editar |
Gemini CLI | Ajustes de usuario | Servidor |
VS Code with GitHub Copilot | Perfil de usuario o | Confirma la confianza del servidor en el primer inicio |
Continue |
| Separado de la configuración nativa de MCP de VS Code |
Cursor |
| Usa una ruta de comando absoluta |
Devin Desktop (antes Windsurf) | Configuración de MCP de usuario | No mantengas más de 100 herramientas activas |
Registro CLI recomendado:
codex mcp add asc-mcp -- ~/.mint/bin/asc-mcp
codex mcp list
codex mcp get asc-mcp --jsonLa misma configuración local de MCP es compartida por los clientes de Codex en ese Mac. La configuración de usuario es $CODEX_HOME/config.toml, que por defecto es ~/.codex/config.toml:
[mcp_servers.asc-mcp]
command = "/Users/you/.mint/bin/asc-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 60
enabled = truePara una configuración específica de proyecto, coloca la misma tabla en .codex/config.toml; Codex carga la configuración del proyecto solo después de que el proyecto sea de confianza. Si usas credenciales de shell en lugar de companies.json, reenvíalas explícitamente:
env_vars = ["ASC_KEY_ID", "ASC_ISSUER_ID", "ASC_PRIVATE_KEY_PATH"]Reinicia un cliente GUI después de cambiar la configuración y luego usa su vista de MCP o /mcp para confirmar que asc-mcp está activo. Consulta la documentación oficial de MCP de Codex.
Regístralo una vez para todos los proyectos locales:
claude mcp add \
--transport stdio \
--scope user \
asc-mcp \
-- ~/.mint/bin/asc-mcp
claude mcp get asc-mcp
claude mcp listUsa --scope local solo para el proyecto actual o --scope project para crear un .mcp.json compartido. Los servidores de proyecto requieren aprobación de confianza. Nunca coloques credenciales sin procesar de App Store Connect en un .mcp.json confirmado.
Claude almacena las entradas de MCP user y local en ~/.claude.json; .claude/settings.json no es el registro global de MCP. Usa /mcp dentro de Claude Code para inspeccionar o reconectar el servidor. Consulta la documentación oficial de MCP de Claude Code.
Añade el servidor a ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}Sal de Claude Desktop y vuelve a abrirlo después de guardar el archivo.
Añade el servidor a ~/.gemini/settings.json:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}El tiempo de espera predeterminado de MCP de Gemini se conserva intencionadamente. Consulta la documentación oficial de MCP de Gemini CLI.
Ejecuta MCP: Add Server desde la paleta de comandos y elige el perfil de usuario para una configuración personal. Para una configuración de espacio de trabajo, crea .vscode/mcp.json:
{
"servers": {
"asc-mcp": {
"type": "stdio",
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}Confirma que confías en el servidor local cuando VS Code lo inicie por primera vez. No confirmes rutas específicas de usuario ni secretos en un archivo de espacio de trabajo compartido. Consulta la documentación oficial de MCP de VS Code.
Continue no usa .vscode/mcp.json. Crea .continue/mcpServers/asc-mcp.json en el espacio de trabajo:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}Las herramientas de MCP están disponibles en el modo agente de Continue. Consulta la documentación oficial de MCP de Continue.
Usa ~/.cursor/mcp.json para todos los proyectos o .cursor/mcp.json para un solo proyecto:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}Reinicia o actualiza el servidor de MCP desde los ajustes de Cursor después de editar el archivo. Consulta la documentación oficial de MCP de Cursor.
Añade el servidor a ~/.codeium/windsurf/mcp_config.json. Este ejemplo habilita un subconjunto de lanzamiento de 72 herramientas, por debajo del límite de 100 herramientas de Cascade:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp",
"args": [
"--workers",
"apps,builds,export_compliance,versions,reviews"
]
}
}
}También puedes deshabilitar herramientas individuales en el cliente. Se recomienda el filtrado de workers en el servidor porque mantiene el catálogo activo predecible. Consulta la documentación oficial de MCP de Devin Desktop.
[!IMPORTANT]
commanddebe apuntar al ejecutable real. Los clientes GUI a menudo no heredan alias de shell, cambios de PATH ni variables de entorno. Usa una ruta absoluta y prefiere el archivo de credencialescompanies.jsonpredeterminado.
Filtrado de workers
El servidor expone 502 herramientas en 33 dominios de herramientas de App Store + 2 dominios principales. Algunos clientes de MCP imponen un límite de herramientas; Cascade en Devin Desktop permite actualmente 100 herramientas activas. Usa las 35 claves de filtro --workers para habilitar solo los workers que necesites:
# Only load apps, builds, and version lifecycle tools
asc-mcp --workers apps,builds,versions
# App Store release preparation subset (99 tools, including always-on and build sub-workers)
asc-mcp --workers apps,accessibility,builds,export_compliance,versions,app_info,screenshots
# TestFlight review helpers can be loaded separately (49 tools)
asc-mcp --workers apps,builds,beta_app,pre_release
# Monetization focus
asc-mcp --workers apps,iap,subscriptions,pricing,promoted,review_submissionsLos workers company y auth están siempre habilitados independientemente del filtro (proporcionan funcionalidad principal de múltiples cuentas y autenticación).
Cuando builds está habilitado, incluye automáticamente los sub-workers build_processing y build_beta.
Modo de solo lectura
Usa --read-only cuando quieras una inspección segura sin mutaciones de App Store Connect:
asc-mcp --read-only
asc-mcp --read-only --workers apps,builds,reviews,analyticsEn este modo, las herramientas de lectura como *_list, *_get, *_search, *_status, *_verify, *_parse, *_triage, auth_*, análisis y métricas siguen disponibles. Las herramientas que pueden crear, actualizar, subir, enviar, publicar, eliminar, revocar, borrar, cancelar o mutar de otro modo App Store Connect se bloquean antes de que se ejecute su manejador de worker. company_switch sigue disponible porque solo cambia el contexto local de la empresa activa.
Contrato OpenAPI y herramientas de desviación
Usa el comando operation-contract para comparar el catálogo real de WorkerManager sin credenciales con el manifiesto semántico y la especificación OpenAPI fijada de Apple App Store Connect. El manifiesto de producción registra el operationId exacto de Apple, el método HTTP, la ruta, los enlaces de entrada con ámbito de invocación, los valores fijos tipados, el linaje de respuestas, los flujos de trabajo locales, el estado de implementación, los alias obsoletos y las operaciones diferidas deliberadamente. El comando no carga credenciales de App Store Connect ni inicia el servidor MCP.
rm -rf /tmp/asc-openapi
mkdir -p /tmp/asc-openapi
curl -L --fail -o /tmp/asc-openapi/spec.zip \
https://developer.apple.com/sample-code/app-store-connect/app-store-connect-openapi-specification.zip
spec_entry="$(unzip -Z1 /tmp/asc-openapi/spec.zip | grep -E '(^|/)openapi\.oas[^/]*\.json$')"
test "$(echo "$spec_entry" | grep -c .)" -eq 1
unzip -p /tmp/asc-openapi/spec.zip "$spec_entry" > /tmp/asc-openapi/openapi.oas.json
swift run asc-mcp openapi-contract-check \
--spec /tmp/asc-openapi/openapi.oas.json \
--json-output /tmp/asc-openapi/operation-contract.json \
--markdown-output /tmp/asc-openapi/operation-contract.md \
--strictEl manifiesto está fijado a Apple API 4.4.1 por versión, SHA-256, número de rutas y número de operaciones. Actualmente mapea 476 operaciones de Apple, difiere explícitamente 424 y excluye 363, cubriendo las 1.263 operaciones sin solapamiento. El CI falla cuando el documento de Apple cambia, una operación mapeada se mueve o desaparece, una herramienta o worker público se desvía del manifiesto, un campo de entrada pierde su enlace, el linaje de respuestas se vuelve inválido o una decisión diferida expira. Los parámetros opcionales de Apple no expuestos son advertencias para que sigan visibles en el backlog generado.
El esquema v2 del manifiesto también clasifica cada entrada opcional de consulta y cuerpo de solicitud de Apple como enlazada públicamente, controlada internamente, omitida intencionadamente con una razón revisada, o aún sin clasificar. El optionalInputCoveragePin confirmado registra los totales actuales exactos y un resumen SHA-256 de las identidades y disposiciones de entrada ordenadas; --strict rechaza un pin faltante o cualquier desviación a nivel de recuento o identidad. El pin hace que la remediación por fases sea auditable y segura frente a regresiones, pero no es una afirmación de que cada entrada opcional de Apple ya sea pública. El pin v4.1.3 es 2.905 en total: 1.122 enlazadas, 40 controladas internamente, 1.743 omitidas intencionadamente y 0 sin clasificar. Su SHA-256 de identidad es c975f4e4eebb62ec87864a73fbf72bb8841f644108e54e6ffb25168bcf2a2766.
--strict es la puerta de liberación en el momento del merge y del tag. Cada herramienta declarada como target o broken sigue siendo un error en los informes, y una prueba de regresión fija su estado exacto. La línea base actual no tiene implementaciones target ni broken ni desviación de implementación, por lo que cualquier implementación que abandone asBuilt, cualquier error estructural de contrato o cualquier desviación de cobertura de entradas opcionales bloquea tanto las fusiones como las liberaciones. --structural-strict sigue disponible solo para trabajo local de remediación por fases.
Esta puerta demuestra la identidad de la operación, la propiedad de los campos MCP de nivel superior, las entradas obligatorias de Apple, los valores internos tipados y el linaje de fuente/puntero de las respuestas. La paridad completa de tipos/enumeraciones/rangos de MCP y los esquemas de respuesta tipados completos siguen siendo fases de optimización separadas; el estado de mapeo actual es 469 parciales y 33 obsoletos.
El comando anterior openapi-coverage sigue disponible para el informe de dominio de alto nivel en ASC-OPENAPI-COVERAGE-GENERATED.md. El contrato de operación es la puerta de liberación autoritativa.
Nombres de workers disponibles:
Worker | Prefijo | Herramientas | Descripción |
|
| 3 | Gestión de múltiples cuentas |
|
| 4 | Herramientas de token JWT |
|
| 10 | Listado de apps, metadatos, localizaciones e IDs de palabras clave de búsqueda |
|
| 6 | Declaraciones de accesibilidad de App Store |
|
| 11 | Notificaciones webhook, diagnósticos de entrega y ayudantes de receptor |
|
| 42 | Productos de Xcode Cloud, gestión de flujos de trabajo, ejecuciones de compilación, artefactos, incidencias, resultados de pruebas y SCM |
|
| 4 | Gestión de compilaciones |
|
| 10 | Padres de carga de compilaciones, archivos, transferencias seguras y recuperación |
|
| 4 | Estados de compilación, cifrado |
|
| 11 | Declaraciones de cifrado, cargas de documentos, vinculación de compilaciones, preparación |
|
| 11 | Localizaciones de TestFlight, notificaciones |
|
| 17 | Ciclo de vida de versiones, clasificaciones por edad, envío, publicación |
|
| 8 | Reseñas de clientes y respuestas |
|
| 15 | Grupos de TestFlight y criterios de reclutamiento por enlace público |
|
| 8 | Capturas de pantalla de comentarios de TestFlight, envíos de fallos, registros de fallos |
|
| 12 | Gestión de evaluadores |
|
| 59 | Compras dentro de la app, metadatos versionados, precios, disponibilidad, códigos de oferta, recursos de revisión |
|
| 99 | Versiones de suscripciones y grupos, precios, disponibilidad de planes, ofertas, recursos |
|
| 3 | Evaluadores de sandbox |
|
| 10 | Localizaciones de apps beta y revisión |
|
| 3 | Versiones de prelanzamiento |
|
| 3 | Acuerdos de licencia beta |
|
| 17 | IDs de bundle, dispositivos, certificados |
|
| 10 | Información de la app, categorías, EULA |
|
| 9 | Territorios, precios |
|
| 10 | Miembros del equipo, roles |
|
| 9 | Eventos dentro de la app, localizaciones |
|
| 11 | Informes de ventas/financieros, analíticas |
|
| 19 | Capturas de pantalla, vistas previas, conjuntos y orden verificado |
|
| 17 | Páginas de producto personalizadas, versiones, localizaciones y palabras clave de búsqueda |
|
| 15 | Experimentos de optimización de página de producto, tratamientos y localizaciones |
|
| 10 | Compras dentro de la app promocionadas y orden verificado |
|
| 4 | Adjuntos de revisión de App Store |
|
| 9 | Envíos genéricos de revisión de App Store y elementos de envío |
|
| 9 | Métricas de rendimiento, diagnósticos y métricas de uso de TestFlight |
Tamaño del catálogo de herramientas
Cuando un cliente MCP carga con avidez cada definición de herramienta, la huella aproximada del esquema es:
Configuración | Herramientas | ~Tokens |
Todos los workers (predeterminado) | 502 | ~60,000 |
Flujo de trabajo de publicación: | ~72 | ~8,900 |
Monetización: | 184 | ~21,100 |
TestFlight: | ~63 | ~7,100 |
Marketing: | ~78 | ~8,800 |
| 17 | ~2,100 |
Workers más pesados: Subscriptions (99 herramientas), InAppPurchases (59 herramientas), Xcode Cloud (42 herramientas), Screenshots (19 herramientas), Provisioning (17 herramientas).
El coste exacto depende de la serialización del host MCP, el tokenizador y la estrategia de descubrimiento de herramientas. Los clientes modernos pueden diferir los esquemas hasta que se necesiten. Usa --workers cuando el cliente imponga un límite de herramientas o cuando quieras un catálogo más pequeño y centrado.
Herramientas disponibles
502 herramientas organizadas en 33 dominios de herramientas de App Store + 2 dominios principales (usa las 35 claves de filtro --workers — consulta Filtrado de workers):
Tool | Descripción |
| Lista todas las empresas configuradas |
| Cambia la empresa activa para operaciones de API |
| Obtiene información de la empresa activa actual |
Tool | Descripción |
| Genera un token JWT para acceso a la API |
| Valida localmente un JWT estándar de clave de equipo: firma ES256, |
| Fuerza la actualización del token JWT |
| Obtiene el estado de la caché del token JWT |
Tool | Descripción |
| Lista todas las aplicaciones con filtrado |
| Obtén información detallada de la aplicación |
| Busca aplicaciones por nombre o Bundle ID |
| Lista todas las versiones con sus estados |
| Obtén metadatos localizados para una versión |
| Lista los ID canónicos de palabras clave de búsqueda de App Store para la segmentación de páginas personalizadas |
| Actualiza metadatos (novedades, descripción, etc.) |
| Lista localizaciones con el estado del contenido |
| Elimina una localización de una versión |
Tool | Descripción |
| Lista las declaraciones de accesibilidad de una aplicación |
| Obtén una declaración de accesibilidad |
| Crea una declaración para una familia de dispositivos |
| Actualiza los indicadores de compatibilidad o publica una declaración |
| Elimina una declaración |
| Lista los ID de las relaciones de declaración de una aplicación |
Tool | Descripción |
| Lista los webhooks de una aplicación |
| Obtén un webhook por ID |
| Crea una configuración de webhook |
| Actualiza los campos del webhook |
| Elimina un webhook |
| Lista los intentos de entrega |
| Reentrega una entrega existente |
| Envía un ping de prueba |
| Verifica |
| Analiza y normaliza un payload de notificación de webhook sin procesar |
| Genera un plan de triaje accionable para eventos de webhook o fallos de entrega |
Tool | Descripción |
| Lista los productos de Xcode Cloud |
| Obtén un producto de Xcode Cloud |
| Previsualiza o elimina permanentemente un producto de Xcode Cloud con salvaguardas de confirmación |
| Obtén el producto de Xcode Cloud asociado a una aplicación |
| Obtén la aplicación asociada a un producto de Xcode Cloud |
| Lista los repositorios principales vinculados a un producto |
| Lista los repositorios adicionales vinculados a un producto |
| Lista los flujos de trabajo de un producto |
| Lista las ejecuciones de compilación de un producto |
| Obtén un flujo de trabajo |
| Crea un flujo de trabajo de Xcode Cloud |
| Actualiza un flujo de trabajo de Xcode Cloud |
| Previsualiza o elimina permanentemente un flujo de trabajo con salvaguardas de confirmación |
| Obtén el repositorio utilizado por un flujo de trabajo |
| Lista las ejecuciones de compilación de un flujo de trabajo |
| Obtén una ejecución de compilación |
| Inicia o reconstruye una compilación de Xcode Cloud |
| Lista las acciones de compilación de una ejecución |
| Lista las compilaciones de App Store Connect creadas por una ejecución |
| Obtén una acción de compilación |
| Obtén la ejecución de compilación propietaria de una acción de compilación |
| Lista los artefactos de una acción |
| Lista los problemas de una acción |
| Lista los resultados de pruebas de una acción |
| Obtén un artefacto |
| Obtén un problema |
| Obtén un resultado de prueba |
| Lista las versiones de Xcode disponibles |
| Obtén una versión de Xcode |
| Lista las versiones de macOS compatibles con una versión de Xcode |
| Lista las versiones de macOS disponibles |
| Obtén una versión de macOS |
| Lista las versiones de Xcode compatibles con una versión de macOS |
| Lista los proveedores de SCM |
| Obtén un proveedor de SCM |
| Lista los repositorios de un proveedor de SCM |
| Lista los repositorios de SCM |
| Obtén un repositorio de SCM |
| Lista las referencias git del repositorio |
| Lista las pull requests del repositorio |
| Obtén una referencia git |
| Obtén una pull request |
Tool | Descripción |
| Lista los envíos de comentarios sobre fallos beta |
| Obtén un envío de comentarios sobre fallos beta |
| Lee el registro de fallos de un envío |
| Lee el registro de fallos por ID de registro de fallos |
| Elimina un envío de comentarios sobre fallos beta |
| Lista los envíos de comentarios con capturas de pantalla beta |
| Obtén un envío de comentarios con captura de pantalla beta |
| Elimina un envío de comentarios con captura de pantalla beta |
Tool | Descripción |
| Lista las compilaciones con sus estados de procesamiento |
| Obtén información detallada de la compilación |
| Busca una compilación por número de versión |
| Obtén las compilaciones de una versión específica de la aplicación |
Herramienta | Descripción |
| Lista los padres de Build Upload de una app con filtros, campos dispersos, inclusiones y paginación estricta |
| Obtiene un Build Upload con diagnósticos de procesamiento y recursos incluidos opcionales |
| Crea un padre de Build Upload sin repetir un POST ambiguo |
| Elimina un padre de Build Upload tras la confirmación exacta del ID |
| Lista las reservas de archivos bajo un Build Upload con paginación estricta |
| Obtiene un archivo de Build Upload y su estado de entrega |
| Reserva un archivo exacto sin repetir un POST ambiguo |
| Confirma cambios de suma de verificación o estado de carga conservando por separado la omisión y el valor nulo |
| Transfiere una reserva nueva o existente desde una instantánea local inmutable |
| Ejecuta la creación del padre, la reserva, la transferencia, la confirmación y la conciliación de procesamiento |
Las cargas compuestas conservan la misma huella MD5 en minúsculas desde la reserva hasta la recuperación. Las instrucciones explícitas de reanudación y de continuación recuperada llevan expected_md5; la siguiente invocación verifica una nueva instantánea local inmutable contra ella antes de cualquier solicitud o transferencia a Apple. Una reserva existente ya marcada como UPLOAD_COMPLETE o COMPLETE solo se acepta cuando el MD5 de sourceFileChecksums.file de Apple coincide con esa instantánea; la evidencia faltante, no admitida o no coincidente se conserva para inspección sin otra transferencia, confirmación o eliminación. Las operaciones prefirmadas solo se reintentan cuando su método es PUT; las redirecciones, POST y los métodos desconocidos no se repiten. Si una creación ambigua se recupera de forma única, el flujo de trabajo se detiene y devuelve el ID de su recurso para una continuación explícita. Las credenciales de transferencia permanecen redactadas a menos que include_sensitive_details esté explícitamente habilitado en una lectura directa.
Herramienta | Descripción |
| Obtiene el estado de procesamiento actual |
| Establece el cumplimiento de cifrado |
| Obtiene el estado de procesamiento detallado |
| Comprueba si la compilación está lista para el envío |
Herramienta | Descripción |
| Lista las declaraciones de cifrado de una app con paginación estricta |
| Obtiene una declaración sin los campos obsoletos de URL de documento |
| Crea un cuestionario de declaración de cifrado para una app |
| Reserva, transfiere, confirma y consulta un documento desde una única instantánea local inmutable |
| Obtiene metadatos de entrega segura sin URL firmadas, tokens ni cabeceras de carga |
| Aplica un parche de bajo nivel de suma de verificación anulable o de estado de carga |
| Reanuda una reserva AWAITING_UPLOAD con los bytes exactos y su recibo MD5 en minúsculas |
| Inspecciona la presencia del documento y clasifica su estado de entrega |
| Obtiene la declaración actualmente adjunta a una compilación |
| Adjunta una declaración aprobada y verifica la relación |
| Evalúa únicamente la compuerta de liberación de cumplimiento de exportación de la compilación |
Herramienta | Descripción |
| Obtiene la configuración de TestFlight para la compilación |
| Actualiza la configuración de TestFlight |
| Establece Novedades para TestFlight |
| Lista todas las localizaciones de TestFlight |
| Obtiene los grupos beta de una compilación |
| Obtiene los evaluadores individuales de una compilación |
| Envía una notificación a los evaluadores beta |
| Añade la compilación a grupos beta |
| Añade evaluadores individuales a una compilación |
| Elimina evaluadores individuales de una compilación |
| Lista los evaluadores individuales asignados a una compilación |
Herramienta | Descripción |
| Lista los grupos beta de TestFlight de una app |
| Crea un nuevo grupo beta |
| Actualiza la configuración del grupo beta |
| Elimina un grupo beta |
| Añade evaluadores a un grupo beta |
| Elimina evaluadores de un grupo beta |
| Lista los evaluadores de un grupo beta |
| Añade compilaciones a un grupo beta |
| Elimina compilaciones de un grupo beta |
| Obtiene los criterios de reclutamiento de enlace público adjuntos a un grupo beta |
| Crea criterios de reclutamiento por familia de dispositivos y versión del sistema operativo |
| Reemplaza o borra explícitamente los filtros de reclutamiento |
| Elimina los criterios de reclutamiento tras la confirmación exacta del ID de criterio |
| Lista las familias de dispositivos y versiones del sistema operativo que Apple permite actualmente |
| Comprueba si un grupo tiene una compilación compatible con sus criterios |
Incluye herramientas de listado/búsqueda/obtención/creación/eliminación de evaluadores, relaciones de app, invitaciones, asignación a grupos beta, asignación de compilaciones y eliminación de la app.
Herramienta | Descripción |
| Crea una nueva versión de la app |
| Lista versiones con filtrado por estado |
| Obtiene información detallada de la versión |
| Lee el cuestionario de clasificación por edades de App Info |
| Lista las clasificaciones por edades calculadas por territorio |
| Actualiza los atributos de la versión |
| Adjunta la compilación a la versión |
| Envía para revisión en App Store |
| Cancela la revisión en curso |
| Publica la versión aprobada |
| Crea un despliegue gradual |
| Obtiene la información y el ID del despliegue gradual |
| Pausa/reanuda/completa el despliegue |
| Elimina un despliegue gradual planificado elegible con confirmación exacta del ID y seguridad ante resultados desconocidos |
| Establece la información de contacto del revisor |
| Configura la declaración de clasificación por edades |
| Elimina una versión de app editable con confirmación exacta del ID y seguridad ante resultados desconocidos |
Tool | Description |
| Obtener reseñas con filtrado y paginación |
| Obtener detalles de una reseña específica |
| Obtener reseñas de una versión específica |
| Estadísticas agregadas de reseñas |
| Responder a una reseña de cliente |
| Eliminar una respuesta |
| Obtener la respuesta de una reseña |
| Resumir temas y valoraciones de reseñas |
Tool | Description |
| Listar compras dentro de la app de una aplicación |
| Obtener detalles del IAP |
| Crear un nuevo IAP |
| Actualizar atributos del IAP |
| Eliminar un IAP |
| Listar localizaciones del IAP |
| Crear localización del IAP |
| Actualizar localización del IAP |
| Eliminar localización del IAP |
| Enviar el IAP para revisión |
| Listar grupos de suscripción |
| Obtener detalles del grupo de suscripción |
| Inventario de IAP apto para IA de una aplicación |
| Listar puntos de precio según territorio |
| Listar ecualizaciones de puntos de precio |
| Obtener programación de precios |
| Establecer programación de precios |
| Resumir precios actuales y programados |
| Encontrar candidatos a puntos de precio para ofertas |
| Establecer disponibilidad por territorio |
| Obtener disponibilidad por IAP o ID de disponibilidad |
| Listar territorios disponibles |
| Obtener estado de compra promocionada |
| Listar códigos de oferta del IAP |
| Obtener un código de oferta del IAP |
| Crear un código de oferta del IAP |
| Actualizar un código de oferta del IAP |
| Desactivar un código de oferta del IAP |
| Listar precios de oferta según territorio |
| Generar códigos de oferta de un solo uso |
| Listar lotes de códigos de un solo uso |
| Obtener un lote de códigos de un solo uso |
| Actualizar un lote de códigos de un solo uso |
| Desactivar un lote de códigos de un solo uso |
| Obtener valores de códigos de un solo uso generados |
| Crear un código de oferta personalizado |
| Obtener detalles del código personalizado |
| Actualizar un código personalizado |
| Desactivar un código personalizado |
| Obtener captura de revisión |
| Subir captura de revisión |
| Eliminar captura de revisión |
| Subir imagen promocional |
| Obtener imagen promocional |
| Eliminar imagen promocional |
| Listar imágenes promocionales |
| Crear una versión de metadatos del IAP revisable |
| Obtener una versión del IAP y su estado de revisión |
| Listar versiones revisables de un IAP |
| Listar localizaciones propiedad de una versión del IAP |
| Crear una localización para una versión del IAP |
| Obtener una localización de versión del IAP |
| Actualizar texto anulable en una localización de versión del IAP |
| Eliminar una localización de versión del IAP |
| Obtener la imagen singular relacionada con una versión del IAP |
| Listar todos los recursos de imagen propiedad de una versión del IAP con soporte estricto de continuación |
| Subir, confirmar y conciliar una imagen de versión del IAP inmutable |
| Obtener un recurso de imagen del IAP con ámbito de versión |
| Eliminar una imagen del IAP con ámbito de versión |
Las herramientas heredadas de localización, envío e imagen con ámbito de producto siguen siendo invocables por compatibilidad. Apple 4.4.1 deja obsoletas iap_list_localizations, iap_create_localization, iap_update_localization, iap_delete_localization, iap_submit_for_review, iap_upload_image, iap_get_image, iap_delete_image y iap_list_images; las respuestas correctas identifican las herramientas de reemplazo versionadas. Para la creación de localizaciones, la subida de imágenes promocionales y el envío para revisión, usa primero iap_list_versions, llama a iap_create_version solo cuando se necesite una nueva versión de metadatos y pasa ese ID de versión a la herramienta versionada posterior. Estas llamadas de compatibilidad nunca crean ni seleccionan una versión automáticamente.
Si Apple puede haber aceptado una creación de versión o de localización de versión, pero la respuesta se pierde o no se puede decodificar, la herramienta devuelve write_outcome: not_confirmed y retrySafe: false con la identidad solicitada y pasos de inspección list/get. Inspecciona antes de reintentar para evitar recursos de metadatos duplicados.
Incluye versiones de metadatos de suscripción y de grupo, localizaciones e imágenes propiedad de la versión, disponibilidad según tipo de plan, precios según territorio, puntos de precio y ecualizaciones ajustadas, lecturas de compras promocionadas, asistentes de inventario/precios, ofertas de introducción, ofertas promocionales, códigos de oferta, códigos de un solo uso/personalizados, ofertas de recuperación y capturas de revisión. Toda la funcionalidad pública anterior de offer_codes_*, intro_offers_*, promo_offers_* y winback_* se expone a través de subscriptions_*.
Apple 4.4.1 también deja obsoletas las herramientas heredadas de localización, imagen y envío con ámbito de producto o grupo. Siguen siendo invocables por compatibilidad, devuelven una guía explícita de reemplazo en caso de éxito y nunca crean ni seleccionan una versión de metadatos automáticamente. Las nuevas integraciones deben usar subscriptions_create_version o subscriptions_create_group_version, las herramientas correspondientes de localización/imagen de versión y el flujo de trabajo genérico review_submissions_*.
Las creaciones de versión de suscripción, versión de grupo, localización y disponibilidad de plan usan el mismo contrato de recuperación no idempotente: una escritura ambigua de Apple devuelve write_outcome: not_confirmed, retrySafe: false, la huella solicitada y una guía de inspección determinista de colección/obtención.
Los siguientes nombres siguen disponibles por compatibilidad, pero Apple 4.4.1 deja obsoleta su recurso heredado subscriptionAvailability en favor de subscriptionPlanAvailabilities según tipo de plan:
Herramienta | Estado de compatibilidad |
| Lectura de disponibilidad heredada obsoleta |
| Escritura de disponibilidad heredada obsoleta |
| Listado de territorios heredado obsoleto |
| Asistente obsoleto; puede omitir suscripciones más allá de la primera página de relaciones incluida y no es un inventario completo autoritativo |
Herramienta | Descripción |
| Listar probadores de sandbox |
| Actualizar la configuración de los probadores de sandbox |
| Borrar el historial de compras de los probadores de sandbox |
Herramienta | Descripción |
| Listar localizaciones de la app beta |
| Crear localización de la app beta |
| Obtener localización de la app beta |
| Actualizar localización de la app beta |
| Eliminar localización de la app beta |
| Enviar compilación para revisión beta |
| Listar envíos de revisión beta |
| Obtener envío de revisión beta |
| Obtener detalles de revisión de la app beta |
| Actualizar detalles de revisión de la app beta |
Incluye listado de versiones de prelanzamiento, detalles y compilaciones asociadas.
Incluye listado, obtención y actualización de acuerdos de licencia beta.
Herramienta | Descripción |
| Listar identificadores de bundle registrados |
| Obtener detalles del ID de bundle |
| Registrar un nuevo identificador de bundle |
| Eliminar un identificador de bundle |
| Listar dispositivos registrados |
| Registrar un nuevo dispositivo (UDID) |
| Actualizar el nombre o el estado del dispositivo |
| Listar certificados de firma |
| Obtener detalles del certificado |
| Revocar un certificado |
| Listar perfiles de aprovisionamiento |
| Obtener detalles del perfil |
| Eliminar un perfil |
| Crear un perfil de aprovisionamiento |
| Listar capacidades del ID de bundle |
| Activar una capacidad |
| Desactivar una capacidad |
Incluye herramientas de listado/obtención/actualización de información de la app, localizaciones de información de la app y obtención/creación/actualización de EULA.
Incluye herramientas de territorios, disponibilidad, puntos de precio, programaciones de precios y disponibilidad de App Store v2.
Incluye listado/obtención/actualización/eliminación de miembros del equipo, invitaciones, apps visibles y actualizaciones de relaciones de apps visibles.
Incluye CRUD de eventos dentro de la app, además de listado/creación/actualización/eliminación de localizaciones de eventos.
Incluye herramientas de ventas, finanzas, resumen de la app, solicitud de informes de analíticas, informes, instancias, instantáneas y segmentos.
Herramienta | Descripción |
| Listar conjuntos de capturas de pantalla |
| Obtener un conjunto de capturas de pantalla por ID |
| Crear un conjunto de capturas de pantalla |
| Eliminar un conjunto de capturas de pantalla |
| Listar capturas de pantalla en un conjunto |
| Subir una captura de pantalla |
| Obtener detalles de la captura de pantalla |
| Eliminar una captura de pantalla |
| Reordenar capturas de pantalla en un conjunto |
| Listar conjuntos de vistas previas de la app |
| Obtener un conjunto de vistas previas de la app por ID |
| Crear un conjunto de vistas previas |
| Eliminar un conjunto de vistas previas |
| Subir una vista previa de la app |
| Obtener detalles de la vista previa |
| Listar vistas previas en un conjunto de vistas previas |
| Reordenar cada vista previa en un conjunto con verificación de pertenencia y posterior al vuelo |
| Subir capturas de pantalla en lote |
| Eliminar una vista previa |
Herramienta | Descripción |
| Listar páginas de producto personalizadas |
| Obtener detalles de la página |
| Crear una página personalizada |
| Actualizar una página personalizada |
| Eliminar una página personalizada |
| Listar versiones de la página |
| Obtener una versión de la página por ID |
| Crear una versión de la página |
| Actualizar una versión de la página |
| Listar localizaciones de la versión |
| Obtener una localización por ID |
| Crear una localización |
| Actualizar una localización |
| Eliminar una localización tras confirmación exacta |
| Listar IDs de palabras clave de búsqueda asignados a una localización |
| Añadir relaciones de palabras clave de búsqueda |
| Eliminar relaciones de palabras clave de búsqueda tras confirmación exacta |
Herramienta | Descripción |
| Listar experimentos de pruebas A/B |
| Listar experimentos V2 para una versión de App Store |
| Obtener detalles del experimento |
| Crear un experimento |
| Actualizar/iniciar/detener experimento |
| Eliminar un experimento |
| Listar tratamientos del experimento |
| Obtener un tratamiento por ID |
| Crear una variante de tratamiento |
| Actualizar una variante de tratamiento |
| Eliminar un tratamiento tras confirmación exacta |
| Listar localizaciones de tratamientos |
| Obtener una localización de tratamiento por ID |
| Crear localización de tratamiento |
| Eliminar una localización de tratamiento tras confirmación exacta |
Tool | Description |
| Lista de compras promocionadas para una app |
| Obtener detalles de la promoción |
| Crear una promoción |
| Actualizar la visibilidad de la promoción o el estado habilitado |
| Eliminar una promoción |
| Reemplazar y verificar el orden completo de compras promocionadas para una app |
| Obsoleto: devuelve orientación de migración; el endpoint no está presente en Apple OpenAPI 4.4.1 fijado |
| Obsoleto: devuelve orientación de migración; el endpoint no está presente en Apple OpenAPI 4.4.1 fijado |
| Obsoleto: devuelve orientación de migración; el endpoint no está presente en Apple OpenAPI 4.4.1 fijado |
| Obsoleto: devuelve orientación de migración; la relación no está presente en Apple OpenAPI 4.4.1 fijado |
Incluye herramientas de carga, obtención, eliminación y listado de adjuntos de revisión de App Store.
Tool | Description |
| Listar envíos de revisión genéricos para una app |
| Obtener un envío de revisión genérico |
| Crear un envío de revisión genérico para una app y plataforma |
| Listar elementos adjuntos a un envío de revisión |
| Adjuntar una versión de recurso revisable a un envío |
| Actualizar el estado anulable |
| Eliminar un elemento de un envío |
| Enviar todos los elementos adjuntos para revisión |
| Cancelar un envío de revisión genérico enviado |
review_submissions_add_item informa éxito solo cuando la respuesta de Apple confirma un ID de elemento válido y exactamente el nombre de relación solicitado, el tipo JSON:API y el ID de recurso. Cualquier discrepancia se devuelve como una escritura no confirmada con pasos de recuperación del envío y la lista de elementos.
Tool | Description |
| Obtener métricas de rendimiento/energía de la app |
| Obtener métricas de rendimiento de la compilación |
| Listar diagnósticos para una compilación |
| Obtener registros de diagnóstico |
| Obtener métricas de fallos, sesiones y comentarios de TestFlight de la app por probador beta |
| Obtener métricas de fallos, sesiones y comentarios de TestFlight del grupo beta por probador beta |
| Obtener vistas de enlace público, resultados de aceptación, fallos de criterios y proporciones de encuestas |
| Obtener métricas de uso de TestFlight de un probador dentro de una app |
| Obtener métricas de fallos, instalaciones, sesiones, comentarios e invitaciones de TestFlight de la compilación |
Ejemplos de uso
Flujo de trabajo de lanzamiento completo
You: "Release version 2.2.0 of my app with build 456"
Claude will:
1. app_versions_create(app_id, platform: "IOS", version_string: "2.2.0")
2. app_versions_attach_build(version_id, build_id)
3. app_versions_set_review_details(version_id, contact_email: "...")
4. app_versions_submit_for_review(version_id)
5. app_versions_create_phased_release(version_id) # after approvalDistribución de TestFlight
You: "Create a beta group 'External Testers' and distribute the latest build"
Claude will:
1. beta_groups_create(app_id, name: "External Testers")
2. builds_list(app_id, limit: 1) # find latest
3. builds_set_beta_localization(build_id, locale: "en-US", whats_new: "...")
4. beta_groups_add_testers(group_id, tester_ids: [...])Gestión de revisiones
You: "Show me all 1-star reviews from the last week and draft responses"
Claude will:
1. reviews_list(app_id, rating: 1, sort: "-createdDate", limit: 50)
2. reviews_create_response(review_id, response_body: "...") # for eachFlujo de trabajo multiempresa
You: "Switch to ClientCorp and check their latest build status"
Claude will:
1. company_switch(company: "ClientCorp")
2. apps_list(limit: 5)
3. builds_list(app_id, limit: 1)
4. builds_get_processing_state(build_id)Restricciones de la API
Restricción | Detalles |
Sin emojis | Los campos de metadatos (What's New, Description, Keywords) no deben contener caracteres emoji |
Estado de versión | App Store Connect valida los estados editables para las actualizaciones de metadatos. Las versiones rechazadas y rechazadas por metadatos se pueden editar para reenviarlas; las versiones publicadas o en revisión pueden ser rechazadas por Apple. |
Caducidad de JWT | Los tokens caducan después de 20 minutos: el servidor los actualiza automáticamente |
Límites de frecuencia | Apple aplica límites de frecuencia por cuenta (documentación) |
Formato de configuración regional | Usa códigos estándar: |
Arquitectura
Sources/asc-mcp/
├── EntryPoint.swift # Entry point, --workers filtering
├── Core/
│ ├── Application.swift # MCP server setup & initialization
│ └── ASCError.swift # Custom error types
├── Helpers/ # JSON formatting, pagination, safe helpers
├── Models/ # API request/response models
│ ├── AppStoreConnect/ # Apps, versions, localizations
│ ├── Builds/ # Builds, beta details, beta groups
│ ├── AppLifecycle/ # Version lifecycle models
│ ├── InAppPurchases/ # IAP models
│ ├── Subscriptions/ # Subscriptions, offer codes, win-back
│ ├── Marketing/ # Screenshots, custom pages, PPO, promoted
│ ├── Metrics/ # Performance metrics, diagnostics
│ ├── Analytics/ # Sales/financial reports
│ ├── Provisioning/ # Bundle IDs, devices, certificates
│ ├── Shared/ # Shared upload/image types
│ └── ... # AppEvents, AppInfo, Pricing, Users
├── Services/
│ ├── HTTPClient.swift # Actor-based HTTP with retry logic
│ ├── JWTService.swift # ES256 JWT token generation
│ └── CompaniesManager.swift # Multi-account management
└── Workers/ # MCP tool implementations (39 Swift worker classes + MainWorker router)
├── MainWorker/WorkerManager # Central tool registry & routing
├── CompaniesWorker/ # company_* tools
├── AuthWorker/ # auth_* tools
├── AppsWorker/ # apps_* tools
├── AccessibilityWorker/ # accessibility_* tools
├── WebhooksWorker/ # webhooks_* tools
├── XcodeCloudWorker/ # xcode_cloud_* tools
├── BuildsWorker/ # builds_* tools
├── BuildUploadsWorker/ # build_uploads_* tools
├── BuildProcessingWorker/ # builds_*_processing tools
├── ExportComplianceWorker/ # export_compliance_* tools
├── BuildBetaDetailsWorker/ # builds_*_beta_* tools
├── AppLifecycleWorker/ # app_versions_* tools
├── ReviewsWorker/ # reviews_* tools
├── BetaGroupsWorker/ # beta_groups_* tools
├── BetaFeedbackWorker/ # beta_feedback_* tools
├── BetaTestersWorker/ # beta_testers_* tools
├── InAppPurchasesWorker/ # iap_* tools
├── SubscriptionsWorker/ # subscriptions_* tools
├── OfferCodesWorker/ # subscriptions offer-code tools
├── IntroductoryOffersWorker/ # subscriptions intro-offer tools
├── PromotionalOffersWorker/ # subscriptions promotional-offer tools
├── WinBackOffersWorker/ # subscriptions win-back tools
├── SandboxTestersWorker/ # sandbox_* tools
├── BetaAppWorker/ # beta_app_* tools
├── PreReleaseVersionsWorker/ # pre_release_* tools
├── BetaLicenseAgreementsWorker/ # beta_license_* tools
├── ProvisioningWorker/ # provisioning_* tools
├── AppInfoWorker/ # app_info_* tools
├── PricingWorker/ # pricing_* tools
├── UsersWorker/ # users_* tools
├── AppEventsWorker/ # app_events_* tools
├── AnalyticsWorker/ # analytics_* tools
├── ScreenshotsWorker/ # screenshots_* tools
├── CustomProductPagesWorker/ # custom_pages_* tools
├── ProductPageOptimizationWorker/ # ppo_* tools
├── PromotedPurchasesWorker/ # promoted_* tools
├── ReviewAttachmentsWorker/ # review_attachments_* tools
├── ReviewSubmissionsWorker/ # review_submissions_* tools
└── MetricsWorker/ # metrics_* toolsPrincipios de diseño
Concurrencia estricta de Swift 6 — todos los workers y servicios son
Sendable, con un aislamiento de actor adecuadoCliente HTTP basado en actores — seguro para subprocesos con retroceso exponencial y lógica de reintento
Enrutamiento basado en prefijos —
WorkerManagerenruta las llamadas de herramientas por prefijo de nombre (configuración cero)Dependencias mínimas — solo el MCP Swift SDK
Solución de problemas
Ejecuta
~/.mint/bin/asc-mcp --versionpara verificar la instalación independientemente del cliente MCP.Verifica que el cliente MCP use la ruta absoluta al ejecutable instalado.
Para Codex, ejecuta
codex mcp listycodex mcp get asc-mcp --json.Para Claude Code, ejecuta
claude mcp get asc-mcpyclaude mcp list.Comprueba el archivo
companies.jsonconfigurado o las variables de entorno utilizadas por tu configuración elegida.Asegúrate de que cada ruta de clave
.p8sea absoluta y que el archivo exista.Reinicia los clientes GUI después de cambiar su configuración de MCP y luego inspecciona el registro de salida de MCP del cliente.
Verifica que tu Key ID e Issuer ID coincidan con lo que se muestra en App Store Connect
Asegúrate de que el archivo
.p8sea la descarga original (no modificado)Comprueba que la clave de API no haya sido revocada
Los tokens JWT se actualizan automáticamente, pero si la clave no es válida, todas las solicitudes fallarán
apps_update_metadata envía el PATCH de metadatos a App Store Connect después de la validación local de texto, configuración regional y URL. Apple decide si el estado actual de la versión es editable. Las versiones rechazadas y rechazadas por metadatos se pueden editar y reenviar; las versiones publicadas, en revisión o bloqueadas de otro modo pueden devolver un error de la API de Apple.
Usa builds_get_processing_status para inspeccionar el estado de procesamiento actual y builds_check_readiness para verificar la disponibilidad de App Store/TestFlight. El procesamiento de compilaciones de Apple suele tardar de 5 a 30 minutos, pero puede ser más largo en horas punta.
El cliente HTTP reintenta automáticamente con retroceso exponencial en respuestas 429. Si alcanzas los límites de forma constante, reduce la frecuencia de las llamadas a la API o usa la paginación con tamaños de página más pequeños.
Obteniendo ayuda
Antes de abrir un informe, busca en los problemas existentes. Si el problema es nuevo, abre un problema e incluye:
versión de macOS y método de instalación;
nombre y versión del cliente MCP;
el valor de
--workersseleccionado, si lo hay;el mensaje de error exacto y la solicitud reproducible más pequeña.
Elimina Key IDs, Issuer IDs, claves privadas, URL firmadas, tokens y datos de cuenta de los registros antes de publicarlos. Informa las vulnerabilidades de seguridad de forma privada siguiendo SECURITY.md. Para contribuciones de código, consulta CONTRIBUTING.md.
Desarrollo
Compilación
swift build # Debug build
swift build -c release # Release build (optimized)
swift package clean # Clean build artifactsModo de prueba
.build/debug/asc-mcp --test # Runs built-in integration testsAñadir una nueva herramienta
Crea el método de manejo en el
Worker+Handlers.swiftcorrespondienteAñade la definición de la herramienta en
Worker+ToolDefinitions.swiftRegístrala en el método
getTools()del workerAñade el caso de enrutamiento en el switch
handleTool()del workerEl
WorkerManagerenruta automáticamente por prefijo: no se necesitan cambios allí
Añadir un nuevo worker
Crea el directorio:
Workers/MyWorker/Crea 3 archivos:
MyWorker.swift,MyWorker+ToolDefinitions.swift,MyWorker+Handlers.swiftAñade la propiedad del worker y la inicialización en
WorkerManager.swiftAñade la regla de enrutamiento en
WorkerManager.registerWorkers()Añade el método auxiliar
getMyTools()
Contribuciones
¡Agradecemos las contribuciones! Consulta la Guía de contribución para obtener más detalles.
Licencia
Este proyecto está licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para obtener más detalles.
Agradecimientos
Model Context Protocol — la especificación del protocolo y el Swift SDK
App Store Connect API — la API REST oficial de Apple
Esta es una herramienta no oficial mantenida por la comunidad y no está afiliada ni respaldada por Apple Inc.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
- app-managerOAuthapp.lance
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
Meta Ads and Google Ads MCP server: 250+ tools for Claude, ChatGPT, Cursor and Codex.
Related MCP Servers
- AlicenseAqualityBmaintenanceA Model Context Protocol (MCP) server for Apple's App Store Connect API. Manage your iOS, macOS, tvOS, and visionOS apps directly from Claude, Cursor, or any MCP-compatible client.52899 npm22MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server that connects Cursor, Claude Desktop, and other MCP clients to the official App Store Connect API—so you can manage iOS/macOS apps, TestFlight, in-app subscriptions, and store metadata via chat or automated tool calls.6951 npm13MIT
- AlicenseAqualityAmaintenanceAn opinionated MCP server for App Store Connect that provides 13 curated tools, slash-command workflows, and a Claude Skill to manage apps, reviews, sales, and pre-submission audits via natural language.41263 npm1MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that exposes the entire Apple App Store Connect API (1,200+ operations) as MCP tools, enabling AI assistants to query apps, manage builds, handle submissions, read analytics, and more.6 npmMIT