Heimdall — Claude Code MCP server for App Store Connect
An MCP server that puts App Store Connect and StoreKit 2 inside your AI agent: releases, TestFlight, subscriptions, reviews, reports.
claude mcp add --env ASC_KEY_ID=<ASC_KEY_ID> --env ASC_ISSUER_ID=<ASC_ISSUER_ID> --env ASC_PRIVATE_KEY=<ASC_PRIVATE_KEY> --env ASC_PRIVATE_KEY_PATH=<ASC_PRIVATE_KEY_PATH> --env ASC_BUNDLE_ID=<ASC_BUNDLE_ID> --transport stdio heimdall -- npx -y @erayendes/asc-mcpWhat Heimdall does
Heimdall is generated from Apple's OpenAPI specification. It ships 13 profiles, 33 sub-profiles and 928 tools covering app metadata, versions, TestFlight, subscriptions and in-app purchases, pricing, reviews, Game Center, Xcode Cloud, provisioning, webhooks and finance reports. You enable only the profiles you want and change that set later. Unsure where a given endpoint lives? Ask the agent — the server points you to the right profile.
It runs on your machine. The App Store Connect key is read from the Keychain, a short-lived token is signed from it, and calls go straight to Apple. No middle layer holds your credentials. Actions that are hard to undo — repricing, granting Admin access, deletions, submitting a version for review — prompt for confirmation first, with a summary of what changes.
You need Node.js 20.19 or later and an App Store Connect API key. Give that key the narrowest role that still does the job. Heimdall sits next to Fastlane rather than replacing it: the pipeline stays in Fastlane, everything you would otherwise click through by hand goes to the agent.
What it helps with
- see which builds are stuck in review
- raise a subscription price across every country
- gather a week of reviews and draft replies
- add a build to the internal and external tester groups
- find out why an Xcode Cloud build failed
Example prompts for the agent
- Which builds are sitting in review right now?
- Raise the price of this subscription in every country
- Add build 42 to the internal and external TestFlight groups
How to install Heimdall
Platform CLI
claude mcp add --env ASC_KEY_ID=<ASC_KEY_ID> --env ASC_ISSUER_ID=<ASC_ISSUER_ID> --env ASC_PRIVATE_KEY=<ASC_PRIVATE_KEY> --env ASC_PRIVATE_KEY_PATH=<ASC_PRIVATE_KEY_PATH> --env ASC_BUNDLE_ID=<ASC_BUNDLE_ID> --transport stdio heimdall -- npx -y @erayendes/asc-mcpReplace <…> with your own values
Platform CLI
codex mcp add heimdall --env ASC_KEY_ID=<ASC_KEY_ID> --env ASC_ISSUER_ID=<ASC_ISSUER_ID> --env ASC_PRIVATE_KEY=<ASC_PRIVATE_KEY> --env ASC_PRIVATE_KEY_PATH=<ASC_PRIVATE_KEY_PATH> --env ASC_BUNDLE_ID=<ASC_BUNDLE_ID> -- npx -y @erayendes/asc-mcpReplace <…> with your own values
Config file
{
"mcpServers": {
"heimdall": {
"command": "npx",
"args": [
"-y",
"@erayendes/asc-mcp"
],
"env": {
"ASC_KEY_ID": "<ASC_KEY_ID>",
"ASC_ISSUER_ID": "<ASC_ISSUER_ID>",
"ASC_PRIVATE_KEY": "<ASC_PRIVATE_KEY>",
"ASC_PRIVATE_KEY_PATH": "<ASC_PRIVATE_KEY_PATH>",
"ASC_BUNDLE_ID": "<ASC_BUNDLE_ID>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"heimdall": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@erayendes/asc-mcp"
],
"env": {
"ASC_KEY_ID": "<ASC_KEY_ID>",
"ASC_ISSUER_ID": "<ASC_ISSUER_ID>",
"ASC_PRIVATE_KEY": "<ASC_PRIVATE_KEY>",
"ASC_PRIVATE_KEY_PATH": "<ASC_PRIVATE_KEY_PATH>",
"ASC_BUNDLE_ID": "<ASC_BUNDLE_ID>"
}
}
}
}Replace <…> with your own values
Platform CLI
gemini mcp add -e ASC_KEY_ID=<ASC_KEY_ID> -e ASC_ISSUER_ID=<ASC_ISSUER_ID> -e ASC_PRIVATE_KEY=<ASC_PRIVATE_KEY> -e ASC_PRIVATE_KEY_PATH=<ASC_PRIVATE_KEY_PATH> -e ASC_BUNDLE_ID=<ASC_BUNDLE_ID> heimdall npx -y @erayendes/asc-mcpReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Heimdall
How do I install Heimdall in Claude Code?
Run claude mcp add asc-mcp -e ASC_PRIVATE_KEY=<ASC_PRIVATE_KEY> -- npx -y @erayendes/asc-mcp. The fuller form passes every variable: `claude mcp add --env ASC_KEY_ID=<ASC_KEY_ID> --env ASC_ISSUER_ID=<ASC_ISSUER_ID> --env ASC_PRIVATE_KEY=<ASC_PRIVATE_KEY> --env ASC_PRIVATE_KEY_PATH=<ASC_PRIVATE_KEY_PATH> --env ASC_BUNDLE_ID=<ASC_BUNDLE_ID> --transport stdio heimdall -- npx -y @erayendes/asc-mcp`.
What does Heimdall do?
It exposes the App Store Connect API and the App Store Server API (StoreKit 2) to your agent. That covers versions, TestFlight, subscriptions and in-app purchases, pricing, reviews and sales or finance reports.
How is Heimdall different from Fastlane?
It does not replace Fastlane. Fastlane keeps handling the pipeline, while Heimdall takes over the App Store Connect operations you would otherwise do by hand in the dashboard.