Back to Directory/Security & Auth

io.github.beautyfree/app-store-connect

App Store Connect API as MCP: apps, TestFlight, subscriptions, localizations, reports. JWT auth.

Security & AuthTypeScriptv2.0.4

npm version License

A Model Context Protocol (MCP) server that connects Cursor, Claude Desktop, and other MCP clients to the official App Store Connect API—so you can manage iOS/macOS apps, TestFlight, in-app subscriptions, and store metadata via chat or automated tool calls instead of clicking through the App Store Connect UI.

Use it to: list and inspect apps, builds, and beta groups · manage TestFlight testers and review submissions · create and update subscription groups and prices · edit App Store version localizations and "What's New" · download sales and finance reports · list Xcode schemes and CI products. All with JWT auth and the same API Apple's own tools use.

Install

Cursor (install link):

Install MCP Server

Other clients (Claude Desktop, etc.):

npx add-mcp mcp-asc

Configure

Add the server to your MCP config and set these environment variables:

VariableRequiredDescription
APP_STORE_CONNECT_KEY_IDYesAPI Key ID from App Store Connect
APP_STORE_CONNECT_ISSUER_IDYesIssuer ID from App Store Connect
APP_STORE_CONNECT_P8_PATHYesPath to your .p8 private key file
APP_STORE_CONNECT_VENDOR_NUMBERFor reportsNeeded for sales/finance reports

Create an API key at App Store Connect → Users and Access → Integrations → App Store Connect API. Download the .p8 and note Key ID and Issuer ID.

Example (stdio):

{
  "mcpServers": {
    "app-store-connect": {
      "command": "npx",
      "args": ["-y", "mcp-asc"],
      "env": {
        "APP_STORE_CONNECT_KEY_ID": "YOUR_KEY_ID",
        "APP_STORE_CONNECT_ISSUER_ID": "YOUR_ISSUER_ID",
        "APP_STORE_CONNECT_P8_PATH": "/path/to/AuthKey_XXXXX.p8",
        "APP_STORE_CONNECT_VENDOR_NUMBER": "YOUR_VENDOR_NUMBER_OPTIONAL"
      }
    }
  }
}

Example (HTTP SSE): Run npm run build then npm run start:http. Point your client at http://localhost:3001/mcp with the same env vars.

Tools

Tools are exposed in kebab-case. Use your MCP client to list them and see parameters. Summary by area:

Apps & metadata

  • list-apps, get-app, list-app-infos, get-app-info, get-app-availability
  • list-app-store-versions, get-app-store-version, create-app-store-version, update-app-store-version
  • list-app-store-version-localizations, list-app-categories, list-app-encryption-declarations, list-nominations

TestFlight / Beta

  • list-beta-groups, get-beta-group, list-beta-testers, get-beta-tester, add-beta-testers-to-group, remove-beta-testers-from-group
  • list-builds, get-build, list-build-beta-details, list-pre-release-versions, get-pre-release-version
  • list-beta-app-localizations, list-beta-app-review-details, list-beta-app-review-submissions, list-beta-license-agreements, get-beta-license-agreement, update-beta-license-agreement

Subscriptions

  • list-subscription-groups, list-subscription-group-subscriptions, get-subscription, create-subscription-group, create-subscription
  • create-subscription-availability, list-subscription-price-points, create-subscription-price, create-subscription-localization

Store & review

  • list-review-submissions, get-review-submission, submit-for-review, list-customer-reviews, create-customer-review-response
  • get-app-store-review-detail, update-app-store-review-detail

Other

  • list-bundle-ids, get-bundle-id · list-certificates, get-certificate · list-profiles · list-devices, get-device
  • list-users, get-user, list-user-invitations · list-territories · list-actors, get-actor
  • get-eula, update-eula · get-phased-release, create-phased-release · update-age-rating-declaration
  • list-schemes (Xcode), list-ci-products (Xcode Cloud)
  • download-sales-report, download-finance-report (require APP_STORE_CONNECT_VENDOR_NUMBER)

Development

Built with xmcp. One tool per file under src/tools/; each file exports metadata and a default handler.

npm install
npm run build
npm run start:stdio   # or npm run start:http for HTTP transport
npm run dev            # watch + run

Node 20+.

Open Plugins

This repository now includes Open Plugins-compatible metadata and layout:

  • .plugin/plugin.json for plugin metadata
  • .mcp.json for MCP server wiring
  • skills/app-store-connect/SKILL.md for installable skill context

Open Plugins standard: open-plugins.com

You can test locally by loading the plugin directory in a compatible host, for example:

claude --plugin-dir .

Listing in MCP catalogs

To add this server to the official MCP Registry, Cursor MCP Directory, cursor.store, and other catalogs, see docs/REGISTRY.md.

License

MIT.

Links

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y mcp-asc

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-beautyfree-app-store-connect": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-asc"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

mcp-ascnpm

Compatible MCP Clients

io.github.beautyfree/app-store-connect works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More