Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STOMP — MCP Server for App Store Connect

Give Claude, Cursor, Windsurf, and other AI coding agents full access to the Apple App Store Connect API — a lean set of everyday tools plus a generic api_request escape hatch that reaches every endpoint.

npm npm downloads license GitHub stars

What is STOMP?

STOMP is a Model Context Protocol (MCP) server for Apple's App Store Connect API. It lets AI assistants manage your iOS, macOS, tvOS, and visionOS apps — TestFlight, builds, versions, App Store submissions, reviews, in-app purchases, and subscriptions.

STOMP deliberately ships a small, high-signal set of everyday tools rather than one wrapper per endpoint. Every registered tool costs context (its name, description, and full input schema are loaded for the whole session) and dilutes tool selection, so the long tail of the API is handled by a single generic api_request tool that can reach any App Store Connect endpoint — analytics, certificates, provisioning profiles, Game Center, Xcode Cloud, App Clips, sandbox testing, pricing, screenshots, and everything else. You lose nothing in capability; you just stop paying for 140 tool schemas you rarely call.

Prerequisites

  • Node.js 18+
  • An Apple Developer account with access to App Store Connect
  • An App Store Connect API key (.p8 file) with appropriate permissions

Getting your API key

  1. Sign in to App Store Connect
  2. Go to Users and Access > Integrations > App Store Connect API
  3. Click Generate API Key (or request one from your Account Holder)
  4. Choose a name and select the role/permissions the key should have
  5. Click Generate
  6. Download the .p8 file -- Apple only lets you download it once, so store it somewhere safe
  7. Note the Key ID shown in the table and the Issuer ID at the top of the page -- you'll need both

Installation

Install globally:

npm install -g @seriousmonster/app-store-connect-mcp

Or run directly without installing:

npx @seriousmonster/app-store-connect-mcp

Configuration

STOMP requires three environment variables:

Variable Description
APP_STORE_CONNECT_KEY_ID The Key ID from App Store Connect (e.g., ABC123DEFG)
APP_STORE_CONNECT_ISSUER_ID The Issuer ID (a UUID)
APP_STORE_CONNECT_P8_PATH Absolute path to your .p8 private key file (supports ~)

Claude Code

claude mcp add app-store-connect \
  -e APP_STORE_CONNECT_KEY_ID=YOUR_KEY_ID \
  -e APP_STORE_CONNECT_ISSUER_ID=YOUR_ISSUER_ID \
  -e APP_STORE_CONNECT_P8_PATH=~/.keys/AuthKey_YOUR_KEY_ID.p8 \
  -- npx @seriousmonster/app-store-connect-mcp

Cursor

Add to your Cursor MCP config (~/.cursor/mcp.json):

{
  "mcpServers": {
    "app-store-connect": {
      "command": "npx",
      "args": ["@seriousmonster/app-store-connect-mcp"],
      "env": {
        "APP_STORE_CONNECT_KEY_ID": "YOUR_KEY_ID",
        "APP_STORE_CONNECT_ISSUER_ID": "YOUR_ISSUER_ID",
        "APP_STORE_CONNECT_P8_PATH": "~/.keys/AuthKey_YOUR_KEY_ID.p8"
      }
    }
  }
}

Generic MCP client

Any MCP-compatible client (Claude Desktop, Cline, Zed, etc.) can run STOMP. Set the three environment variables and run npx @seriousmonster/app-store-connect-mcp as the server command.

Available tools

STOMP registers a focused set of dedicated tools for the day-to-day app lifecycle. Anything not listed here is reachable through api_request.

Apps

Tool Description
list_apps List all apps. Filter by name or bundle ID.
get_app Get details for a specific app by ID.

App Store Versions

Tool Description
list_app_store_versions List versions for an app. Filter by version string, platform, or state.
create_app_store_version Create a new version (set version string, platform, release type).

Localizations

Tool Description
list_version_localizations List all localizations for a version.
update_version_localization Update a localization's description, keywords, what's new, promo text, URLs.

TestFlight

Tool Description
list_beta_groups List beta groups for an app.
create_beta_group Create a new beta group.
add_tester_to_beta_group Add testers to a beta group.
remove_tester_from_beta_group Remove testers from a beta group.
submit_build_for_beta_review Submit a build for TestFlight beta review.

Builds

Tool Description
list_builds List builds for an app. Filter by version, state, or expiry.
add_build_to_beta_group Add builds to a beta group for TestFlight distribution.

Submissions

Tool Description
create_app_store_version_submission Submit a version for App Review.

Reviews

Tool Description
list_customer_reviews List customer reviews for an app. Sort and filter.
create_review_response Respond to a customer review.

Monetization (read)

Tool Description
list_in_app_purchases List in-app purchases for an app.
list_subscription_groups List subscription groups (include subscriptions for the full structure).
list_subscriptions List subscriptions within a subscription group.

Generic

Tool Description
api_request Make an arbitrary request to any App Store Connect API endpoint.

The api_request escape hatch

These dedicated tools cover the everyday workflow, but Apple's API surface is enormous — certificates, provisioning profiles, pricing, analytics, Game Center, Xcode Cloud, App Clips, sandbox testers, in-app-purchase and subscription authoring, screenshots, app events, and much more. Rather than ship a tool for each (and pay the context cost of every one), STOMP exposes a single api_request tool that can hit any endpoint directly.

You provide:

  • method -- GET, POST, PATCH, or DELETE
  • path -- the API path, e.g. /v1/apps, /v2/inAppPurchases/{id}
  • params (optional) -- query parameters as key-value pairs
  • body (optional) -- a JSON string for POST/PATCH requests, following Apple's JSON:API format

Authentication is handled automatically. Refer to Apple's API documentation for available endpoints and request formats.

License

MIT

About

Stomp — MCP server for the Apple App Store Connect API. Manage apps, versions, localizations, TestFlight, builds, and more via Model Context Protocol.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages