Skip to main content
Glama
imfaisii

App Store Connect MCP Server

by imfaisii

App Store Connect MCP Server

완전한 App Store Connect API를 MCP 서버로 제공합니다. Apple의 공식 OpenAPI 사양에서 직접 생성된 1,263개의 작업이 단 4개의 토큰 효율적인 도구를 통해 Claude Code, Claude Desktop, Cursor 및 모든 기타 Model Context Protocol 클라이언트에 노출됩니다.

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


App Store Connect MCP 서버란 무엇인가요?

app-store-connect-mcp는 App Store Connect API용 오픈소스 Model Context Protocol (MCP) 서버입니다. 한 번 설치하면 AI 에이전트가 Apple이 앱과 개발자 계정에 대해 노출하는 모든 것을 읽고 쓸 수 있습니다:

App Store 목록 및 메타데이터 · TestFlight 빌드, 베타 그룹 및 테스터 · 인앱 구매 · 자동 갱신 구독, 할인 및 재유입 (win-back) 오퍼 · Game Center 리더보드, 업적 및 매치메이킹 · Xcode Cloud 워크플로 및 빌드 실행 · 프로비저닝 프로필, 인증서, 번들 ID 및 기기 · 앱 리뷰 제출 및 리뷰 세부 정보 · 고객 리뷰 및 응답 · 가격, 판매 가능 여부 및 지역 · 판매, 재무 및 분석 보고서 · 사용자, 역할 및 초대 · App Clips, 백그라운드 애셋 및 대체 배포.

대부분의 App Store Connect MCP 서버는 2~30개의 엔드포인트를 수동으로 감싼 후 업데이트에서 멀어집니다. 이 서버는 Apple이 공개한 OpenAPI 사양에서 생성되므로 전체 문서화된 표면을 커버하며, bun run generate 한 번으로 최신 상태를 유지합니다.

이 저장소에는 자격 증명이 저장되어 있지 않습니다. 런타임에 환경 변수를 통해 직접 제공한 App Store Connect API 키를 사용합니다. Apple 외 어디에도 번들, 로깅 또는 전송되지 않습니다.

목차


Related MCP server: App Store Connect MCP

한눈에 보기

정의

전체 App Store Connect API용 MCP 서버

API 버전

App Store Connect API 4.4.1 (OpenAPI 3.0.1)

카탈로그의 작업 수

1,263 — 경로 + 메서드당 1개

API 경로 수

966

리소스 태그 수

195

등록된 MCP 도구

4 메타 도구: asc_search, asc_schema, asc_call, asc_tags

메서드 비율

797 GET · 176 POST · 158 PATCH · 132 DELETE

진실의 소스

Apple의 OpenAPI zip, openapi/app-store-connect.openapi.json에서 공급

인증

발급자 ID + 키 ID + .p8 개인 키로부터 런타임에 생성된 ES256 JWT

기본 URL

https://api.appstoreconnect.apple.com (변경 가능)

전송

stdio

런타임

Bun 1.1+ 및 @modelcontextprotocol/sdk

라이선스

MIT


왜 1,263개가 아닌 4개의 도구인가

모든 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)

에이전트는 사용하려는 스키마에 대해서만 정확히 비용을 지불하며, 그 외에는 아무것도 지불하지 않습니다. 일반적인 3단계 흐름은 수십만 개가 아닌 수천 개의 토큰만을 소비합니다.

탈출구 (디버깅 전용)

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

정상 사용 시에는 설정하지 않아야 합니다. 사양 디버깅을 위해 존재하며, 컨텍스트에서 매우 비용이 큽니다.


네 가지 MCP 도구

operationId, 이름, 경로, 태그, 메서드 및 설명에 대한 자유 텍스트 검색입니다. JSON 스키마 없이 랭킹 결과를 반환합니다.

매개변수

유형

필수 여부

설명

query

string

선택 사항*

자유 텍스트, 예: "앱 나열", "베타 테스터", "판매 보고", "/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 — 하나의 작업을 설명

