App Store Connect MCP Server
App Store Connect MCP Server
Полный API App Store Connect в виде MCP-сервера. 1 263 операции, сгенерированные напрямую из официальной спецификации OpenAPI от Apple, доступные в Claude Code, Claude Desktop, Cursor и любом другом клиенте Model Context Protocol через всего 4 эффективных по токенам инструмента.
Что такое 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 мета-инструмента: |
Разбивка по методам | 797 |
Источник истины | ZIP-файл OpenAPI от Apple, включённый в репозиторий по адресу |
Аутентификация | ES256 JWT, создаваемый во время выполнения из Issuer ID + Key ID + приватного ключа |
Базовый URL |
|
Транспорт | stdio |
Среда выполнения | Bun 1.1+ и |
Лицензия | 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-инструмента
asc_search — найдите нужную операцию
Полнотекстовый поиск по operationId, имени, пути, тегам, методу и описанию. Возвращает ранжированные результаты без JSON-схем.
Параметр | Тип | Обязательный | Описание |
| string | необязательный* | Свободный текст, например |
| string | необязательный* | Точный фильтр по тегу OpenAPI, например |
| string | необязательный |
|
| integer | необязательный | Максимум результатов, по умолчанию |
* Как минимум один из query, tag или method.
{ "query": "list apps", "method": "GET", "limit": 5 }asc_schema — опишите одну операцию
Возвращает полную входную JSON-схему операции, список её параметров пути, список параметров запроса и callHint, показывающий, как её вызвать.
Параметр | Тип | Обязательный | Описание |
| string | да | OperationId или сгенерированное имя инструмента, например |
asc_call — выполните операцию
Параметр | Тип | Обязательный | Описание |
| string | да | OperationId или сгенерированное имя инструмента |
| object | необязательный | Параметры пути, параметры запроса, |
| 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
Параметр | Тип | Обязательный | Описание |
| 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 и файл закрытого ключа
.p8MCP-клиент, поддерживающий stdio: Claude Code, Claude Desktop, Cursor, Windsurf, VS Code с MCP-расширением, Zed или ваш собственный агент
Получите ключ API App Store Connect
Войдите в App Store Connect.
Перейдите в Users and Access → Integrations → App Store Connect API.
Нажмите +, чтобы сгенерировать ключ. Выберите наименьшую роль, покрывающую ваш сценарий использования (
Developer,App ManagerилиAdminдля управления пользователями).Скопируйте Issuer ID (UUID, отображается один раз в верхней части страницы).
Скопируйте Key ID (10 символов).
Скачайте файл закрытого ключа
.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.jsonWindows:
%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-сервер, ожидающий клиента, и это нормально.
Переменные окружения
Переменная | Обязательная | Назначение |
| да | Issuer ID (UUID) из App Store Connect |
| да | Key ID (10 символов) |
| да* | Абсолютный путь к файлу закрытого ключа |
| да* | Содержимое PEM в одну строку, вместо пути к файлу (удобно в CI) |
| нет | По умолчанию |
| нет |
|
* Укажите ровно одну из переменных 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 этого устройства в мой аккаунт и перегенерируй профиль разработки.»
Скрипты
Команда | Назначение |
| Установить зависимости |
| Пересобрать |
| Запустить stdio MCP-сервер |
| Сгенерировать, проверить инвентаризацию каталога, запустить сервер. Выполняет живой |
|
|
| Проверка учётных данных в реальном времени через |
Обновление спецификации 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 smokegenerated/ — это результат сборки. Никогда не редактируйте его вручную — вместо этого перегенерируйте.
Примечание о покрытии: «полная поверхность» означает каждую операцию в опубликованном 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 с помощью ИИ-агентов
This server cannot be deployed
Maintenance
Related MCP Connectors
- app-managerOAuthapp.lance
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
- metarunOAuthdev.metarun
Run App Store Connect from your IDE: pricing, listings, screenshots, releases, AI visibility.
The OpenRouter for tools. One MCP connection gives any AI agent 254 hosted tools, pay per call.
Connect any AI agent to 1,000+ apps and 27,000+ actions through one remote MCP server (OAuth).
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to manage Apple App Store Connect operations including app management, TestFlight, analytics, reviews, subscriptions, and more through 54 tools.61110 npm11MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to manage Apple App Store Connect through the official API, including apps, metadata, reviews, TestFlight, provisioning, users, and reports.MIT
- 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.24 npmMIT
- AlicenseAqualityCmaintenanceEnables AI assistants to manage Apple App Store Connect resources like apps, builds, TestFlight, and reviews through natural language.2014 npmMIT