一键导入
axiom-asc-mcp
Use when automating App Store Connect via MCP — submit builds, manage TestFlight, respond to reviews, triage feedback programmatically
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when automating App Store Connect via MCP — submit builds, manage TestFlight, respond to reviews, triage feedback programmatically
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Generate and edit images with Google's Nano Banana 2 model through the official Python Google GenAI SDK. Use when a user asks to create an image, edit an existing image, restyle a photo, add or remove visual elements, create concept art, mockups, infographics, or product shots with Gemini / Nano Banana, especially when the result should be saved locally and the API key may come from the environment or a file.
Use when fixing VoiceOver issues, Dynamic Type violations, color contrast failures, touch target problems, keyboard navigation gaps, or Reduce Motion support - comprehensive accessibility diagnostics with WCAG compliance, Accessibility Inspector workflows, and App Store Review preparation for iOS/macOS
Use when structuring app entry points, managing authentication flows, switching root views, handling scene lifecycle, or asking 'how do I structure my @main', 'where does auth state live', 'how do I prevent screen flicker on launch', 'when should I modularize' - app-level composition patterns for iOS 26+
Use when making app surface in Spotlight search, Siri suggestions, or system experiences - covers the 6-step strategy combining App Intents, App Shortcuts, Core Spotlight, and NSUserActivity to feed the system metadata for iOS 16+
Use when integrating App Intents for Siri, Apple Intelligence, Shortcuts, Spotlight, or system experiences - covers AppIntent, AppEntity, parameter handling, entity queries, background execution, authentication, and debugging common integration issues for iOS 16+
Use when implementing App Shortcuts for instant Siri/Spotlight availability, configuring AppShortcutsProvider, adding suggested phrases, or debugging shortcuts not appearing - covers complete App Shortcuts API for iOS 16+
| name | axiom-asc-mcp |
| description | Use when automating App Store Connect via MCP — submit builds, manage TestFlight, respond to reviews, triage feedback programmatically |
| license | MIT |
Core principle: When asc-mcp is configured, you can manage the entire App Store Connect workflow without leaving Claude Code — submit builds, distribute to TestFlight, respond to reviews, and monitor metrics programmatically.
brew install mint
mint install zelentsov-dev/asc-mcp@1.4.0
.p8 file (one-time download — save it securely)claude mcp add asc-mcp \
-e ASC_KEY_ID=YOUR_KEY_ID \
-e ASC_ISSUER_ID=YOUR_ISSUER_ID \
-e ASC_PRIVATE_KEY_PATH=/path/to/AuthKey.p8 \
-- ~/.mint/bin/asc-mcp
Ask Claude to call company_current. If it returns your team name, you're connected.
asc-mcp has 25 workers (~208 tools). Loading all of them wastes context. Use --workers to load only what you need.
| Preset | Workers | Tools | Use Case |
|---|---|---|---|
| TestFlight | apps,builds,beta_groups,beta_testers | ~34 | Beta distribution |
| Release | apps,builds,versions,reviews | ~40 | App Store submission |
| Monetization | apps,iap,subscriptions,offer_codes,pricing | ~55 | IAP and subscriptions |
| Full | (default, all workers) | ~208 | Everything |
To use a preset, add --workers when registering the server:
claude mcp add asc-mcp \
-e ASC_KEY_ID=... \
-e ASC_ISSUER_ID=... \
-e ASC_PRIVATE_KEY_PATH=... \
-- ~/.mint/bin/asc-mcp --workers apps,builds,versions,reviews
Note: company and auth workers always load regardless of --workers. When builds is enabled, build_processing and build_beta are included automatically.
digraph workers {
"What are you doing?" [shape=diamond];
"TestFlight preset" [shape=box, label="--workers apps,builds,\nbeta_groups,beta_testers"];
"Release preset" [shape=box, label="--workers apps,builds,\nversions,reviews"];
"Monetization preset" [shape=box, label="--workers apps,iap,\nsubscriptions,offer_codes,pricing"];
"Full (no flag)" [shape=box, label="No --workers flag\n(all 208 tools)"];
"What are you doing?" -> "TestFlight preset" [label="distributing beta builds"];
"What are you doing?" -> "Release preset" [label="submitting to App Store"];
"What are you doing?" -> "Monetization preset" [label="managing IAP/subscriptions"];
"What are you doing?" -> "Full (no flag)" [label="multiple tasks or unsure"];
}
Submit a new version to the App Store.
1. apps_search(query: "MyApp") → get app ID
2. builds_list(appId, limit: 5) → find latest processed build
3. app_versions_create(appId, platform: "IOS", versionString: "2.1.0")
4. app_versions_attach_build(versionId, buildId)
5. app_versions_set_review_details(versionId, { contactEmail, notes, ... })
6. app_versions_submit_for_review(versionId)
7. (After approval) app_versions_create_phased_release(versionId)
Before step 3: Version string must not already exist. Check with app_versions_list.
Before step 4: Build must be in VALID processing state. Check with builds_get_processing_state.
Before step 6: Version must be in PREPARE_FOR_SUBMISSION state. Attaching a build and setting review details are prerequisites.
Distribute a build to beta testers.
1. apps_search(query: "MyApp") → get app ID
2. builds_list(appId, limit: 5) → find latest build
3. builds_set_beta_localization(buildId, locale: "en-US", whatsNew: "Bug fixes")
4. beta_groups_list(appId) → find or create group
OR beta_groups_create(appId, name: "Internal Testers", isInternal: true)
5. beta_groups_add_builds(groupId, [buildId])
6. builds_send_beta_notification(buildId) → notify testers (optional)
Tip: Internal testers (up to 100) get builds immediately. External testers (up to 10,000) require Beta App Review for the first build of each version.
Monitor and respond to App Store reviews.
1. apps_search(query: "MyApp") → get app ID
2. reviews_list(appId, sort: "-createdDate", limit: 20)
OR reviews_list(appId, filterRating: "1,2") → negative reviews only
3. reviews_stats(appId) → rating distribution summary
4. reviews_create_response(reviewId, responseBody: "Thank you for...")
Response guidelines:
Correlate TestFlight feedback with build diagnostics.
1. builds_list(appId, limit: 10) → recent builds
2. builds_get_beta_testers(buildId) → who tested this build
3. metrics_build_diagnostics(buildId) → crash signatures for this build
4. metrics_get_diagnostic_logs(signatureId) → individual crash logs
Limitation: TestFlight text feedback and screenshots are NOT available via the App Store Connect API. Use Xcode Organizer or the ASC web dashboard for feedback content.
Switch between App Store Connect teams.
1. company_list → see configured accounts
2. company_switch(companyId: "client-a") → switch active account
3. (All subsequent calls use client-a's credentials)
Add to ~/.config/asc-mcp/companies.json:
{
"companies": [
{
"id": "my-company",
"name": "My Company",
"key_id": "KEY_ID_1",
"issuer_id": "ISSUER_1",
"key_path": "/Users/you/.keys/AuthKey1.p8"
},
{
"id": "client-a",
"name": "Client A",
"key_id": "KEY_ID_2",
"issuer_id": "ISSUER_2",
"key_path": "/Users/you/.keys/AuthKey2.p8"
}
]
}
Or use numbered environment variables: ASC_COMPANY_1_NAME, ASC_COMPANY_1_KEY_ID, etc.
| Tool | Parameters | Returns |
|---|---|---|
apps_search | query | App ID, name, bundleId, platform |
apps_list | limit | All apps in account |
builds_list | appId, limit, sort | Build number, version, processing state |
builds_find_by_number | appId, buildNumber | Specific build details |
builds_get_processing_state | buildId | PROCESSING, VALID, INVALID, etc. |
builds_check_readiness | buildId | Whether build is ready for distribution |
| Tool | Parameters | Returns |
|---|---|---|
app_versions_create | appId, platform, versionString | New version in PREPARE_FOR_SUBMISSION |
app_versions_attach_build | versionId, buildId | Attached build |
app_versions_set_review_details | versionId, contactEmail, notes, etc. | Review details |
app_versions_submit_for_review | versionId | Submitted for review |
app_versions_cancel_review | versionId | Cancelled review |
app_versions_release | versionId | Manual release |
app_versions_create_phased_release | versionId | 7-day phased rollout |
| Tool | Parameters | Returns |
|---|---|---|
beta_groups_create | appId, name, isInternal | New group |
beta_groups_add_testers | groupId, testerIds | Updated group |
beta_groups_add_builds | groupId, buildIds | Build distributed |
builds_set_beta_localization | buildId, locale, whatsNew | "What to Test" text |
builds_send_beta_notification | buildId | Testers notified |
| Tool | Parameters | Returns |
|---|---|---|
reviews_list | appId, sort, filterRating, limit | Review entries |
reviews_stats | appId | Rating distribution |
reviews_create_response | reviewId, responseBody | Developer response |
metrics_app_perf | appId | App-level performance metrics |
metrics_build_diagnostics | buildId | Crash signatures per build |
| Constraint | Details |
|---|---|
| No emoji in metadata | Version "What's New", descriptions, keywords — use words, not emoji |
| Version state | Only PREPARE_FOR_SUBMISSION versions are editable. Once submitted, create a new version to make changes. |
| JWT lifetime | 20-minute tokens, auto-refreshed by asc-mcp |
| Rate limits | Apple enforces per-account limits. asc-mcp retries with exponential backoff on 429s. |
| Locale format | Standard codes: en-US, ja, de-DE, zh-Hans, ru |
| Build processing | Newly uploaded builds take 15-30 minutes to process. Poll builds_get_processing_state before attaching. |
| Phased release | Only available after approval. Can pause/resume with app_versions_update_phased_release. |
| Gotcha | Details |
|---|---|
| Build not found | Build may still be processing. Check builds_get_processing_state — must be VALID. |
| "Version already exists" | Can't create duplicate version strings. Use app_versions_list to check first. |
| Attach fails | Build must be processed AND the version must be in PREPARE_FOR_SUBMISSION. |
| Review details rejected | Contact info fields have format requirements. Email must be valid, phone must include country code. |
| Wrong app | apps_search is fuzzy. Verify the returned bundleId matches your target app. |
| Multi-company confusion | Always call company_current first to confirm which account is active before making changes. |
| Beta App Review | First external TestFlight build per version requires review. Subsequent builds to the same version are auto-approved. |
| Missing analytics | analytics_* tools require vendor_number in company config. Without it, sales/financial reports fail silently. |
| Thought | Reality |
|---|---|
| "I'll just use the ASC web dashboard" | MCP tools are faster for repetitive tasks — respond to 20 reviews, distribute to 5 groups, create versions across apps. |
| "I don't need worker filtering" | 208 tools consume ~30K tokens of context. Filter to what you need. |
| "I'll submit without review details" | Submission will fail. app_versions_set_review_details is required before app_versions_submit_for_review. |
"I'll skip company_current — I only have one account" | Multi-company configs persist between sessions. Always verify. |
| "Feedback triage is the same via API" | Text feedback and screenshots are NOT in the ASC API. Use Organizer for feedback content, MCP for crash diagnostics. |
If asc-mcp is not configured, fall back to manual workflows:
axiom-testflight-triage) or App Store Connect web dashboard (see axiom-app-store-connect-ref)xcodebuild + altoolSkills: axiom-app-store-submission, axiom-app-store-ref, axiom-app-store-connect-ref, axiom-testflight-triage
Agents: crash-analyzer, security-privacy-scanner, iap-auditor