App Store Connect MCP
Provides tools for interacting with Apple's App Store Connect API, enabling management of apps, app store versions, builds, beta groups and testers, customer reviews, sales reports, and generic API requests.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@App Store Connect MCPlist my apps in App Store Connect"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
App Store Connect MCP — remote stateless
Live:
https://appstore.michelangelo.land/mcp
A remote MCP server on Cloudflare Workers for the App Store Connect API. Multi-developer by design: nobody shares API keys.
How it works (BYOK stateless)
Each developer creates their own API key in App Store Connect:
Admins:
Users and Access > Integrations > Team Keys > Generate(pick the minimum role, e.g. Developer)Non-admins: your user profile > Individual Key (inherits your permissions; no Sales/Finance/Provisioning). Apple docs:
https://developer.apple.com/documentation/appstoreconnectapi/creating-api-keys-for-app-store-connect-api
Sign the JWT locally (your
.p8never leaves your machine):export ASC_ISSUER_ID="..." ASC_KEY_ID="..." export ASC_PRIVATE_KEY="$(cat AuthKey_XXXX.p8)" bun run mint-jwtOutput: a JWT valid for 15 min (
aud appstoreconnect-v1,alg ES256).Pass the JWT as the
appleJwtargument of every tool. The Worker validates shape/expiry and proxies to Apple. A bad signature comes back as an Apple 401 — never logged.
Related MCP server: Ploi.io MCP Server
Tools
validate_jwt (no Apple call) plus proxies: list_apps, get_app, list_app_store_versions, list_builds, get_build, list_beta_groups, list_beta_testers, list_customer_reviews, get_sales_report, asc_get, asc_request
(the last one needs confirmDelete:true for DELETE and auto-paginates links.next).
Out of the MVP scope: search_endpoints / describe_endpoint (the 6.8MB OpenAPI
spec can't be bundled in the Worker). Phase 2: spec on R2 + search index. Until
then use asc_get / asc_request with the paths from Apple's docs.
Development
bun install
bun run type-check
bun run dev # http://localhost:8788/mcp
bun run deploy # https://appstore.michelangelo.land/mcpDebug: npx @modelcontextprotocol/inspector@latest → point it at /mcp →
call validate_jwt with your JWT → then list_apps.
Use from opencode
// opencode.jsonc (consumer project)
{
"mcp": {
"appstore-connect": {
"type": "remote",
"url": "https://appstore.michelangelo.land/mcp"
}
}
}No secrets in the config. The flow is: bun run mint-jwt → paste the JWT as
appleJwt whenever the agent calls a tool (it expires every 15 min — Apple's
choice, 20 min max).
Security (MVP)
The Worker has no secrets, no KV, no D1. Zero storage = zero at-rest breach surface.
Never logged: JWTs,
.p8keys, full issuer IDs. Safe to log:kid, Apple status codes, latency.Apple's rate limit is per key (
X-Rate-Limit, 429 + honoredRetry-Afterwith backoff, max 3 attempts): one tenant can't burn the others' quota. Use a dedicated key for the MCP, separate from CI.Revocation: delete the key in App Store Connect (
Users and Access > Keys); already-issued JWTs die on their own within 15 min.Known limitation: the Worker does not verify the ES256 signature (no public key) — Apple does. Always serve over HTTPS and consider putting Cloudflare Access in front of
/mcpto restrict who can call it.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
- app-managerOAuthapp.lance
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
Run App Store Connect from your IDE: pricing, listings, screenshots, releases, AI visibility.
The bridge from K2 agents through Wrangler to your master AI - safe, approval-gated Cloudflare ops.
Issue, rotate and revoke scoped API-key passes for 25+ providers — the agent never sees a real key
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Cloudflare Worker that provides API access to Postman collections and environments via the Claude AI MCP interface, enabling Claude to assist with API testing, documentation, and management tasks.50 npm3ISC
- FlicenseAqualityDmaintenanceEnables managing Ploi.io servers, sites, databases, and Docker containers through the Ploi API, supporting both local stdio and remote Cloudflare Worker deployments with multi-tenant authentication.32-
- AlicenseNot gradedqualityBmaintenanceExposes the full Airtable Web API including document attachment upload and download, runs on Cloudflare Workers with OAuth 2.1 authentication, and supports file staging via R2 for unlimited attachment sizes.1,682 npmMIT
- AlicenseNot gradedqualityBmaintenanceRuns on Cloudflare Workers to let MCP clients execute AWS API commands with your own credentials via SigV4-signed HTTPS requests. Supports common S3, EC2, IAM, Lambda, and STS operations plus a generic escape-hatch for any AWS API call.6 npmISC