500개 이상의 도구를 사용하여 AI 클라이언트가 App Store Connect 앱, 빌드, TestFlight, 구독, 리뷰 및 Xcode Cloud를 관리할 수 있게 합니다.
다른 이름 zelentsov-dev/asc-mcp
- 스타
- 86
- Tools
- 200
- 다운로드, 30일
- —
- 최신 버전
- —
- 마지막 커밋
- 2026년 11월 7일
- 라이선스
- MIT
App Store Connect MCP란?
App Store Connect은(는) MCP server입니다. 500개 이상의 도구를 사용하여 AI 클라이언트가 App Store Connect 앱, 빌드, TestFlight, 구독, 리뷰 및 Xcode Cloud를 관리할 수 있게 합니다. 200개 도구를 제공합니다. 예: company_list, company_switch, company_current.
프로젝트 README에서 생성된 요약
App Store Connect MCP server 정보
채팅 클라이언트에서 App Store Connect를 제어하는 것이 이 서버의 목적입니다. 이 서버는 34개의 App Store 도구 도메인과 2개의 핵심 도메인에 걸쳐 537개의 도구를 제공하므로, AI 어시스턴트가 자연어를 통해 릴리스, TestFlight, 수익화, 마케팅 자산, 프로비저닝 및 리뷰 피드백을 처리할 수 있습니다. Codex, Claude Code, Claude Desktop, Gemini CLI, GitHub Copilot이 포함된 VS Code, Continue, Cursor 또는 Devin Desktop 내부에서 릴리스 작업을 처리하고자 하는 Mac 기반 iOS 및 macOS 개발자를 대상으로 하며, 각 클라이언트별 설정 예시가 문서화되어 있습니다.
이 서버는 Swift로 작성된 로컬 stdio server로, 클라이언트와 동일한 머신에서 시작됩니다. macOS 15.6 이상 및 Xcode 26.x 버전이 필요하며, Linux와 Windows는 지원하지 않습니다. 설치는 Mint를 통해 이루어지며 바이너리는 사용자 레벨 경로에 유지됩니다. 인증 정보는 App Store Connect API key(.p8 파일, Key ID, Issuer ID)를 사용하며, 여러 팀을 지원하는 비공개 companies.json 파일에 저장하거나 환경 변수를 통해 전달합니다. 분석 보고 도구에는 vendor number도 필요합니다.
이 서버의 차별점은 쓰기 작업에 대한 안전성과 감사 가능성입니다. custom_pages_delete, ppo_delete_experiment, screenshots_delete와 같은 파괴적인 호출은 정확한 확인 ID를 요구합니다. 제품 및 워크플로 삭제는 기본적으로 영수증이 필요한 미리보기 모드로 동작하며, 알 수 없는 인수는 네트워크 요청 전에 거부됩니다. 또한 읽기 전용 모드도 제공합니다. 릴리스 시점의 드리프트 체크를 포함한 버전 관리된 Apple OpenAPI 계약을 통해 도구 범위를 지원합니다.
활용 사례
- 1팀 내 앱 목록 조회작업 대상을 결정하기 전에 클라이언트에게 구성된 회사의 모든 App Store Connect 앱 목록을 요청합니다.
- 2TestFlight 테스터 관리베타 출시 전에 어시스턴트에게 베타 그룹에 테스터를 추가하고 빌드 처리 상태를 확인하도록 요청합니다.
- 3구독 및 오퍼 설정채팅 클라이언트 내부에서 가격과 오퍼 코드가 포함된 자동 갱신 구독을 생성합니다.
- 4커스텀 페이지 안전 삭제도구에서 요구하는 정확한 확인 ID를 전달한 후에만 커스텀 제품 페이지를 삭제합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
App Store Connect MCP 도구 200
README에서 감지됨company_listcompany_switchcompany_currentauth_generate_tokenauth_validate_tokenauth_refresh_tokenauth_token_statusapps_listapps_get_detailsapps_searchapps_list_versionsapps_get_metadata
| company_list | — | |
| company_switch | — | |
| company_current | — | |
| auth_generate_token | — | |
| auth_validate_token | — | |
| auth_refresh_token | — | |
| auth_token_status | — | |
| apps_list | — | |
| apps_get_details | — | |
| apps_search | — | |
| apps_list_versions | — | |
| apps_get_metadata | — |
도구 200개 모두 보기도구 수 줄이기
apps_list_search_keywordsapps_update_metadataapps_list_localizationsapps_create_localizationapps_delete_localizationaccessibility_listaccessibility_getaccessibility_createaccessibility_updateaccessibility_deleteaccessibility_list_relationshipswebhooks_listwebhooks_getwebhooks_createwebhooks_updatewebhooks_deletewebhooks_list_deliverieswebhooks_redeliverwebhooks_pingwebhooks_verify_signaturewebhooks_parse_payloadwebhooks_triage_eventxcode_cloud_products_listxcode_cloud_products_getxcode_cloud_products_deletexcode_cloud_app_product_getxcode_cloud_product_app_getxcode_cloud_product_primary_repositories_listxcode_cloud_product_additional_repositories_listxcode_cloud_product_workflows_listxcode_cloud_product_build_runs_listxcode_cloud_workflows_getxcode_cloud_workflows_createxcode_cloud_workflows_updatexcode_cloud_workflows_deletexcode_cloud_workflow_repository_getxcode_cloud_workflow_build_runs_listxcode_cloud_build_runs_getxcode_cloud_build_runs_startxcode_cloud_build_run_actions_listxcode_cloud_build_run_builds_listxcode_cloud_actions_getxcode_cloud_action_build_run_getxcode_cloud_action_artifacts_listxcode_cloud_action_issues_listxcode_cloud_action_test_results_listxcode_cloud_artifacts_getxcode_cloud_issues_getxcode_cloud_test_results_getxcode_cloud_xcode_versions_listxcode_cloud_xcode_versions_getxcode_cloud_xcode_version_macos_versions_listxcode_cloud_macos_versions_listxcode_cloud_macos_versions_getxcode_cloud_macos_version_xcode_versions_listxcode_cloud_scm_providers_listxcode_cloud_scm_providers_getxcode_cloud_scm_provider_repositories_listxcode_cloud_scm_repositories_listxcode_cloud_scm_repositories_getxcode_cloud_scm_repository_git_references_listxcode_cloud_scm_repository_pull_requests_listxcode_cloud_scm_git_references_getxcode_cloud_scm_pull_requests_getbeta_feedback_list_crashesbeta_feedback_get_crashbeta_feedback_get_crash_logbeta_feedback_get_crash_log_by_idbeta_feedback_delete_crashbeta_feedback_list_screenshotsbeta_feedback_get_screenshotbeta_feedback_delete_screenshotbuilds_listbuilds_getbuilds_find_by_numberbuilds_list_for_versionbuild_uploads_listbuild_uploads_getbuild_uploads_createbuild_uploads_deletebuild_uploads_list_filesbuild_uploads_get_filebuild_uploads_reserve_filebuild_uploads_commit_filebuild_uploads_upload_filebuild_uploads_uploadbuilds_get_processing_statebuilds_update_encryptionbuilds_get_processing_statusbuilds_check_readinessexport_compliance_list_declarationsexport_compliance_get_declarationexport_compliance_create_declarationexport_compliance_create_documentexport_compliance_get_documentexport_compliance_update_documentexport_compliance_upload_documentexport_compliance_inspect_documentexport_compliance_get_build_declarationexport_compliance_attach_build_declarationexport_compliance_check_release_readinessbuilds_get_beta_detailbuilds_update_beta_detailbuilds_set_beta_localizationbuilds_list_beta_localizationsbuilds_get_beta_groupsbuilds_get_beta_testersbuilds_send_beta_notificationbuilds_add_to_beta_groupsbuilds_add_individual_testersbuilds_remove_individual_testersbuilds_list_individual_testersbeta_groups_listbeta_groups_createbeta_groups_updatebeta_groups_deletebeta_groups_add_testersbeta_groups_remove_testersbeta_groups_list_testersbeta_groups_add_buildsbeta_groups_remove_buildsbeta_groups_get_recruitment_criteriabeta_groups_create_recruitment_criteriabeta_groups_update_recruitment_criteriabeta_groups_delete_recruitment_criteriabeta_groups_list_recruitment_optionsbeta_groups_check_recruitment_compatibilityapp_versions_createapp_versions_listapp_versions_getapp_versions_get_age_rating_declarationapp_versions_list_territory_age_ratingsapp_versions_updateapp_versions_attach_buildapp_versions_submit_for_reviewapp_versions_cancel_reviewapp_versions_releaseapp_versions_create_phased_releaseapp_versions_get_phased_releaseapp_versions_update_phased_releaseapp_versions_delete_phased_releaseapp_versions_set_review_detailsapp_versions_update_age_ratingapp_versions_deletereviews_listreviews_getreviews_list_for_versionreviews_statsreviews_create_responsereviews_delete_responsereviews_get_responsereviews_summarizationsiap_listiap_getiap_createiap_updateiap_deleteiap_list_localizationsiap_create_localizationiap_update_localizationiap_delete_localizationiap_submit_for_reviewiap_list_subscriptionsiap_get_subscription_groupiap_inventoryiap_list_price_pointsiap_list_price_point_equalizationsiap_get_price_scheduleiap_set_price_scheduleiap_pricing_summaryiap_prepare_offer_pricesiap_set_availabilityiap_get_availabilityiap_list_available_territoriesiap_get_promoted_purchaseiap_list_offer_codesiap_get_offer_codeiap_create_offer_codeiap_update_offer_codeiap_deactivate_offer_codeiap_list_offer_code_pricesiap_generate_one_time_codesiap_list_one_time_codesiap_get_one_time_codeiap_update_one_time_codeiap_deactivate_one_time_codeiap_get_one_time_code_valuesiap_create_custom_code
| apps_list_search_keywords | — | |
| apps_update_metadata | — | |
| apps_list_localizations | — | |
| apps_create_localization | — | |
| apps_delete_localization | — | |
| accessibility_list | — | |
| accessibility_get | — | |
| accessibility_create | — | |
| accessibility_update | — | |
| accessibility_delete | — | |
| accessibility_list_relationships | — | |
| webhooks_list | — | |
| webhooks_get | — | |
| webhooks_create | — | |
| webhooks_update | — | |
| webhooks_delete | — | |
| webhooks_list_deliveries | — | |
| webhooks_redeliver | — | |
| webhooks_ping | — | |
| webhooks_verify_signature | — | |
| webhooks_parse_payload | — | |
| webhooks_triage_event | — | |
| xcode_cloud_products_list | — | |
| xcode_cloud_products_get | — | |
| xcode_cloud_products_delete | — | |
| xcode_cloud_app_product_get | — | |
| xcode_cloud_product_app_get | — | |
| xcode_cloud_product_primary_repositories_list | — | |
| xcode_cloud_product_additional_repositories_list | — | |
| xcode_cloud_product_workflows_list | — | |
| xcode_cloud_product_build_runs_list | — | |
| xcode_cloud_workflows_get | — | |
| xcode_cloud_workflows_create | — | |
| xcode_cloud_workflows_update | — | |
| xcode_cloud_workflows_delete | — | |
| xcode_cloud_workflow_repository_get | — | |
| xcode_cloud_workflow_build_runs_list | — | |
| xcode_cloud_build_runs_get | — | |
| xcode_cloud_build_runs_start | — | |
| xcode_cloud_build_run_actions_list | — | |
| xcode_cloud_build_run_builds_list | — | |
| xcode_cloud_actions_get | — | |
| xcode_cloud_action_build_run_get | — | |
| xcode_cloud_action_artifacts_list | — | |
| xcode_cloud_action_issues_list | — | |
| xcode_cloud_action_test_results_list | — | |
| xcode_cloud_artifacts_get | — | |
| xcode_cloud_issues_get | — | |
| xcode_cloud_test_results_get | — | |
| xcode_cloud_xcode_versions_list | — | |
| xcode_cloud_xcode_versions_get | — | |
| xcode_cloud_xcode_version_macos_versions_list | — | |
| xcode_cloud_macos_versions_list | — | |
| xcode_cloud_macos_versions_get | — | |
| xcode_cloud_macos_version_xcode_versions_list | — | |
| xcode_cloud_scm_providers_list | — | |
| xcode_cloud_scm_providers_get | — | |
| xcode_cloud_scm_provider_repositories_list | — | |
| xcode_cloud_scm_repositories_list | — | |
| xcode_cloud_scm_repositories_get | — | |
| xcode_cloud_scm_repository_git_references_list | — | |
| xcode_cloud_scm_repository_pull_requests_list | — | |
| xcode_cloud_scm_git_references_get | — | |
| xcode_cloud_scm_pull_requests_get | — | |
| beta_feedback_list_crashes | — | |
| beta_feedback_get_crash | — | |
| beta_feedback_get_crash_log | — | |
| beta_feedback_get_crash_log_by_id | — | |
| beta_feedback_delete_crash | — | |
| beta_feedback_list_screenshots | — | |
| beta_feedback_get_screenshot | — | |
| beta_feedback_delete_screenshot | — | |
| builds_list | — | |
| builds_get | — | |
| builds_find_by_number | — | |
| builds_list_for_version | — | |
| build_uploads_list | — | |
| build_uploads_get | — | |
| build_uploads_create | — | |
| build_uploads_delete | — | |
| build_uploads_list_files | — | |
| build_uploads_get_file | — | |
| build_uploads_reserve_file | — | |
| build_uploads_commit_file | — | |
| build_uploads_upload_file | — | |
| build_uploads_upload | — | |
| builds_get_processing_state | — | |
| builds_update_encryption | — | |
| builds_get_processing_status | — | |
| builds_check_readiness | — | |
| export_compliance_list_declarations | — | |
| export_compliance_get_declaration | — | |
| export_compliance_create_declaration | — | |
| export_compliance_create_document | — | |
| export_compliance_get_document | — | |
| export_compliance_update_document | — | |
| export_compliance_upload_document | — | |
| export_compliance_inspect_document | — | |
| export_compliance_get_build_declaration | — | |
| export_compliance_attach_build_declaration | — | |
| export_compliance_check_release_readiness | — | |
| builds_get_beta_detail | — | |
| builds_update_beta_detail | — | |
| builds_set_beta_localization | — | |
| builds_list_beta_localizations | — | |
| builds_get_beta_groups | — | |
| builds_get_beta_testers | — | |
| builds_send_beta_notification | — | |
| builds_add_to_beta_groups | — | |
| builds_add_individual_testers | — | |
| builds_remove_individual_testers | — | |
| builds_list_individual_testers | — | |
| beta_groups_list | — | |
| beta_groups_create | — | |
| beta_groups_update | — | |
| beta_groups_delete | — | |
| beta_groups_add_testers | — | |
| beta_groups_remove_testers | — | |
| beta_groups_list_testers | — | |
| beta_groups_add_builds | — | |
| beta_groups_remove_builds | — | |
| beta_groups_get_recruitment_criteria | — | |
| beta_groups_create_recruitment_criteria | — | |
| beta_groups_update_recruitment_criteria | — | |
| beta_groups_delete_recruitment_criteria | — | |
| beta_groups_list_recruitment_options | — | |
| beta_groups_check_recruitment_compatibility | — | |
| app_versions_create | — | |
| app_versions_list | — | |
| app_versions_get | — | |
| app_versions_get_age_rating_declaration | — | |
| app_versions_list_territory_age_ratings | — | |
| app_versions_update | — | |
| app_versions_attach_build | — | |
| app_versions_submit_for_review | — | |
| app_versions_cancel_review | — | |
| app_versions_release | — | |
| app_versions_create_phased_release | — | |
| app_versions_get_phased_release | — | |
| app_versions_update_phased_release | — | |
| app_versions_delete_phased_release | — | |
| app_versions_set_review_details | — | |
| app_versions_update_age_rating | — | |
| app_versions_delete | — | |
| reviews_list | — | |
| reviews_get | — | |
| reviews_list_for_version | — | |
| reviews_stats | — | |
| reviews_create_response | — | |
| reviews_delete_response | — | |
| reviews_get_response | — | |
| reviews_summarizations | — | |
| iap_list | — | |
| iap_get | — | |
| iap_create | — | |
| iap_update | — | |
| iap_delete | — | |
| iap_list_localizations | — | |
| iap_create_localization | — | |
| iap_update_localization | — | |
| iap_delete_localization | — | |
| iap_submit_for_review | — | |
| iap_list_subscriptions | — | |
| iap_get_subscription_group | — | |
| iap_inventory | — | |
| iap_list_price_points | — | |
| iap_list_price_point_equalizations | — | |
| iap_get_price_schedule | — | |
| iap_set_price_schedule | — | |
| iap_pricing_summary | — | |
| iap_prepare_offer_prices | — | |
| iap_set_availability | — | |
| iap_get_availability | — | |
| iap_list_available_territories | — | |
| iap_get_promoted_purchase | — | |
| iap_list_offer_codes | — | |
| iap_get_offer_code | — | |
| iap_create_offer_code | — | |
| iap_update_offer_code | — | |
| iap_deactivate_offer_code | — | |
| iap_list_offer_code_prices | — | |
| iap_generate_one_time_codes | — | |
| iap_list_one_time_codes | — | |
| iap_get_one_time_code | — | |
| iap_update_one_time_code | — | |
| iap_deactivate_one_time_code | — | |
| iap_get_one_time_code_values | — | |
| iap_create_custom_code | — |
구성
ASC_COMPANY_1_ISSUER_IDASC_COMPANY_1_KEY_IDASC_COMPANY_1_KEY_PATHASC_COMPANY_1_NAMEASC_COMPANY_2_ISSUER_IDASC_COMPANY_2_KEY_IDASC_COMPANY_2_KEY_PATHASC_COMPANY_2_NAMEASC_COMPANY_NAMEASC_ISSUER_IDASC_KEY_IDASC_PRIVATE_KEY_PATHASC_VENDOR_NUMBER
| 이름 | 설명 | 유형 |
|---|---|---|
| ASC_COMPANY_1_ISSUER_ID | — | |
| ASC_COMPANY_1_KEY_ID | — | |
| ASC_COMPANY_1_KEY_PATH | — | |
| ASC_COMPANY_1_NAME | — | |
| ASC_COMPANY_2_ISSUER_ID | — | |
| ASC_COMPANY_2_KEY_ID | — | |
| ASC_COMPANY_2_KEY_PATH | — | |
| ASC_COMPANY_2_NAME | — | |
| ASC_COMPANY_NAME | — | |
| ASC_ISSUER_ID | — | |
| ASC_KEY_ID | — | |
| ASC_PRIVATE_KEY_PATH | — | |
| ASC_VENDOR_NUMBER | — |
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능통과
- 오픈 소스 라이선스 (OSI)통과
- 최근 1년 내 커밋 또는 릴리스통과
- 패키지 이름이 인기 패키지와 유사하지 않음검사되지 않음
- 원격 엔드포인트가 HTTPS 사용검사되지 않음
- 파괴적인 도구에 라벨 표시됨통과
- 모델에 대한 숨겨진 지침 없음통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음검사되지 않음
README
GitHub에서 보기Overview
asc-mcp is a Swift-based MCP server that connects a local macOS MCP client to the App Store Connect API. It exposes 537 tools across 34 App Store tool domains + 2 core domains, enabling you to automate iOS and macOS release workflows through natural language.
Configuration examples are included for Codex, Claude Code, Claude Desktop, Gemini CLI, VS Code with GitHub Copilot, Continue, Cursor, and Devin Desktop (formerly Windsurf). Client configuration is documented; release CI verifies installation, MCP initialization, and tool discovery on macOS rather than launching every third-party client.
New here? Follow the Quick Start. The remaining sections are reference material for advanced configuration, tool selection, and contributors.
Key capabilities
- Release and metadata — versions, localizations, builds, review submissions, phased rollout, and Xcode Cloud
- TestFlight and uploads — beta groups, testers, feedback, recruitment, build delivery, processing, and export compliance
- Monetization — in-app purchases, subscriptions, pricing, availability, offer codes, and promotional offers
- Marketing — screenshots, previews, custom product pages, product page optimization, and promoted purchases
- Accounts and provisioning — multiple App Store Connect teams, users, bundle IDs, devices, certificates, profiles, and capabilities
- Feedback and operations — customer reviews, webhooks, accessibility declarations, analytics, metrics, and diagnostics
- Safer automation — read-only mode, confirmation safeguards, strict pagination, and mutation recovery guidance
- Auditable API coverage — a versioned Apple OpenAPI contract and release-time drift checks
The source tree prepares 4.3.0; the installation examples below remain pinned to the last stable release until candidate acceptance and owner publication. See the migration guide for the separate Asset Library workflow.
Platform Support
asc-mcp is a local stdio server: the MCP client starts it on the same computer. A client being available on Linux or Windows does not make this Swift server cross-platform.
| Environment | Status | Notes |
|---|---|---|
| macOS 15.6+ with Xcode 26.x | Recommended | Release CI specifically uses GitHub's macOS 15 runner with Xcode 26.2 |
| macOS 14.0-15.5 | Declared deployment target only | Build and runtime are unverified; a separately installed Swift 6.2+ toolchain may be needed |
| Linux | Not supported yet | Porting work and Linux CI are not complete |
| Windows | Not supported | Current source dependencies and Swift MCP stdio transport are not Windows-compatible |
See Apple's Xcode system requirements for the macOS versions supported by each Xcode release.
Web and cloud sessions do not automatically inherit a local MCP configuration. Run the MCP client locally on a compatible Mac, or use a client feature that explicitly keeps execution on that Mac.
Quick Start
The recommended setup stores App Store Connect credentials once in a private local file. MCP clients then need only the path to the asc-mcp executable.
1. Install asc-mcp
brew install mint
mint install zelentsov-dev/asc-mcp@v4.3.0
~/.mint/bin/asc-mcp --version
2. Create an App Store Connect API key
- Open App Store Connect → Users and Access → Integrations → Team Keys.
- Generate a key with the least-privileged role that covers your workflow. App Manager or Admin is needed only when the corresponding operations require it.
- Download the
.p8file. Apple allows it to be downloaded only once. - Copy the Key ID and Issuer ID.
3. Save the credentials locally
Create private configuration directories, then move the downloaded .p8 file into ~/.keys/. Replace the source path and filename in the second command:
mkdir -p ~/.config/asc-mcp ~/.keys
chmod 700 ~/.config/asc-mcp ~/.keys
mv /path/to/downloaded/AuthKey_XXXXXXXXXX.p8 ~/.keys/
Create ~/.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"
}
]
}
Replace /Users/you with your actual home-directory path. Keep both files outside the repository and restrict access:
chmod 600 ~/.config/asc-mcp/companies.json
chmod 600 /Users/you/.keys/AuthKey_XXXXXXXXXX.p8
[!CAUTION] Never commit
companies.json, a.p8key, or raw credentials to Git. Revoke the App Store Connect key immediately if it is exposed.
4. Connect your MCP client
Choose one client. You do not need to configure every client.
Codex
codex mcp add asc-mcp -- ~/.mint/bin/asc-mcp
codex mcp list
Claude Code
claude mcp add \
--transport stdio \
--scope user \
asc-mcp \
-- ~/.mint/bin/asc-mcp
claude mcp get asc-mcp
claude mcp list
For Claude Desktop, Gemini CLI, VS Code, Continue, Cursor, and Devin Desktop, use the ready-to-copy examples in MCP Client Setup.
5. Try it
Restart a GUI client after changing its configuration, open its MCP tool list, and ask:
List my App Store Connect apps.
If the connection or request fails, see Troubleshooting.
Installation
Mint on macOS (recommended)
Mint installs the pinned release from source and keeps the executable at ~/.mint/bin/asc-mcp.
brew install mint
mint install zelentsov-dev/asc-mcp@v4.3.0
Update or reinstall the pinned release:
mint install zelentsov-dev/asc-mcp@v4.3.0 --force
Stable users should install a version tag. Installing main or develop is intended only for maintainers and pre-release testing.
Build from source
Use Xcode 26.x on a compatible macOS version, or install a standalone Swift 6.2+ toolchain.
git clone https://github.com/zelentsov-dev/asc-mcp.git
cd asc-mcp
swift build -c release
The executable is .build/release/asc-mcp. If you copy it elsewhere, also copy the adjacent resource bundle:
cp .build/release/asc-mcp /usr/local/bin/asc-mcp
cp -R .build/release/asc-mcp_asc-mcp.bundle /usr/local/bin/
The bundle contains the versioned OpenAPI operation contract used by release checks.
Upgrading from an older release
Version 4.1 keeps every existing tool name, required input, projection key, and array shape. Xcode Cloud read tools now reject undocumented arguments and validate returned links, paging, relationship lineage, and included resources more strictly. New *Present projection fields distinguish Apple-omitted arrays from present empty arrays while legacy array fields remain arrays. Newly exposed nested *_limit inputs must be paired with their matching include value, and continuation calls must repeat the original request scope unchanged. The new product and workflow delete tools default to a safe preview and require the latest preview receipt plus exact inventory confirmation before permanent deletion.
Version 4 keeps every existing tool name and worker filter, but destructive Marketing and review-attachment calls now require an exact confirmation ID before any Apple request:
| Existing tool | New required confirmation |
|---|---|
custom_pages_delete |
confirm_page_id |
ppo_delete_experiment |
confirm_experiment_id |
promoted_delete |
confirm_promoted_purchase_id |
review_attachments_delete |
confirm_attachment_id |
screenshots_delete_set, screenshots_delete_preview_set |
confirm_set_id |
screenshots_delete |
confirm_screenshot_id |
screenshots_delete_preview |
confirm_preview_id |
ppo_update_experiment also requires confirm_experiment_id when state is supplied. Calls that update only name or traffic proportion remain unchanged. After an unknown or committed_unverified mutation result, use the returned inspection action before retrying.
Remove undocumented top-level arguments from existing Marketing and review-attachment calls. Version 4 rejects unknown keys before any network request instead of silently ignoring them.
Configuration
Credentials
The default ~/.config/asc-mcp/companies.json file shown in the Quick Start is recommended because it works consistently for terminal and GUI clients without duplicating secrets in every client configuration.
For multiple companies, add more entries:
{
"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 is required only for analytics_sales_report, analytics_financial_report, and analytics_app_summary. Find it in App Store Connect → Sales and Trends → Reports.
Environment variables are useful for automation, but GUI apps launched from Finder may not inherit your shell environment. The file-based setup above is simpler for most users.
Single company:
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 only
Multiple companies:
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.p8
Numbering starts at 1. Each consecutive entry must provide both ASC_COMPANY_{N}_KEY_ID and ASC_COMPANY_{N}_ISSUER_ID; scanning stops at the first missing pair.
The server resolves credentials in this order:
--companies /absolute/path/to/companies.json- Constructor parameter for programmatic embedding
ASC_MCP_COMPANIES=/absolute/path/to/companies.json- Default configuration file locations, including
~/.config/asc-mcp/companies.json ASC_COMPANY_1_KEY_IDand the other numbered multi-company variablesASC_KEY_ID,ASC_ISSUER_ID, and a private-key variable for one company
MCP Client Setup
All examples below assume a Mint installation and the recommended companies.json credential file. Replace /Users/you with your actual home-directory path. GUI clients generally require an absolute executable path.
| Client | Configuration scope | Notes |
|---|---|---|
| Codex | User config by CLI; optional trusted-project config | Shared by local Codex clients on the same Mac |
| Claude Code | user, local, or project scope |
user is simplest for a personal App Store utility |
| Claude Desktop | User-level desktop config | Restart after editing |
| Gemini CLI | User settings | Local stdio server |
| VS Code with GitHub Copilot | User profile or .vscode/mcp.json |
Confirm server trust on first start |
| Continue | Workspace .continue/mcpServers/ |
Separate from native VS Code MCP configuration |
| Cursor | User or project mcp.json |
Use an absolute command path |
| Devin Desktop (formerly Windsurf) | User MCP config | Keep no more than 100 active tools |
Recommended CLI registration:
codex mcp add asc-mcp -- ~/.mint/bin/asc-mcp
codex mcp list
codex mcp get asc-mcp --json
The same local MCP configuration is shared by Codex clients on that Mac. The user configuration is $CODEX_HOME/config.toml, which defaults to ~/.codex/config.toml:
[mcp_servers.asc-mcp]
command = "/Users/you/.mint/bin/asc-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 60
enabled = true
For a project-specific setup, place the same table in .codex/config.toml; Codex loads project configuration only after the project is trusted. If you use shell credentials instead of companies.json, explicitly forward them:
env_vars = ["ASC_KEY_ID", "ASC_ISSUER_ID", "ASC_PRIVATE_KEY_PATH"]
Restart a GUI client after changing the configuration, then use its MCP view or /mcp to confirm that asc-mcp is active. See the official Codex MCP documentation.
Register once for all local projects:
claude mcp add \
--transport stdio \
--scope user \
asc-mcp \
-- ~/.mint/bin/asc-mcp
claude mcp get asc-mcp
claude mcp list
Use --scope local for only the current project or --scope project to create a shared .mcp.json. Project servers require trust approval. Never place raw App Store Connect credentials in a committed .mcp.json.
Claude stores user and local MCP entries in ~/.claude.json; .claude/settings.json is not the global MCP registry. Use /mcp inside Claude Code to inspect or reconnect the server. See the official Claude Code MCP documentation.
Add the server to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
Quit and reopen Claude Desktop after saving the file.
Add the server to ~/.gemini/settings.json:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
The default Gemini MCP timeout is intentionally retained. See the official Gemini CLI MCP documentation.
Run MCP: Add Server from the Command Palette and choose the user profile for a personal setup. For a workspace setup, create .vscode/mcp.json:
{
"servers": {
"asc-mcp": {
"type": "stdio",
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
Confirm that you trust the local server when VS Code first starts it. Do not commit user-specific paths or secrets in a shared workspace file. See the official VS Code MCP documentation.
Continue does not use .vscode/mcp.json. Create .continue/mcpServers/asc-mcp.json in the workspace:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
MCP tools are available in Continue agent mode. See the official Continue MCP documentation.
Use ~/.cursor/mcp.json for all projects or .cursor/mcp.json for one project:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}
Restart or refresh the MCP server from Cursor settings after editing the file. See the official Cursor MCP documentation.
Add the server to ~/.codeium/windsurf/mcp_config.json. This example enables a 72-tool release subset, below Cascade's 100-tool limit:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp",
"args": [
"--workers",
"apps,builds,export_compliance,versions,reviews"
]
}
}
}
You can also disable individual tools in the client. Server-side worker filtering is recommended because it keeps the active catalog predictable. See the official Devin Desktop MCP documentation.
[!IMPORTANT]
commandmust point to the real executable. GUI clients often do not inherit shell aliases, PATH changes, or environment variables. Use an absolute path and prefer the defaultcompanies.jsoncredential file.
Worker Filtering
The server exposes 537 tools across 34 App Store tool domains + 2 core domains. Some MCP clients impose a tool limit; Cascade in Devin Desktop currently allows 100 active tools. Use the 36 --workers filter keys to enable only the workers you need:
# 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_submissions
company and auth workers are always enabled regardless of the filter (they provide core multi-account and authentication functionality).
When builds is enabled, it automatically includes build_processing and build_beta sub-workers.
Read-Only Mode
Use --read-only when you want safe inspection without App Store Connect mutations:
asc-mcp --read-only
asc-mcp --read-only --workers apps,builds,reviews,analytics
In this mode, read tools such as *_list, *_get, *_search, *_status, *_verify, *_parse, *_triage, auth_*, analytics, and metrics remain available. Tools that can create, update, upload, submit, release, delete, revoke, clear, cancel, or otherwise mutate App Store Connect are blocked before their worker handler runs. company_switch remains available because it changes only the local active company context.
App Store Connect MCP 질문
App Store Connect MCP는 어떤 도구를 제공하나요?
200개 도구를 제공합니다. 예: company_list, company_switch, company_current, auth_generate_token, auth_validate_token.
App Store Connect MCP server는 무엇을 할 수 있나요?
릴리스 및 메타데이터, TestFlight, 수익화, 마케팅 자산, 프로비저닝, 리뷰 및 Xcode Cloud를 포함한 App Store Connect 도메인 전반의 도구를 제공합니다.
App Store Connect MCP server는 어떻게 인증하나요?
App Store Connect API key(.p8 파일, Key ID 및 Issuer ID 포함)를 사용하며, 로컬 companies.json 파일 또는 환경 변수에 저장하여 사용합니다.
asc-mcp는 Linux나 Windows에서 실행 가능한가요?
아니요. Swift로 구축된 로컬 stdio server로 macOS에서만 지원되며, Linux와 Windows는 지원하지 않습니다.
어떤 MCP 클라이언트에서 asc-mcp를 사용할 수 있나요?
Codex, Claude Code, Claude Desktop, Gemini CLI, GitHub Copilot이 포함된 VS Code, Continue, Cursor, Devin Desktop에 대한 설정 예시가 포함되어 있습니다.
asc-mcp를 어떻게 설치하나요?
macOS에서 Homebrew로 Mint를 설치한 후, 지정된 릴리스에 대해 mint install을 실행합니다. 또는 Swift 6.2 이상을 사용하여 소스에서 직접 빌드할 수도 있습니다.