appstore_requestLABSCO SUMMARY
Set `ASC_READ_ONLY` to `1` first, then widen.
A credential that can submit a build for review can also remove a user, so the two scoping variables matter more here than on most servers: one blocks every writing tool, the other limits the agent to the domains you actually need. Every tool carries MCP annotations, so a client can tell list_apps from remove_user by itself. And when something is not covered, appstore_request and appstore_list reach the raw API rather than leaving you stuck.
What it is
A Rust MCP server over the Apple App Store Connect API. It takes a hybrid approach: 112 curated tools for the multi-step and error-prone workflows, and 2 generic JSON:API tools that reach any endpoint the curated set does not cover.
What you get
- Apps and metadata, age ratings and localisations —
list_apps,get_app,update_app,set_age_rating,create_app_info_localization - In-app purchases and subscriptions with their localisations, price schedules and groups —
create_in_app_purchase,set_iap_price_schedule,create_subscription_group,create_subscription,set_subscription_price - Versions and App Review submissions, including encryption declarations —
create_app_store_version,create_review_submission,submit_review_submission,create_app_encryption_declaration - TestFlight: builds, beta groups, testers, test notes and beta review —
list_builds,create_beta_group,add_beta_tester,submit_build_for_beta_review,set_build_test_notes - Provisioning and signing: bundle ids and capabilities, certificates, devices and profiles —
create_bundle_id,enable_bundle_id_capability,create_certificate,register_device,create_profile - Screenshots and previews uploaded, sets created and reordered —
upload_app_screenshot,upload_app_preview,create_screenshot_set,reorder_screenshots - Offers, offer codes and promoted purchases; customer reviews and responses; phased release; users and access; in-app events; Xcode Cloud; analytics reports; custom product pages —
create_promotional_offer,create_offer_code,respond_to_review,start_phased_release,invite_user,create_app_event,start_ci_build,request_analytics_report,create_custom_product_page - Two generic tools that call any App Store Connect endpoint with raw JSON:API documents —
appstore_request,appstore_list
Requirements
An App Store Connect API key: ASC_ISSUER_ID (the issuer UUID under Users and Access → Integrations), ASC_KEY_ID, and the .p8 private key given either as a path in ASC_PRIVATE_KEY_PATH or inline in ASC_PRIVATE_KEY. Prebuilt binaries cover macOS universal, Linux x86-64 and Windows x86-64; Claude Desktop can install the appstore-mcp.mcpb bundle, which ships all three and prompts for the credentials. Two variables narrow what is served: ASC_TOOLS takes comma-separated groups such as testflight,provisioning, and ASC_READ_ONLY set to 1 serves only tools that cannot modify the account.
Setup effort
One command plus a key — cargo install --git https://github.com/forgeopslabs/appstore-mcp, then supply credentials
USE CASES
Preparing a release without the web UI
Create the version, write the localisations, set the review details and submit, all from one conversation.
Running a TestFlight cycle
List builds, put one in front of a beta group with test notes, and submit it for beta review.
Keeping on top of customer reviews
Read recent reviews and post responses without leaving the assistant.
Pulling analytics
Request a report, then list its instances and segments and download the one you want.
114 tools
Listed in project docs. Your client may show a different list.
appstore_listlist_appsget_appupdate_applist_app_infosupdate_app_infoset_age_ratingcreate_app_info_localizationupdate_app_info_localizationlist_in_app_purchasescreate_in_app_purchaseupdate_in_app_purchasedelete_in_app_purchasecreate_iap_localizationset_iap_price_scheduleupload_iap_review_screenshotlist_subscription_groupscreate_subscription_groupcreate_subscriptionupdate_subscriptioncreate_subscription_localizationset_subscription_pricelist_app_store_versionscreate_app_store_versioncreate_version_localizationupdate_version_localizationcreate_review_submissionadd_review_submission_itemsubmit_review_submissionlist_review_submissionssubmit_in_app_purchaseset_app_review_detailcreate_app_encryption_declarationassign_build_encryption_declarationlist_territorieslist_iap_price_pointslist_subscription_price_pointsset_iap_availabilityset_subscription_availabilityset_app_availabilitylist_buildslist_beta_groupscreate_beta_groupadd_beta_testersubmit_build_for_beta_reviewset_build_test_notesset_build_beta_detailset_beta_app_review_detailexpire_buildadd_build_to_beta_grouplist_bundle_idscreate_bundle_idenable_bundle_id_capabilitydisable_bundle_id_capabilitylist_certificatescreate_certificatelist_devicesregister_devicelist_profilescreate_profileupload_app_screenshotupload_app_previewcreate_screenshot_setcreate_preview_setdelete_screenshot_setdelete_preview_setreorder_screenshotscreate_introductory_offercreate_promotional_offercreate_winback_offerlist_winback_offerscreate_offer_codegenerate_one_time_use_codescreate_custom_offer_codelist_offer_codescreate_promoted_purchaseupdate_promoted_purchaseset_promoted_purchase_orderlist_promoted_purchaseslist_customer_reviewsrespond_to_reviewdelete_review_responsestart_phased_releaseupdate_phased_releaselist_usersinvite_userupdate_userremove_usercreate_app_eventcreate_app_event_localizationupload_app_event_screenshotlist_ci_productslist_ci_workflowsstart_ci_buildget_ci_build_runlist_ci_build_actionsrequest_analytics_reportlist_analytics_reportslist_analytics_report_instanceslist_analytics_report_segmentsdownload_analytics_segmentlist_custom_product_pagesget_custom_product_pagecreate_custom_product_pageupdate_custom_product_pagedelete_custom_product_pagelist_custom_product_page_versionscreate_custom_product_page_versionlist_custom_product_page_localizationscreate_custom_product_page_localizationupdate_custom_product_page_localizationcreate_cpp_screenshot_setcreate_cpp_preview_setBEFORE YOU INSTALL
What to know first
Tools you get
114 tools named in the project's documentation. ASC_TOOLS=core serves 41 and ASC_READ_ONLY=1 serves 35; a mistyped group name serves nothing. Nine tools are destructive, including appstore_request.
Requires
- ASC_KEY_ID in your environment
- ASC_ISSUER_ID in your environment
- The .p8 private key, as a file path in ASC_PRIVATE_KEY_PATH or inline in ASC_PRIVATE_KEY (one of the two is required)
INSTALLATION
Connect your client
Server setup
Build from source
git clone https://github.com/forgeopslabs/appstore-mcp.git
cd appstore-mcp
cargo build --release # -> target/release/appstore-mcpSet ASC_ISSUER_ID, ASC_KEY_ID and ASC_PRIVATE_KEY_PATH in the environment (or in the client's env block)
Point the MCP client's command at ./target/release/appstore-mcp
cargo
cargo install --git https://github.com/forgeopslabs/appstore-mcpMCP Clients
Claude Desktop — .mcpb bundle
Download appstore-mcp.mcpb from the latest release:
https://github.com/forgeopslabs/appstore-mcp/releases/latestOpen it with Claude Desktop (Settings → Extensions → Install Extension…), or drag the file onto the window
Enter your Issuer ID, Key ID and .p8 key file when it prompts
Claude Desktop — manual
{
"mcpServers": {
"appstore": {
"command": "<YOUR_PATH_TO_APPSTORE_MCP>/target/release/appstore-mcp",
"env": {
"ASC_ISSUER_ID": "<YOUR_ASC_ISSUER_ID>",
"ASC_KEY_ID": "ABCD123456",
"ASC_PRIVATE_KEY_PATH": "<YOUR_ASC_PRIVATE_KEY_PATH>"
}
}
}
}Claude Code
/plugin marketplace add forgeopslabs/appstore-mcp
/plugin install appstore-mcp@forgeopslabsCodex
Codex launches appstore-mcp from your PATH, so install it first with cargo install --git https://github.com/forgeopslabs/appstore-mcp (or put the target/release/appstore-mcp you built on your PATH), then add to ~/.codex/config.toml:
[mcp_servers.appstore]
command = "appstore-mcp"
args = []
env = { ASC_ISSUER_ID = "<YOUR_ASC_ISSUER_ID>", ASC_KEY_ID = "<YOUR_ASC_KEY_ID>", ASC_PRIVATE_KEY_PATH = "/path/<YOUR_AUTH_KEY_P8>" }Any MCP client — MCP Registry
Registry name: io.github.forgeopslabs/appstore-mcp