Skip to main content
Glama
imfaisii

App Store Connect MCP Server

by imfaisii

App Store Connect MCP Server

Полный API App Store Connect в виде MCP-сервера. 1 263 операции, сгенерированные напрямую из официальной спецификации OpenAPI от Apple, доступные в Claude Code, Claude Desktop, Cursor и любом другом клиенте Model Context Protocol через всего 4 эффективных по токенам инструмента.

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


Что такое App Store Connect MCP server?

app-store-connect-mcp — это open source сервер Model Context Protocol (MCP) для API App Store Connect. Установите его один раз, и ваш ИИ-агент сможет читать и записывать всё, что Apple предоставляет для ваших приложений и вашего аккаунта разработчика:

Листинги и метаданные App Store · сборки TestFlight, бета-группы и тестировщики · покупки внутри приложения · автоматически продлеваемые подписки, предложения и win-back предложения · таблицы лидеров Game Center, достижения и подбор соперников · рабочие процессы и сборки Xcode Cloud · профили подготовки, сертификаты, bundle ID и устройства · отправки на ревью App Review и детали ревью · отзывы клиентов и ответы на них · цены, доступность и территории · отчёты о продажах, финансах и аналитике · пользователи, роли и приглашения · App Clips, фоновые ресурсы и альтернативное распространение.

Большинство MCP-серверов App Store Connect вручную оборачивают два-три десятка конечных точек, а затем устаревают. Этот сервер сгенерирован из опубликованной спецификации OpenAPI от Apple, поэтому покрытие охватывает всю документированную поверхность, и он остаётся актуальным одной командой bun run generate.

В этом репозитории нет учётных данных. Вы предоставляете свой собственный ключ API App Store Connect во время выполнения через переменные окружения. Ничего не встраивается, не логируется и не передаётся никуда, кроме Apple.

Содержание


Related MCP server: App Store Connect MCP

Краткий обзор

Что это

MCP-сервер для полного API App Store Connect

Версия API

App Store Connect API 4.4.1 (OpenAPI 3.0.1)

Операций в каталоге

1 263 — по одной на путь + метод

Путей API

966

Тегов ресурсов

195

Зарегистрировано MCP-инструментов

4 мета-инструмента: asc_search, asc_schema, asc_call, asc_tags

Разбивка по методам

797 GET · 176 POST · 158 PATCH · 132 DELETE

Источник истины

ZIP-файл OpenAPI от Apple, включённый в репозиторий по адресу openapi/app-store-connect.openapi.json

Аутентификация

ES256 JWT, создаваемый во время выполнения из Issuer ID + Key ID + приватного ключа .p8

Базовый URL

https://api.appstoreconnect.apple.com (можно переопределить)

Транспорт

stdio

Среда выполнения

Bun 1.1+ и @modelcontextprotocol/sdk

Лицензия

MIT


Почему 4 инструмента вместо 1 263

Регистрация каждой операции OpenAPI как отдельного MCP-инструмента выгружает 1 263 полных JSON-схемы в контекстное окно модели. Это порядка сотен тысяч токенов, сожжённых до того, как агент выполнит какую-либо реальную работу — а многие клиенты просто отказываются принимать или обрезают такой большой список инструментов.

Этот сервер держит полный каталог внутренним и предоставляет поверх него небольшой стабильный интерфейс:

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)

Агент платит ровно за ту схему, которую собирается использовать, и ни за что больше. Типичный трёхшаговый процесс стоит несколько тысяч токенов вместо нескольких сотен тысяч.

Запасной выход (только для отладки)

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

Оставьте эту переменную неустановленной при обычном использовании. Она существует для отладки спецификации и чрезвычайно дорога по контексту.


Четыре MCP-инструмента

Полнотекстовый поиск по operationId, имени, пути, тегам, методу и описанию. Возвращает ранжированные результаты без JSON-схем.

Параметр

Тип

Обязательный

Описание

query

string

необязательный*

Свободный текст, например "list apps", "beta testers", "sales reports", "/v1/builds"

tag

string

необязательный*

Точный фильтр по тегу OpenAPI, например Apps, Builds, BetaGroups

method

string

необязательный

GET, POST, PATCH, DELETE, PUT

limit

integer

необязательный

Максимум результатов, по умолчанию 15, максимум 50

* Как минимум один из query, tag или method.

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

asc_schema — опишите одну операцию

Возвращает полную входную JSON-схему операции, список её параметров пути, список параметров запроса и callHint, показывающий, как её вызвать.

Параметр

Тип

Обязательный

Описание

operation

string

да

OperationId или сгенерированное имя инструмента, например apps_getCollection

asc_call — выполните операцию

Параметр

Тип

Обязательный

Описание

operation

string

да

OperationId или сгенерированное имя инструмента

args

object

необязательный

Параметры пути, параметры запроса, body, _dryRun. Дополнительные свойства разрешены

_dryRun

boolean

необязательный

Разрешить метод/путь/запрос/тело без обращения к Apple

Поля пути и запроса работают как вложенные внутри args, так и как ключи верхнего уровня рядом с operation. Записи JSON:API помещаются в 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 — ориентируйтесь внутри API

Параметр

Тип

Обязательный

Описание

limit

integer

необязательный

Максимум тегов, по умолчанию все 195, отсортированы по количеству операций

Обработка ответов

  • JSON-ответы возвращаются в разобранном виде.

  • Ответы CSV, XML и text возвращаются как текст.

  • Gzip и бинарные загрузки (финансовые отчёты, отчёты о продажах) возвращаются в base64 с encoding, contentType, byteLength и примечанием о декодировании.

  • Ответы длиной более ~120 000 символов обрезаются с подсказкой сузить filter[…], fields[…] или limit.

  • HTTP 4xx/5xx отображаются как ошибки MCP с сохранением тела ошибки Apple, чтобы агент мог прочитать строку detail от Apple и самостоятельно исправиться.


Покрытие: каждый ресурс App Store Connect

Все 1 263 операции по 195 тегам ресурсов. Количество указано как операции на тег.

Приложения, листинги и метаданные App Store — ~250 операций

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 и бета-тестирование — ~90 операций

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)

Сборки и загрузка — ~50 операций

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

Покупки и подписки внутри приложения — ~200 операций

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 операций

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) · плюс версии достижений/таблиц лидеров/активностей/испытаний, изображения, релизы, команды подбора игроков, тесты наборов правил, отправки записей и отправки достижений игроков

Xcode Cloud (непрерывная интеграция) — ~50 операций

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)

Сертификаты, идентификаторы и профили — ~45 операций

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

App Review и отправки — ~20 операций

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

Ценообразование, доступность и территории — ~25 операций

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

Отчёты и аналитика — ~15 операций

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

Отзывы покупателей — 6 операций

CustomerReviews (3) · CustomerReviewResponses (3)

Пользователи и доступ — ~15 операций

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

App Clips — ~30 операций

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

Фоновые ресурсы — ~15 операций

BackgroundAssets (5) · BackgroundAssetVersions (4) · BackgroundAssetUploadFiles (3) · плюс конечные точки релизов App Store, внутреннего и внешнего бета-тестирования

Альтернативное распространение (DMA в ЕС) — ~15 операций

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

Вебхуки — 8 операций

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

Запустите asc_tags в любой момент, чтобы получить актуальный точный список.


Требования

  • Bun версии 1.1 или новее

  • Ключ API App Store Connect: Issuer ID, Key ID и файл закрытого ключа .p8

  • MCP-клиент, поддерживающий stdio: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code с MCP-расширением, Zed или ваш собственный агент


Получите ключ API App Store Connect

  1. Войдите в App Store Connect.

  2. Перейдите в Users and Access → Integrations → App Store Connect API.

  3. Нажмите +, чтобы сгенерировать ключ. Выберите наименьшую роль, покрывающую ваш сценарий использования (Developer, App Manager или Admin для управления пользователями).

  4. Скопируйте Issuer ID (UUID, отображается один раз в верхней части страницы).

  5. Скопируйте Key ID (10 символов).

  6. Скачайте файл закрытого ключа .p8. Apple позволяет скачать его только один раз. Храните его вне вашего репозитория, например ~/.appstoreconnect/AuthKey_XXXXXXXXXX.p8, и выполните chmod 600 для него.

Пошаговая инструкция от Apple: Creating API keys for App Store Connect API.


Установка в 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

Зарегистрируйте сервер глобально:

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

Проверьте и перезапустите:

claude mcp get app-store-connect
claude mcp list

Начните новую сессию Claude Code. Инструменты появятся как mcp__app-store-connect__asc_search, …asc_schema, …asc_call и …asc_tags.


Установка в Claude Desktop

Добавьте это в 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"
      }
    }
  }
}

Перезапустите Claude Desktop.


Установка в Cursor, Windsurf, VS Code и другие MCP-клиенты

Подойдёт любой клиент, запускающий stdio MCP-сервер. Формат всегда одинаков — mcp.example.json в этом репозитории — готовый шаблон для копирования.

Cursor~/.cursor/mcp.json (глобально) или .cursor/mcp.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"
      }
    }
  }
}

Windsurf~/.codeium/windsurf/mcp_config.json, тот же блок mcpServers.

VS Code.vscode/mcp.json с блоком servers, использующим те же command, args и env.

Ваш собственный агент — запустите bun run src/index.ts и общайтесь по MCP через stdio. Будет выглядеть, будто он завис в обычном терминале; это stdio-сервер, ожидающий клиента, и это нормально.


Переменные окружения

Переменная

Обязательная

Назначение

ASC_ISSUER_ID

да

Issuer ID (UUID) из App Store Connect

ASC_KEY_ID

да

Key ID (10 символов)

ASC_PRIVATE_KEY_PATH

да*

Абсолютный путь к файлу закрытого ключа .p8

ASC_PRIVATE_KEY

да*

Содержимое PEM в одну строку, вместо пути к файлу (удобно в CI)

ASC_BASE_URL

нет

По умолчанию https://api.appstoreconnect.apple.com

ASC_EXPOSE_ALL_TOOLS

нет

1 регистрирует все 1 263 операции как отдельные MCP-инструменты. Только для отладки

* Укажите ровно одну из переменных ASC_PRIVATE_KEY_PATH или ASC_PRIVATE_KEY.

Эти псевдонимы также принимаются: APP_STORE_CONNECT_ISSUER_ID, APP_STORE_CONNECT_KEY_ID, APP_STORE_CONNECT_PRIVATE_KEY_PATH, APP_STORE_CONNECT_PRIVATE_KEY.

Скопируйте .env.example в .env для локальных оболочек. .env* и *.p8 уже находятся в .gitignore.


Как агент использует сервер

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 } }

Для любых операций записи сначала выполните пробный запуск:

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

_dryRun возвращает разрешённый метод, путь, параметры пути, запрос и тело без обращения к Apple, чтобы агент мог проверить собственный запрос до его отправки.


Примеры запросов

После подключения сервера всё это работает на обычном языке:

  • «Список моих приложений с их bundle ID и SKU.»

  • «Покажи последние 5 сборок TestFlight для MyApp и кому они были распространены.»

  • «Создай группу бета-тестирования TestFlight под названием Internal QA для MyApp и добавь этих трёх тестировщиков.»

  • «Какая текущая версия MyApp в App Store в каждой локализации и в каких отсутствует описание?»

  • «Загрузи отчёт о продажах за этот месяц и сведи количество единиц по территориям.»

  • «Перечисли все автообновляемые подписки в моей группе подписок с их ценовыми точками.»

  • «Какие профили подготовки истекают в ближайшие 30 дней?»

  • «Покажи мою последнюю отправку на App Review и причину отклонения.»

  • «Получи последние отзывы покупателей с 1 или 2 звёздами и подготовь ответы.»

  • «Запусти рабочий процесс Xcode Cloud под названием Release и сообщи статус сборки.»

  • «Каким из моих покупок внутри приложения не хватает скриншота для ревью?»

  • «Добавь UDID этого устройства в мой аккаунт и перегенерируй профиль разработки.»


Скрипты

Команда

Назначение

bun install

Установить зависимости

bun run generate

Пересобрать generated/tools.json и generated/manifest.json из поставляемой спецификации OpenAPI

bun run start

Запустить stdio MCP-сервер

bun run smoke

Сгенерировать, проверить инвентаризацию каталога, запустить сервер. Выполняет живой GET /v1/apps только если учётные данные есть в окружении

bun run typecheck

tsc --noEmit

bun run live

Проверка учётных данных в реальном времени через GET /v1/apps


Обновление спецификации OpenAPI от Apple

Apple поставляет zip-архив. Включите JSON в проект, перегенерируйте, проверьте:

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/ — это результат сборки. Никогда не редактируйте его вручную — вместо этого перегенерируйте.

Примечание о покрытии: «полная поверхность» означает каждую операцию в опубликованном Apple zip-архиве OpenAPI для включённой версии. Если конечная точка описана в документации Apple для людей, но отсутствует в zip-архиве, она появится здесь после того, как Apple обновит zip-архив, и вы перегенерируете.


Структура проекта

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

Модель безопасности

  • В этом репозитории не хранится ничего секретного. Учётные данные берутся только из переменных окружения.

  • .gitignore исключает *.p8, AuthKey_*.p8 и .env*.

  • JWT подписываются по алгоритму ES256 локально вашим .p8, имеют аудиторию appstoreconnect-v1, действительны 20 минут (максимум, установленный Apple), кэшируются только в памяти и обновляются за 60 секунд до истечения срока действия.

  • Результаты, которые инструменты возвращают модели, никогда не содержат учётные данные.

  • Единственный сетевой адрес — ASC_BASE_URL, который по умолчанию указывает на API-хост Apple.

  • Если вы когда-нибудь случайно закоммитите .p8, немедленно отзовите этот ключ в App Store Connect и создайте новый.

О том, как сообщить об уязвимости, см. SECURITY.md.


Устранение неполадок

Missing credentials / ASC_ISSUER_ID not set MCP-клиент не передал переменные окружения. Поместите переменные в блок env клиента, а не в профиль вашей оболочки — GUI-приложения, такие как Claude Desktop и Cursor, не наследуют окружение вашей оболочки.

