Odel
app store connect mcp

app store connect mcp

Local
@chrischall1TypeScriptMITUpdated 2 days ago

App Store Connect MCP: apps, TestFlight, reviews, sales reports, and team users.

App Store Connect MCP

CI license

A Model Context Protocol server that connects Claude to App Store Connect, giving you natural-language access to your apps, builds, TestFlight beta groups and testers, customer reviews, sales/finance reports, and team users.

[!WARNING] AI-developed project. This codebase was entirely built and is actively maintained by Claude Code. No human has audited the implementation. Review all code and tool permissions before use.

What you can do

Ask Claude things like:

  • "List my apps"
  • "Show me the latest builds for app 1234567890"
  • "Who hasn't accepted their TestFlight invitation?"
  • "Invite alex@example.com to the External Beta group"
  • "Submit build 9876 for beta review"
  • "What's our average rating in Japan this month?"
  • "Respond to that 1-star review with an apology"
  • "Pull yesterday's daily sales report for vendor 80012345"
  • "Invite a new developer with App Manager role"

Requirements

Installation

Option A — npm

npx -y @chrischall/app-store-connect-mcp

Add to your Claude config (.mcp.json or Claude Desktop config):

{
  "mcpServers": {
    "app-store-connect": {
      "command": "npx",
      "args": ["-y", "@chrischall/app-store-connect-mcp"],
      "env": {
        "APP_STORE_CONNECT_KEY_ID": "ABC1234567",
        "APP_STORE_CONNECT_ISSUER_ID": "57246542-96fe-1a63-e053-0824d011072a",
        "APP_STORE_CONNECT_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_ABC1234567.p8"
      }
    }
  }
}

Option B — from source

git clone https://github.com/chrischall/app-store-connect-mcp.git
cd app-store-connect-mcp
npm install
npm run build

Add to Claude Desktop config:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "app-store-connect": {
      "command": "node",
      "args": ["/absolute/path/to/app-store-connect-mcp/dist/bundle.js"],
      "env": {
        "APP_STORE_CONNECT_KEY_ID": "ABC1234567",
        "APP_STORE_CONNECT_ISSUER_ID": "57246542-96fe-1a63-e053-0824d011072a",
        "APP_STORE_CONNECT_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_ABC1234567.p8"
      }
    }
  }
}

Getting an API key

  1. Sign in at App Store Connect → Users and Access → Integrations → App Store Connect API.
  2. Click + to generate a key. Pick a role appropriate to what you want Claude to do — Developer is enough for read-only browsing; App Manager for TestFlight management; Admin for user invites and most write operations.
  3. Download the .p8 file (you can only download it once) and note the Key ID and Issuer ID.
  4. Either point APP_STORE_CONNECT_PRIVATE_KEY_PATH at the saved .p8, or paste the PEM contents into APP_STORE_CONNECT_PRIVATE_KEY (newline-escaped is fine).

The key signs short-lived (20-minute) ES256 JWTs on demand. No external token storage; nothing is sent to anyone but Apple.

Tools

ToolWhat it does
list_appsList apps in your account (filter by bundleId/name)
get_appGet a single app by ID
list_app_store_versionsList App Store releases for an app
get_app_infosAge rating and store-state info for an app
list_buildsRecent builds (newest first), filter by app/state/version
get_buildSingle build details
list_beta_groupsTestFlight internal/external beta groups
list_beta_testersBeta testers, filter by app/group/email
invite_beta_testerAdd a new tester, optionally to groups/builds
delete_beta_testerRemove a tester from your team
add_testers_to_beta_groupAdd existing testers to a group
remove_testers_from_beta_groupRemove testers from a group
submit_build_for_beta_reviewSend a build for TestFlight beta review
list_customer_reviewsApp Store reviews, filter by rating/territory
get_customer_reviewSingle review with developer response
respond_to_reviewPost or update a developer reply
download_sales_reportDaily/weekly/monthly/yearly units & sales TSV
download_finance_reportRegion finance/proceeds TSV
list_usersApp Store Connect team users
list_user_invitationsPending team invitations
invite_userInvite a new team member with roles
asc_healthcheckVerify credentials and upstream reachability; reports failures as data, not exceptions

Environment

VariableRequiredNotes
APP_STORE_CONNECT_KEY_IDyes10-character Key ID (e.g. ABC1234567)
APP_STORE_CONNECT_ISSUER_IDyesTeam Issuer ID (UUID)
APP_STORE_CONNECT_PRIVATE_KEYone ofFull PEM contents of your .p8. Newline-escapes (\n) are accepted.
APP_STORE_CONNECT_PRIVATE_KEY_PATHone ofAbsolute path to the .p8 file

Development

npm install
npm test               # vitest run
npm run test:watch     # watch mode
npm run build          # tsc + esbuild bundle
npm run dev            # node --env-file=.env dist/index.js

Tests mock client.request / client.requestRaw; no real App Store Connect calls are made.

License

MIT