Skip to main content
Glama
alperduzgun

appnova-app-store-connect-mcp

by alperduzgun

title: appnova-app-store-connect-mcp emoji: ๐ŸŽ colorFrom: gray colorTo: red sdk: docker app_port: 7860 pinned: false

appnova-app-store-connect-mcp

App Store Connect MCP server for Claude โ€” manage your iOS app's entire lifecycle with natural language. No Docker, no Python, no pip. Just add 4 lines to your Claude config and start talking to your App Store.

48 tools ยท 14 categories ยท Hosted on Hugging Face Spaces ยท Free


Related MCP server: mcp-appstore-connect

No installation required. The server is already running on Hugging Face Spaces.

๐Ÿ“– Full installation guide with screenshots and troubleshooting: docs/installation.md

1. Get your App Store Connect API credentials

Go to App Store Connect โ†’ Users and Access โ†’ Integrations and create an API key with Admin or App Manager role. You'll need:

  • Issuer ID โ€” shown at the top of the API Keys page

  • Key ID โ€” shown next to your key

  • Private key โ€” download the .p8 file (only downloadable once)

  • Vendor Number โ€” from Payments and Financial Reports

2. Add to your Claude client

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "appstore": {
      "url": "https://haikuku-appnova-app-store-connect-mcp.hf.space/mcp",
      "headers": {
        "x-appstore-issuer-id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "x-appstore-key-id": "XXXXXXXXXX",
        "x-appstore-private-key": "-----BEGIN PRIVATE KEY-----\\nMIGH...\\n-----END PRIVATE KEY-----",
        "x-appstore-vendor-number": "12345678"
      }
    }
  }
}

Claude Code

Add to .mcp.json in your project root:

{
  "mcpServers": {
    "appstore": {
      "type": "http",
      "url": "https://haikuku-appnova-app-store-connect-mcp.hf.space/mcp",
      "headers": {
        "x-appstore-issuer-id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "x-appstore-key-id": "XXXXXXXXXX",
        "x-appstore-private-key": "-----BEGIN PRIVATE KEY-----\\nMIGH...\\n-----END PRIVATE KEY-----",
        "x-appstore-vendor-number": "12345678"
      }
    }
  }
}

3. Restart your Claude client

That's it. Ask Claude: "List my apps" to verify the connection.


How to format the private key

Open your .p8 file โ€” it looks like this:

-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg...
-----END PRIVATE KEY-----

Important: In the JSON config you must use \\n (two characters: backslash + n) instead of real line breaks. Using a single \n creates an actual newline which breaks HTTP headers.

Use this one-liner to get the correctly formatted value:

awk '{printf "%s\\n", $0}' AuthKey_XXXXXXXXXX.p8 | sed '$ s/\\n$//'

Paste the output directly as the x-appstore-private-key value.


Optional: Pin a default app

Add x-appstore-app-id to skip calling select_app every session:

"headers": {
  "x-appstore-issuer-id": "...",
  "x-appstore-key-id": "...",
  "x-appstore-private-key": "...",
  "x-appstore-vendor-number": "...",
  "x-appstore-app-id": "6502225088"
}

Use either the numeric App Store ID or bundle ID (e.g. com.example.yourapp).


Security

Your credentials are sent as HTTP headers directly to the server and used exclusively to sign JWT tokens for Apple's API. They are not logged, not stored, and not shared. Each request is fully isolated โ€” credentials from one user never touch another user's session.

The server is open source: github.com/alperduzgun/appnova-app-store-connect-mcp

If you prefer to host it yourself, see the Self-Hosting section below.


What You Can Do

App Store Optimization (ASO)

Tool

Description

get_locales

List all localizations with IDs โ€” lightweight index, call first

get_locale_metadata

Full metadata for one locale: name, subtitle, keywords, description, what's new

update_info

Update app name and/or subtitle (always editable, any version state)

update_version

Update keywords, description, what's new (requires PREPARE_FOR_SUBMISSION)

list_custom_product_pages

List all Custom Product Pages with version state and visibility

get_custom_product_page

Full CPP detail including per-locale promotional text

Reviews & Ratings

Tool

Description

get_reviews

Fetch reviews sorted by newest; filter by star rating (1โ€“5)

get_ratings

Average rating, total count, sample size

respond_to_review

Post a new developer response

update_review_response

Edit an existing response in-place (preserves timestamp)

delete_review_response

Delete a response before re-posting

Analytics & Sales

Tool

Description

get_analytics

Impressions, page views, app units, conversion rate, sessions, crashes โ€” daily breakdown up to 365 days

get_sales

Downloads, redownloads, updates, IAP, subscriptions, revenue โ€” daily breakdown up to 365 days

Finance Reports

Tool

Description

get_finance_report

Monthly proceeds by territory and currency for a specific month

get_finance_summary

Aggregated proceeds across the last N months (default 3, max 12)

Subscriptions

Tool

Description

list_subscription_groups

All subscription groups and their products

create_subscription_group

Create a new subscription group

create_subscription

Create a subscription product (weekly โ†’ yearly)

create_subscription_localization

Add localized name and description to a subscription

In-App Purchases

Tool

Description

list_in_app_purchases

All IAPs: consumable, non-consumable, non-renewing

create_in_app_purchase

Create a new IAP product

create_iap_localization

Add localized display name and description

delete_in_app_purchase

Delete a draft IAP

Pricing

Tool

Description

get_iap_price_points

All available price tiers for an IAP in a territory

set_iap_price

Set IAP price by price point ID

set_iap_price_by_amount

Set IAP price by dollar amount โ€” auto-matches tier

get_subscription_price_points

All available price tiers for a subscription

set_subscription_price

Set subscription price by price point ID

set_subscription_price_by_amount

Set subscription price by dollar amount โ€” auto-matches tier

App Versions & Submission

Tool

Description

list_app_versions

Recent versions with state (READY_FOR_SALE, IN_REVIEW, etc.)

create_app_version

Create a new version in PREPARE_FOR_SUBMISSION state

submit_for_review

Submit a version for App Review

cancel_submission

Withdraw an in-progress submission

Phased Release

Tool

Description

get_phased_release

Current phased rollout status for a version

create_phased_release

Enable 7-day phased rollout (1%โ†’2%โ†’5%โ†’10%โ†’20%โ†’50%โ†’100%)

update_phased_release

Pause, resume, or complete rollout immediately

TestFlight

Tool

Description

list_builds

Recent builds with processingState, version, expiration

list_beta_groups

All beta groups with public link info

add_beta_tester

Invite a tester to a beta group

remove_beta_tester

Remove a tester from a beta group

In-App Events

Tool

Description

list_app_events

All promotional events with state (DRAFT/LIVE/ARCHIVED) and localizations

Bundle ID Capabilities

Tool

Description

get_bundle_id_info

Numeric ID, platform, name, and seed ID for a bundle identifier

list_bundle_id_capabilities

All active capabilities (Sign in with Apple, Push, IAP, etc.)

enable_bundle_id_capability

Enable a capability โ€” idempotent, safe to call repeatedly

disable_bundle_id_capability

Remove a capability by resource ID

App Selection

Tool

Description

list_apps

All apps in your account

select_app

Set the active app by numeric ID or bundle ID

get_active_app

Show the currently selected app


Example Workflows

ASO audit across all locales:

"Get all my app's locale metadata and tell me which ones are missing keywords
or have subtitles under 20 characters"

Review triage:

"Show me all 1-star reviews from the last 50 and draft a response for each
one that mentions a crash"

Revenue summary:

"Give me a finance summary for the last 3 months and compare monthly trends"

Release workflow:

"Create a new 2.5.0 version, update the what's new text for en-US and tr,
then submit for review"

Capability check:

"List all active capabilities for com.example.myapp and confirm Sign in with
Apple is enabled"

Requirements

  • App Store Connect API key with Admin or App Manager role

  • Claude Desktop 0.10+ (or any MCP client that supports HTTP transport with custom headers)


Self-Hosting

Want to run the server yourself? Full source code and setup instructions at github.com/alperduzgun/appnova-app-store-connect-mcp.


License

MIT

A
license - permissive license
-
quality - not tested
D
maintenance

Maintenance

โ€“Maintainers
โ€“Response time
โ€“Release cycle
โ€“Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alperduzgun/appnova-app-store-connect-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server