Skip to main content
Glama
App Store Connect MCP Server

App Store Connect MCP Server

by ayberkozz

App Store Connect MCP Server

An MCP (Model Context Protocol) server that lets Claude talk to the App Store Connect API: app metadata, builds & releases, sales/analytics reports, and Game Center leaderboards/achievements.

1. Get App Store Connect API credentials

  1. Go to App Store Connect → Users and Access → Integrations → App Store Connect API.

  2. Click Generate API Key. You need Admin or App Manager access (Admin recommended, since sales reports and Game Center need broader access).

  3. Download the .p8 private key immediately — Apple only lets you download it once.

  4. Note the Issuer ID (top of the page) and the Key ID (next to your new key).

  5. For sales reports, also grab your Vendor Number from Payments and Financial Reports.

Related MCP server: appstore-connect-mcp

2. Configure

npm install
cp .env.example .env

Edit .env with your Issuer ID, Key ID, the path to your .p8 file, and (optionally) your vendor number.

3. Build

npm run build

4. Connect it to Claude

Claude Code:

claude mcp add appstore-connect -- node "/absolute/path/to/AppStoreConnectMCP/build/index.js"

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "appstore-connect": {
      "command": "node",
      "args": ["/absolute/path/to/AppStoreConnectMCP/build/index.js"],
      "env": {
        "ASC_ISSUER_ID": "...",
        "ASC_KEY_ID": "...",
        "ASC_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXX.p8",
        "ASC_VENDOR_NUMBER": "..."
      }
    }
  }
}

(If you use a .env file instead, the server loads it automatically from the project's own install directory, regardless of the working directory it's launched from — so either approach works for GUI apps too.)

Tools

Apps

  • list_apps, get_app

  • list_app_store_versions, get_app_store_version

Builds & releases

  • list_builds, get_build, expire_build

  • submit_version_for_review

Sales & analytics reports

  • download_sales_report — downloads and decodes SALES/SUBSCRIPTION/etc. reports (requires ASC_VENDOR_NUMBER)

Game Center

  • get_game_center_detail

  • list_game_center_leaderboards, create_game_center_leaderboard, delete_game_center_leaderboard, list_game_center_leaderboard_versions, create_game_center_leaderboard_localization

  • list_game_center_achievements, create_game_center_achievement, delete_game_center_achievement, list_game_center_achievement_versions, create_game_center_achievement_localization

Escape hatch

  • appstore_connect_request — call any App Store Connect endpoint directly (method/path/query/body) for anything not covered above.