HTTP 401 NOT_AUTHORIZED Issuer ID, Key ID и .p8 должны относиться к одному и тому же ключу. Убедитесь, что Key ID совпадает с именем файла (AuthKey_<KeyID>.p8) и что ключ не отозван.

HTTP 403 FORBIDDEN_ERROR Роль ключа слишком узкая для этой операции. Для управления пользователями и финансовых отчётов требуются роли выше Developer.

HTTP 409 со строкой detail в формате JSON:API Apple отклоняет структуру документа. Выполните тот же вызов с _dryRun: true, сравните с выводом asc_schema и исправьте body.

Сервер «зависает» при запуске bun run start Так и должно быть. stdio MCP-сервер блокируется в ожидании клиента на stdin. Если нужна проверка, которая завершается, используйте bun run smoke.

Инструменты не отображаются в моём клиенте Перезапустите клиент после изменения его MCP-конфигурации и используйте абсолютный путь к src/index.ts. Убедитесь, что bun находится в PATH, который видит клиент (which bun), либо укажите абсолютный путь к бинарному файлу bun в качестве command.

Ответы обрезаются Полезная нагрузка более ~120 000 символов обрезается. Сузьте выборку с помощью fields[…], filter[…] и limit, а не выгружайте целые коллекции.


FAQ

Это официальный продукт Apple? Нет. Это независимый проект с открытым исходным кодом. «App Store Connect», «TestFlight», «Xcode» и «Game Center» — товарные знаки Apple Inc.

Сколько инструментов предоставляет этот MCP-сервер? По умолчанию четыре — asc_search, asc_schema, asc_call и asc_tags — на базе внутреннего каталога из 1 263 операций App Store Connect API. Установка ASC_EXPOSE_ALL_TOOLS=1 регистрирует каждый из 1 263 инструментов по отдельности, что полезно только для отладки.

Поддерживает ли он TestFlight? Да. Примерно 90 операций охватывают бета-группы, бета-тестеров, приглашения, локализации бета-сборок, подачу бета-приложений на ревью, отчёты о сбоях и критерии набора.

Может ли агент отправить моё приложение на ревью? Да. ReviewSubmissions, ReviewSubmissionItems, AppStoreVersionSubmissions и ресурсы с деталями ревью — всё это есть в каталоге. Сначала используйте _dryRun и держите человека в цикле для всего, что попадает в App Store.

Работает ли он с Cursor, Windsurf и VS Code? Да. Это обычный stdio MCP-сервер, поэтому его может запустить любой клиент Model Context Protocol.

Хранит ли он или передаёт мой ключ App Store Connect API? Нет. Ключ читается из окружения в момент вызова, используется для локальной подписи кратковременного JWT, и сам JWT уходит только на API-хост Apple.

Чем этот сервер отличается от других App Store Connect MCP-серверов? Большинство из них — написанные вручную обёртки вокруг небольшого подмножества эндпоинтов. Этот же генерирует каталог из официальной OpenAPI-спецификации Apple, поэтому покрытие — вся опубликованная поверхность API, а обновление — одна команда вместо переписывания.

Почему бы просто не дать модели 1 263 инструмента? Полные JSON-схемы для 1 263 операций стоят сотни тысяч контекстных токенов, а многие клиенты обрезают или отклоняют такие длинные списки. Подход «поиск → схема → вызов» стоит несколько тысяч токенов на задачу.

Можно ли использовать его в CI? Да. Укажите ASC_PRIVATE_KEY в виде встроенного PEM вместо пути к файлу, чтобы ни один .p8 не попал на диск раннера.

Справляется ли он с ограничениями частоты запросов App Store Connect API? Он не повторяет запросы за вас. Ответы и заголовки об ограничении частоты от Apple передаются без изменений, чтобы агент (или ваш код) мог решить, как снизить частоту.

Какая версия App Store Connect API включена в комплект? 4.4.1, OpenAPI 3.0.1. Чтобы перейти на новую версию, замените спецификацию на более новую и выполните bun run generate.


Участие в разработке

Приветствуются issues и pull requests. См. CONTRIBUTING.md. Важнее всего два правила: generated/ перегенерируется, а не редактируется вручную, и никакие учётные данные никогда не появляются в pull request.


Лицензия

MIT © imfaisii

Не аффилирован с Apple Inc. и не одобрен ею.


Ключевые слова: App Store Connect MCP · MCP-сервер для App Store Connect API · MCP-сервер для App Store Connect · Model Context Protocol Apple · TestFlight MCP · Xcode Cloud MCP · MCP для покупок внутри приложения · автоматизация App Store · Claude Code App Store Connect · Cursor MCP App Store Connect · автоматизация релизов iOS с помощью ИИ-агентов

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