- Home
- MCP servers
- App Store Connect
App Store Connect
- typescript
2
GitHub Stars
typescript
Language
3 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
Installation
Add the following to your MCP client configuration file.
Configuration
View docs{
"mcpServers": {
"zelentsov-dev-asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp",
"args": [],
"env": {
"ASC_KEY_ID": "XXXXXXXXXX",
"ASC_ISSUER_ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ASC_COMPANY_NAME": "My Company",
"ASC_VENDOR_NUMBER": "YOUR_VENDOR_NUMBER",
"ASC_PRIVATE_KEY_PATH": "/path/to/AuthKey.p8"
}
}
}
}You can run asc-mcp to connect Claude or any MCP-compatible host to the App Store Connect API, enabling automated management of apps, builds, TestFlight, reviews, and more through natural language commands.
How to use
You interact with the App Store Connect MCP Server through an MCP client. Start the MCP server once you have it running and configure it with your App Store Connect API credentials. Then instruct Claude or your MCP host to perform tasks such as listing apps, creating versions, distributing builds, managing TestFlight beta groups, handling customer reviews, provisioning, and monetization assets. You can switch between multiple configured companies, execute a complete release workflow, or focus on specific work areas by selecting the workers you need.
How to install
Prerequisites you need before installing ASC MCP Server:
-
macOS 14.0+ (Sonoma)
-
Swift 6.2+
-
Xcode 16.0+ (for building)
-
App Store Connect API Key to create a key pair (with Key ID and Issuer ID)
Step-by-step installation options are shown below. Pick the method you prefer and follow the exact commands.
Option A: Mint (recommended)
Install the MCP server using Mint, then register it with Claude Code.
# Install Mint (if you don\'t have it)
brew install mint
# Install asc-mcp from GitHub
mint install zelentsov-dev/asc-mcp@1.4.0
# Register in Claude Code
claude mcp add asc-mcp -- ~/.mint/bin/asc-mcp
To install a specific branch or tag, run one of these commands:
mint install zelentsov-dev/asc-mcp@main # main branch
mint install zelentsov-dev/asc-mcp@develop # develop branch
mint install zelentsov-dev/asc-mcp@1.4.0 # specific tag
To update to the latest version, use this command:
mint install zelentsov-dev/asc-mcp@1.4.0 --force
Option B: Build from Source
If you prefer building from source, clone the repository, build, and register the binary in Claude.
git clone https://github.com/zelentsov-dev/asc-mcp.git
cd asc-mcp
swift build -c release
# Register in Claude Code
claude mcp add asc-mcp -- $(pwd)/.build/release/asc-mcp
Optional: copy the binary to a PATH location for convenience.
cp .build/release/asc-mcp /usr/local/bin/asc-mcp
Configuration
You configure access to App Store Connect by providing an API key pair and optional metadata. You can configure a single company or multiple companies and select which company ASC MCP uses for operations.
1. App Store Connect API Key
Follow these steps to obtain your API key and credentials:
1) Go to App Store Connect → Users and Access → Integrations → Team Keys
2) Click Generate API Key — choose Admin or App Manager role
3) Download the .p8 private key file (downloadable once)
4) Note the Key ID and Issuer ID
2. Companies Configuration
ASC MCP supports configuring one or more companies. You can set credentials via environment variables, or provide a JSON file. The server resolves configuration in a fixed order, preferring explicit runtime config when present.
Environment variables (recommended for MCP clients)
Single company setup uses these variables:
export ASC_KEY_ID=XXXXXXXXXX
export ASC_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export ASC_PRIVATE_KEY_PATH=/path/to/AuthKey.p8
# optional metadata
export ASC_COMPANY_NAME="My Company"
export ASC_VENDOR_NUMBER=YOUR_VENDOR_NUMBER
For multiple companies, use numbered variables and the server will detect them automatically.
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=/path/to/AuthKey1.p8
export ASC_COMPANY_1_VENDOR_NUMBER=YOUR_VENDOR_NUMBER
export ASC_COMPANY_2_NAME="Client Corp"
export ASC_COMPANY_2_KEY_ID=YYYYYYYYYY
export ASC_COMPANY_2_ISSUER_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
export ASC_COMPANY_2_KEY_PATH=/path/to/AuthKey2.p8
Or use a JSON file at ~/.config/asc-mcp/companies.json with a list of companies.
{
"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 Corp",
"key_id": "YYYYYYYYYY",
"issuer_id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"key_path": "/Users/you/.keys/AuthKey_YYYYYYYYYY.p8",
"vendor_number": "YOUR_VENDOR_NUMBER"
}
]
}
Configuration priority determines which settings ASC MCP uses when multiple sources are present. The order is: explicit CLI argument, constructor parameter, ASC_MCP_COMPANIES env var, default JSON locations, multi-company env vars, then single-company env vars.
3. MCP Host Configuration
Connect ASC MCP to Claude or your MCP host using the provided host-specific snippets. You can attach your MCP server to Claude Desktop, Codex CLI, Gemini CLI, VS Code, Cursor, Windsurf, and other hosts by supplying the command and the necessary environment variables.
A sample host configuration is shown for Claude Code as an example.
claude mcp add asc-mcp -- ~/.mint/bin/asc-mcp
Worker filtering
The server exposes 208 tools across 25 workers. You can limit the loaded tools by selecting workers. Core capabilities like company management and authentication are always enabled. When you enable the builds worker, related processing sub-workers are included automatically.
Examples of worker filters you can apply when starting ASC MCP Server to focus on specific areas.
asc-mcp --workers apps,builds,versions
asc-mcp --workers apps,builds,versions,reviews,beta_groups,iap
asc-mcp --workers apps,iap,subscriptions,offer_codes,winback,pricing,promoted
Token cost
When connected to a language model, tool definitions consume context tokens. The footprint varies with the selected workers and the total tool count. The heaviest workers are provisioning, in-app purchases, and subscriptions.
Troubleshooting
If you encounter issues, verify paths to binaries and keys, ensure JSON configurations are valid, and check that the MCP host can access the ASC MCP binary. Restart the server after making changes.
Development
New features can be added by creating new workers and handlers, wiring them into the central router, and updating configuration to expose the new tools.
Contributing
Contributions are welcome. Follow standard contribution practices for adding new workers or extending existing functionality.
License
This project is released under the MIT License.
Acknowledgments
Model Context Protocol and App Store Connect API enable seamless automation workflows for iOS/macOS releases.
Available tools
company_list
List all configured companies
company_switch
Switch active company for API operations
company_current
Get current active company info
auth_generate_token
Generate JWT token for API access
auth_validate_token
Validate an existing JWT token
auth_refresh_token
Force refresh JWT token
auth_token_status
Get JWT token cache status
apps_list
List all applications with filtering
apps_get_details
Get detailed app information
apps_search
Search apps by name or Bundle ID
apps_list_versions
List all versions with states
apps_get_metadata
Get localized metadata for a version
apps_update_metadata
Update metadata (What's New, description, etc.)
apps_list_localizations
List localizations with content status
apps_create_localization
Create a new localization for a version
apps_delete_localization
Delete a localization from a version
builds_list
List builds with processing states
builds_get
Get detailed build information
builds_find_by_number
Find build by version number
builds_list_for_version
Get builds for specific app version
builds_get_processing_state
Get current processing state
builds_update_encryption
Set encryption compliance
builds_get_processing_status
Get detailed processing status
builds_check_readiness
Check if build is ready for submission
builds_get_beta_detail
Get TestFlight configuration for build
builds_update_beta_detail
Update TestFlight settings
builds_set_beta_localization
Set What's New for TestFlight
builds_list_beta_localizations
List all TestFlight localizations
builds_get_beta_groups
Get beta groups for a build
builds_get_beta_testers
Get individual testers for a build
builds_send_beta_notification
Send notification to beta testers
builds_add_beta_group
Add build to beta group
beta_groups_list
List TestFlight beta groups for an app
beta_groups_create
Create a new beta group
beta_groups_update
Update beta group settings
beta_groups_delete
Delete a beta group
beta_groups_add_testers
Add testers to a beta group
beta_groups_remove_testers
Remove testers from a beta group
beta_groups_list_testers
List testers in a beta group
beta_groups_add_builds
Add builds to a beta group
beta_groups_remove_builds
Remove builds from a beta group
beta_groups_list
List beta groups for an app
app_versions_create
Create a new app version
app_versions_list
List versions with state filtering
app_versions_get
Get detailed version information
app_versions_update
Update version attributes
app_versions_attach_build
Attach build to version
app_versions_submit_for_review
Submit for App Store review
app_versions_cancel_review
Cancel ongoing review
app_versions_release
Release approved version
app_versions_create_phased_release
Create gradual rollout
app_versions_get_phased_release
Get phased release info and ID
app_versions_update_phased_release
Pause/resume/complete rollout
app_versions_set_review_details
Set reviewer contact info
app_versions_update_age_rating
Configure age rating declaration
reviews_list
Get reviews with filtering and pagination
reviews_get
Get specific review details
reviews_list_for_version
Get reviews for a specific version
reviews_stats
Aggregated review statistics
reviews_create_response
Respond to a customer review
reviews_delete_response
Delete a response
reviews_get_response
Get response for a review
iap_list
List in-app purchases for an app
iap_get
Get IAP details
iap_create
Create a new IAP (consumable, non-consumable, subscription)
iap_update
Update IAP attributes
iap_delete
Delete an in-app purchase
iap_list_localizations
List IAP localizations
iap_create_localization
Create IAP localization
iap_update_localization
Update IAP localization
iap_delete_localization
Delete IAP localization
iap_submit_for_review
Submit IAP for review
iap_list_subscriptions
List subscription groups
iap_get_subscription_group
Get subscription group details
iap_list_price_points
List available price points
iap_get_price_schedule
Get price schedule
iap_set_price_schedule
Set price schedule
iap_get_review_screenshot
Get review screenshot
iap_create_review_screenshot
Create review screenshot
subscriptions_list
List subscriptions in a group
subscriptions_get
Get subscription details
subscriptions_create
Create a new subscription
subscriptions_update
Update subscription
subscriptions_delete
Delete subscription
subscriptions_list_localizations
List subscription localizations
subscriptions_create_localization
Create localization
subscriptions_update_localization
Update localization
subscriptions_delete_localization
Delete localization
subscriptions_list_prices
List subscription prices
subscriptions_list_price_points
List available price points
subscriptions_create_group
Create subscription group
subscriptions_update_group
Update subscription group
subscriptions_delete_group
Delete subscription group
subscriptions_submit
Submit subscription for review
offer_codes_list
List offer code configurations
offer_codes_create
Create offer code configuration
offer_codes_update
Update offer code (enable/disable)
offer_codes_deactivate
Deactivate all codes
offer_codes_list_prices
List prices for an offer code
offer_codes_generate_one_time
Generate one-time use codes (up to 10K)
offer_codes_list_one_time
List generated one-time codes
winback_list
List win-back offers
winback_create
Create a win-back offer
winback_update
Update a win-back offer
winback_delete
Delete a win-back offer
winback_list_prices
List win-back offer prices
provisioning_list_bundle_ids
List registered bundle identifiers
provisioning_get_bundle_id
Get bundle ID details
provisioning_create_bundle_id
Register a new bundle identifier
provisioning_delete_bundle_id
Delete a bundle identifier
provisioning_list_devices
List registered devices
provisioning_register_device
Register a new device (UDID)
provisioning_update_device
Update device name or status
provisioning_list_certificates
List signing certificates
provisioning_get_certificate
Get certificate details
provisioning_revoke_certificate
Revoke a certificate
provisioning_list_profiles
List provisioning profiles
provisioning_get_profile
Get profile details
provisioning_delete_profile
Delete a profile
provisioning_create_profile
Create a provisioning profile
provisioning_list_capabilities
List bundle ID capabilities
provisioning_enable_capability
Enable a capability
provisioning_disable_capability
Disable a capability
screenshots_list_sets
List screenshot sets
screenshots_create_set
Create a screenshot set
screenshots_delete_set
Delete a screenshot set
screenshots_list
List screenshots in a set
screenshots_create
Reserve a screenshot upload
screenshots_delete
Delete a screenshot
screenshots_reorder
Reorder screenshots in a set
screenshots_list_preview_sets
List app preview sets
screenshots_create_preview_set
Create a preview set
screenshots_delete_preview_set
Delete a preview set
screenshots_create_preview
Reserve a preview upload
screenshots_delete_preview
Delete a preview
custom_pages_list
List custom product pages
custom_pages_get
Get page details
custom_pages_create
Create a custom page
custom_pages_update
Update a custom page
custom_pages_delete
Delete a custom page
custom_pages_list_versions
List page versions
custom_pages_create_version
Create a page version
custom_pages_list_localizations
List version localizations
custom_pages_create_localization
Create a localization
custom_pages_update_localization
Update a localization
ppo_list_experiments
List A/B test experiments
ppo_get_experiment
Get experiment details
ppo_create_experiment
Create an experiment
ppo_update_experiment
Update/start/stop experiment
ppo_delete_experiment
Delete an experiment
ppo_list_treatments
List experiment treatments
ppo_create_treatment
Create a treatment variant
ppo_list_treatment_localizations
List treatment localizations
ppo_create_treatment_localization
Create treatment localization
promoted_list
List promoted purchases for an app
promoted_get
Get promotion details
promoted_create
Create a promotion
promoted_update
Update promotion (visibility/order)
promoted_delete
Delete a promotion
metrics_app_perf
Get app performance/power metrics
metrics_build_perf
Get build performance metrics
metrics_build_diagnostics
List diagnostics for a build
metrics_get_diagnostic_logs
Get diagnostic logs