Notes

  • Tokens are generated per-request and cached for ~19 minutes (Apple's JWTs expire after 20).

  • Game Center leaderboards and achievements use Apple's v2 API, which requires creating an initial "version" resource alongside the leaderboard/achievement — the create tools handle this automatically and return the version ID so you can immediately localize it.

  • Never commit your .p8 file or .env — both are gitignored.

Available Tools

21 tools
appstore_connect_requestRaw App Store Connect API requestA

Escape hatch for any App Store Connect API endpoint not covered by a dedicated tool. Path must start with '/v1/' or '/v2/'. See https://developer.apple.com/documentation/appstoreconnectapi for the full resource reference.

Inputs: path (required), body, query, method.

create_game_center_achievementCreate a Game Center achievementA

Create a new Game Center achievement. This also creates the initial achievement version required by the API, and returns that version's ID so you can immediately add localizations with create_game_center_achievement_localization.

Inputs: points (required), repeatable (required), referenceName (required), showBeforeEarned (required), +2 more.

create_game_center_achievement_localizationAdd an achievement localizationA

Add a localized name/description for an achievement version, for one locale.

Inputs: name (required), locale (required), versionId (required), afterEarnedDescription (required), +1 more.

create_game_center_leaderboardCreate a Game Center leaderboardA

Create a new Game Center leaderboard. This also creates the initial leaderboard version required by the API, and returns that version's ID so you can immediately add localizations with create_game_center_leaderboard_localization.

Inputs: referenceName (required), scoreSortType (required), submissionType (required), defaultFormatter (required), +5 more.

create_game_center_leaderboard_localizationAdd a leaderboard localizationB

Add a localized name/format for a leaderboard version, for one locale.

Inputs: name (required), locale (required), versionId (required), description, +3 more.

delete_game_center_achievementDelete a Game Center achievementB

Permanently delete a Game Center achievement.

Inputs: achievementId (required).

delete_game_center_leaderboardDelete a Game Center leaderboardB

Permanently delete a Game Center leaderboard.

Inputs: leaderboardId (required).

download_sales_reportDownload a sales/financial reportA

Download and decode a sales or subscription report (TSV) from App Store Connect. Returns the report as parsed rows (truncated to the first 500 for readability).

Inputs: frequency (required), reportDate (required), reportType (required), reportSubType (required), +1 more.

expire_buildExpire a buildA

Mark a TestFlight build as expired so it can no longer be installed by testers.

Inputs: buildId (required).

get_appGet app detailsC

Get details for a single app by its App Store Connect app ID.

Inputs: appId (required).

get_app_store_versionGet App Store version detailsA

Get details for a single App Store version record by its ID.

Inputs: versionId (required).

get_buildGet build detailsA

Get details for a single build by its ID.

Inputs: buildId (required).

get_game_center_detailGet Game Center detail for an appA

Get the gameCenterDetail resource ID for an app. This ID is required by every other Game Center tool.

Inputs: appId (required).

list_appsList appsB

List all apps in the App Store Connect account, with optional name/bundleId filtering.

Inputs: name, limit, bundleId.

list_app_store_versionsList App Store versionsB

List the App Store version records (releases) for an app.

Inputs: appId (required), limit.

list_buildsList buildsA

List builds for an app, optionally filtered by version string or processing state.

Inputs: appId (required), limit, version, processingState.

list_game_center_achievementsList Game Center achievementsB

List all achievements for a Game Center detail.

Inputs: gameCenterDetailId (required).

list_game_center_achievement_versionsList an achievement's versionsB

List the version resources for an achievement (needed to add localizations).

Inputs: achievementId (required).

list_game_center_leaderboardsList Game Center leaderboardsB

List all leaderboards for a Game Center detail.

Inputs: gameCenterDetailId (required).

list_game_center_leaderboard_versionsList a leaderboard's versionsB

List the version resources for a leaderboard (needed to add localizations).

Inputs: leaderboardId (required).

submit_version_for_reviewSubmit app version for App Store reviewA

Create an App Store review submission for an app store version, moving it into Apple's review queue.

Inputs: appId (required), versionId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 21 tools

    Disambiguation5/5

    Each dedicated tool maps cleanly to a distinct resource and action (apps, versions, builds, Game Center, sales), and the escape hatch is explicitly generic. There is no realistic confusion between tools like list_builds and list_app_store_versions because their targets are clearly different.

    Naming Consistency4/5

    Almost every tool follows a consistent lowercase verb_noun pattern such as list_*, get_*, create_*, delete_*, and expire_*. The only deviation is appstore_connect_request, which is intentionally a generic escape hatch rather than a verb_noun operation.

    Tool Count4/5

    At 21 tools, the set is on the heavier side, but the breadth of App Store Connect justifies it: apps, versions, builds, sales reports, and Game Center leaderboards/achievements each receive focused coverage. The single escape hatch also prevents the count from becoming bloated with many one-off endpoint tools.

    Completeness3/5

    The set covers core reads and Game Center lifecycle operations, but notable App Store operations are missing as first-class tools, such as updating a version, assigning a build to a version, or editing localizations once created. The appstore_connect_request escape hatch helps agents work around these gaps, but it does not make them first-class.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Provides AI assistants direct access to Apple's App Store Connect API, enabling them to manage apps, provisioning data, TestFlight builds, and App Store versions, including creating versions, attaching builds, and submitting for review.
      14
      MIT
    • A
      license
      A
      quality
      A
      maintenance
      Connects Claude to Apple's App Store Connect API, letting you manage apps, builds, TestFlight beta groups and testers, customer reviews and replies, sales and finance reports, and team users through natural language. Write actions such as invites, beta review submissions, and review responses require confirmation before anything is sent.
      22
      447 npm
      1
      MIT