@cpedz/asc-mcp-server
v1.0.0
Published
App Store Connect MCP Server — manage metadata, IAPs, screenshots, builds, and submissions via AI agents
Downloads
35
Maintainers
Readme
App Store Connect MCP Server
Full App Store Connect API access for AI agents. Manage apps, metadata, IAPs, screenshots, builds, and submissions — all from Claude, Cursor, or any MCP client.
Features
25 tools covering the complete iOS app deployment pipeline:
| Category | Tools |
|----------|-------|
| Apps | list_apps, get_app, get_app_versions |
| Metadata | get_version_localizations, update_version_localization, get_app_info_localizations, update_app_info_localization |
| In-App Purchases | list_iaps, list_subscription_groups, create_subscription_group, create_subscription, set_subscription_price, create_non_consumable, set_iap_price |
| Privacy | get_app_privacy, list_privacy_data_types, add_privacy_data_usage, publish_app_privacy |
| Screenshots | list_screenshot_sets, create_screenshot_set, upload_screenshot, delete_screenshot |
| Builds | list_builds, attach_build_to_version, get_build_status |
| Submissions | submit_for_review, get_review_status, set_release_type, release_approved_version |
Setup
1. Install
npm install -g asc-mcp-server
# or run directly
npx asc-mcp-server2. Get ASC API Key
- Go to App Store Connect > Users and Access > Integrations > Team Keys
- Create a new key with Admin role
- Download the
.p8file - Note the Key ID and Issuer ID
3. Configure
Add to your MCP client config:
Claude Code (~/.claude.json):
{
"mcpServers": {
"asc": {
"command": "node",
"args": ["/path/to/asc-mcp-server/dist/index.js"],
"env": {
"ASC_KEY_PATH": "/path/to/AuthKey_XXXXXXXX.p8",
"ASC_KEY_ID": "YOUR_KEY_ID",
"ASC_ISSUER_ID": "YOUR_ISSUER_ID"
}
}
}
}Cursor (.cursor/mcp.json):
{
"mcpServers": {
"asc": {
"command": "npx",
"args": ["-y", "asc-mcp-server"],
"env": {
"ASC_KEY_PATH": "/path/to/AuthKey_XXXXXXXX.p8",
"ASC_KEY_ID": "YOUR_KEY_ID",
"ASC_ISSUER_ID": "YOUR_ISSUER_ID"
}
}
}
}Example Usage
Ask your AI agent:
- "List all my apps and their review status"
- "Update the description and keywords for my app"
- "Create a monthly subscription at $3.99 and an annual at $24.99"
- "Upload these screenshots to my app's listing"
- "Attach the latest build and submit for review"
- "Set the privacy policy URL and publish the privacy questionnaire"
Hard-Won Gotchas (Built In)
These are automatically handled by the server:
- Privacy URL goes on
appInfoLocalizations, NOTappStoreVersionLocalizations - Subscription groups get localized immediately after creation to prevent
MISSING_METADATA - Screenshot upload handles the full reserve → upload → MD5 commit flow
- Price points are matched by customer price, not tier ID
License
MIT
