App Store Connect

Provides an MCP gateway that automates App Store Connect tasks such as app management, releases, TestFlight, reviews, IAPs, subscriptions, provisioning, and analytics.
  • 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

Built by
VeilStrat
AI signals for GTM teams
© 2026 VeilStrat. All rights reserved.All systems operational