axiom-asc-mcp

安装量: 56
排名: #13230

安装

npx skills add https://github.com/charleswiltgen/axiom --skill axiom-asc-mcp
App Store Connect MCP Integration
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.
Setup
Install
brew
install
mint
mint
install
zelentsov-dev/asc-mcp@1.4.0
Create API Key
Open
App Store Connect → Users and Access → Integrations → API
Generate key with
Admin
or
App Manager
role
Download the
.p8
file (one-time download — save it securely)
Note the
Key ID
and
Issuer ID
Add to Claude Code
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
Verify
Ask Claude to call
company_current
. If it returns your team name, you're connected.
Worker Filtering
asc-mcp has 25 workers (~208 tools). Loading all of them wastes context. Use
--workers
to load only what you need.
Presets
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.
Worker Selection Decision Tree
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"
]
;
}
Workflow: Release Pipeline
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.
Workflow: TestFlight Distribution
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.
Workflow: Review Management
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
:
Respond to negative reviews within 24-48 hours
Be professional and offer specific help
Updating a response replaces the previous one (users see "Developer Response")
Workflow: Feedback Triage
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.
Workflow: Multi-Company
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)
Multi-Company Setup
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.
Key Tool Quick Reference
Apps & Builds
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
Versions & Submission
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
TestFlight
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
Reviews & Metrics
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
API Constraints
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
.
Gotchas
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.
Anti-Rationalization
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.
When asc-mcp is NOT Available
If asc-mcp is not configured, fall back to manual workflows:
Crash analysis
Use Xcode Organizer (see
axiom-testflight-triage
) or App Store Connect web dashboard (see
axiom-app-store-connect-ref
)
TestFlight distribution
Use Xcode → Product → Archive → Distribute, or
xcodebuild
+
altool
Review management
Use App Store Connect web dashboard
Submission
Use Xcode → Product → Archive → Distribute to App Store
Resources
Skills
axiom-app-store-submission, axiom-app-store-ref, axiom-app-store-connect-ref, axiom-testflight-triage
Agents
crash-analyzer, security-privacy-scanner, iap-auditor
返回排行榜