지정된 작업의 전체 입력 스키마, 경로 매개변수 목록, 쿼리 매개변수 목록, 그리고 OpenAI API를 호출하는 방법을 보여주는 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, 텍스트 응답은 텍스트로 반환됩니다.

  • Gzip 및 이진 다운로드(재무 보고서, 판매 보고서)는 encoding, contentType, byteLength 및 디코딩 참고와 함께 base64로 반환됩니다.

  • ~120,000자 이상의 응답은 filter[…], fields[…] 또는 limit를 좁히라는 힌트와 함께 잘립니다.

  • HTTP 4xx/5xx는 Apple의 실제 오류 본문을 함께 MCP 오류로 표시되므로, 에이전트는 Apple의 detail 문자열을 읽고 스스로 수정할 수 있습니다.


커버리지: 모든 App Store Connect 리소스

195개의 리소스 태그에 걸친 전체 1,263개 작업. 수수는 태그별 작업 수입니다.

앱, 목록 및 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) · EndUserRemoteAgreements (6) · AppCustomProductPageVersions (5) · AppInfoLocalizations (4) · AppPreviews (28) — · AppScreenshots (7) · AppEventScreenshots (4) · AppEventVideoClips (78) · AccessibilityDeclarations (7) · AndroidToIosAppMappingDetails (4) · AppTags (3) · AppStoreVersionPhasedReleases (3) · AgeRatingDeclarations (1) · AppStoreVersionSystems (1) · AppStoreVersionReleaseRequests (1) · RoutingAppCanapps (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, 내부 베타 및 외부 베타 릴리스 엔드포인트

대체 배포(EU 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 이상

  • App Store Connect API 키: Issuer ID, Key ID 및 .p8 프라이빗 키 파일

  • stdio를 지원하는 MCP 클라이언트: Claude Code, Claude Desktop, Cursor, Windsurf, MCP 확장 프로그램이 포함된 VS Code, Zed 또는 자체 에이전트


App Store Connect API 키 가져오기

  1. App Store Connect에 로그인합니다.

  2. 사용자 및 접근 권한 → 통합 → App Store Connect API(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의 공식 가이드: App Store Connect API용 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 — 동일한 command, argsenv를 사용하는 servers 블록이 있는 .vscode/mcp.json.

자체 에이전트bun run src/index.ts를 실행하고 stdio를 통해 MCP와 통신합니다. 원시 터미널에서 멈춘 것처럼 보일 수 있는데, 이는 stdio 서버가 클라이언트를 기다리고 있는 것이며 정상입니다.


환경 변수

변수

필수

용도

ASC_ISSUER_ID

App Store Connect의 Issuer ID(UUID)

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에 접촉하지 않고 확인된 메서드, 경로, 경로 매개변수, 쿼리 및 본문을 반환하므로 에이전트가 요청을 실행하기 전에 자신의 요청을 확인할 수 있습니다.


예시 프롬프트

서버가 연결되면 다음은 모두 자연어로 작동합니다:

  • "내 앱을 번들 ID와 SKU와 함께 나열해 줘."

  • "MyApp의 최근 TestFlight 빌드 5개와 배포 대상을 보여 줘."

  • "MyApp용 Internal QA라는 TestFlight 베타 그룹을 만들고 이 테스터 3명을 추가해 줘."

  • "각 로컬라이제이션에서 MyApp의 현재 App Store 버전은 무엇이며, 설명이 누락된 것은 무엇인가요?"

  • "이번 달 판매 보고서를 가져와서 국가별 단위로 요약해 줘."

  • "내 구독 그룹의 모든 자동 갱신 구독을 가격대와 함께 나열해 줘."

  • "향후 30일 이내에 만료되는 프로비저닝 프로파일은 무엇인가요?"

  • "최신 App Review 제출 내역과 거부 사유를 보여 줘."

  • "별 1~2개짜리 최신 고객 리뷰를 가져와서 답변 초안을 작성해 줘."

  • "Release라는 Xcode Cloud 워크플로를 실행하고 빌드 실행 상태를 보고해 줘."

  • "내 인앱 구매 중 리뷰 스크린샷이 누락된 것은 무엇인가요?"

  • "이 기기 UDID를 내 계정에 추가하고 개발 프로파일을 다시 생성해 줘."


스크립트

명령어

용도

bun install

종속성 설치

bun run generate

번들된 OpenAPI 스펙에서 generated/tools.jsongenerated/manifest.json 재생성

bun run start

stdio MCP 서버 시작

bun run smoke

생성, 카탈로그 인벤토리 검증, 서버 부팅. 자격 증명이 환경에 있는 경우에만 라이브 GET /v1/apps 실행

bun run typecheck

tsc --noEmit

bun run live

GET /v1/apps에 대한 라이브 자격 증명 확인


Apple의 OpenAPI 스펙 새로 고침

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 게시 OpenAPI zip의 모든 작업을 의미합니다. 엔드포인트가 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로 로컬에서 서명되고, 대상(audience)은 appstoreconnect-v1로 범위가 지정되며, 20분(Apple의 최대치) 동안 유효하고, 메모리에만 캐시되며, 만료 60초 전에 갱신됩니다.

  • 도구 결과는 자격 증명을 모델에 다시 반환하지 않습니다.

  • 유일한 네트워크 대상은 ASC_BASE_URL이며, 기본값은 Apple의 API 호스트입니다.

  • 실수로 .p8을 커밋한 경우, App Store Connect에서 해당 키를 즉시 폐기하고 새 키를 생성하세요.

취약점 신고는 SECURITY.md를 참조하세요.


문제 해결

Missing credentials / ASC_ISSUER_ID not set MCP 클라이언트가 환경을 전달하지 않았습니다. 변수를 셸 프로필이 아닌 클라이언트의 env 블록에 넣으세요. Claude Desktop 및 Cursor와 같은 GUI 앱은 셸 환경을 상속하지 않습니다.

HTTP 401 NOT_AUTHORIZED Issuer ID, Key ID 및 .p8은 모두 동일한 키에 속해야 합니다. Key ID가 파일 이름(AuthKey_<KeyID>.p8)과 일치하고 키가 폐기되지 않았는지 확인하세요.

HTTP 403 FORBIDDEN_ERROR 해당 작업에 키의 역할이 너무 제한적입니다. 사용자 관리 및 재무 보고서에는 Developer보다 높은 역할이 필요합니다.

HTTP 409 및 JSON:API detail 문자열 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 서버는 몇 개의 도구를 제공하나요? 기본적으로 4개입니다 — asc_search, asc_schema, asc_callasc_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는 Apple의 API 호스트로만 전송됩니다.

다른 App Store Connect MCP 서버와 어떻게 다른가요? 대부분은 소수의 엔드포인트를 둘러싼 수작업 래퍼입니다. 이 서버는 Apple의 공식 OpenAPI 사양에서 카탈로그를 생성하므로 게시된 전체 표면을 다루며, 새로 고침은 재작성이 아닌 하나의 명령으로 수행됩니다.

모델에 1,263개의 도구를 그냥 제공하지 않는 이유는 무엇인가요? 1,263개 작업에 대한 전체 JSON 스키마는 수십만 개의 컨텍스트 토큰을 소비하며, 많은 클라이언트가 그렇게 긴 목록을 자르거나 거부합니다. 검색-스키마-호출 방식은 작업당 수천 개의 토큰만 소비합니다.

CI에서 사용할 수 있나요? 네. 파일 경로 대신 인라인 PEM으로 ASC_PRIVATE_KEY를 설정하면 .p8이 러너의 디스크에 닿을 필요가 없습니다.

App Store Connect API 속도 제한을 처리하나요? 대신 재시도하지 않습니다. Apple의 속도 제한 응답과 헤더가 그대로 전달되므로 에이전트(또는 코드)가 백오프 방법을 결정할 수 있습니다.

어떤 App Store Connect API 버전이 포함되어 있나요? 4.4.1, OpenAPI 3.0.1입니다. 더 새로운 사양을 넣은 후 bun run generate를 실행하면 업그레이드됩니다.


기여

이슈와 풀 리퀘스트를 환영합니다. CONTRIBUTING.md를 참조하세요. 가장 중요한 두 가지 규칙: generated/는 수동으로 편집하지 않고 재생성되며, 풀 리퀘스트에 자격 증명이 절대 나타나지 않아야 합니다.


라이선스

MIT © imfaisii

Apple Inc.와 제휴하거나 보증하지 않습니다.


키워드: App Store Connect MCP · App Store Connect API MCP 서버 · App Store Connect용 MCP 서버 · Model Context Protocol Apple · TestFlight MCP · Xcode Cloud MCP · 인앱 구매 MCP · App Store 자동화 · Claude Code App Store Connect · Cursor MCP App Store Connect · AI 에이전트를 통한 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