mikusnuz/app-publish-mcp
FreeNot checkedUnified MCP server for App Store Connect & Google Play Console — 91 tools for iOS/Android app management, TestFlight, builds, submissions, pricing, and sales re
About
Unified MCP server for App Store Connect & Google Play Console — 91 tools for iOS/Android app management, TestFlight, builds, submissions, pricing, and sales reports.
README
app-publish-mcp
A unified MCP (Model Context Protocol) server for App Store Connect and Google Play Console. Manage app listings, screenshots, releases, reviews and submissions — all from your AI assistant.
When to Use
Use this MCP when you need to:
- "Update my app's App Store description and keywords" — modify version localizations, app info localizations
- "Upload new screenshots for iPhone 16 Pro" — create screenshot sets and upload images
- "Submit a new version for review" — create version, assign build, set review info, submit
- "Check the status of my app review" — list versions and check review state
- "Respond to a user review on Google Play" — list reviews and reply
- "Create a phased release on Google Play" — create edit, create release on a track, commit
- "Manage TestFlight beta testers" — create groups, invite testers, manage access
- "Set up in-app purchases" — create and manage IAPs and subscription groups on both platforms
- "Register a new device for development" — manage devices, certificates, and provisioning profiles
Features
Apple App Store Connect (70 tools)
| Category | Tools |
|---|---|
| App Management | apple_list_apps, apple_get_app, apple_get_app_info, apple_update_category |
| Bundle IDs | apple_list_bundle_ids, apple_create_bundle_id |
| Bundle ID Capabilities | apple_list_bundle_id_capabilities, apple_enable_capability, apple_disable_capability |
| Versions | apple_list_versions, apple_create_version |
| Version Localizations | apple_list_version_localizations, apple_create_version_localization, apple_update_version_localization |
| App Info Localizations | apple_list_app_info_localizations, apple_update_app_info_localization |
| Screenshots | apple_list_screenshot_sets, apple_create_screenshot_set, apple_upload_screenshot, apple_delete_screenshot |
| Builds | apple_list_builds, apple_assign_build |
| Age Rating | apple_get_age_rating, apple_update_age_rating |
| Review Info | apple_update_review_detail |
| Submission | apple_submit_for_review, apple_cancel_submission |
| Pricing | apple_get_pricing, apple_set_price, apple_list_availability |
| Customer Reviews | apple_list_reviews, apple_respond_to_review |
| Certificates | apple_list_certificates, apple_create_certificate, apple_revoke_certificate |
| Provisioning Profiles | apple_list_profiles, apple_create_profile, apple_delete_profile |
| Devices | apple_list_devices, apple_register_device, apple_update_device |
| TestFlight Beta Groups | apple_list_beta_groups, apple_create_beta_group, apple_delete_beta_group, apple_add_beta_testers_to_group, apple_remove_beta_testers_from_group |
| TestFlight Beta Testers | apple_list_beta_testers, apple_invite_beta_tester, apple_delete_beta_tester |
| In-App Purchases | apple_list_iap, apple_create_iap, apple_get_iap, apple_delete_iap |
| Subscription Groups | apple_list_subscription_groups, apple_create_subscription_group, apple_delete_subscription_group |
| Accessibility Declarations | apple_list_accessibility_declarations, apple_create_accessibility_declaration, apple_update_accessibility_declaration, apple_delete_accessibility_declaration |
| Price Points | apple_get_subscription_price_points, apple_get_iap_price_points |
| Offer Codes | apple_list_subscription_offer_codes, apple_get_subscription_offer_code, apple_create_subscription_offer_code, apple_list_iap_offer_codes, apple_get_iap_offer_code, apple_create_iap_offer_code |
| Win-Back Offers | apple_list_win_back_offers, apple_get_win_back_offer |
Google Play Console (45 tools)
| Category | Tools |
|---|---|
| Edit Lifecycle | google_create_edit, google_commit_edit, google_validate_edit, google_delete_edit |
| App Details | google_get_details, google_update_details |
| Store Listing | google_list_listings, google_get_listing, google_update_listing, google_delete_listing |
| Country Availability | google_get_country_availability |
| Testers | google_get_testers, google_update_testers |
| Images | google_list_images, google_upload_image, google_delete_image, google_delete_all_images |
| Tracks & Releases | google_list_tracks, google_get_track, google_create_release, google_promote_release, google_halt_release |
| Bundle / APK | google_upload_bundle, google_upload_apk |
| Reviews¹ | google_list_reviews, google_get_review, google_reply_to_review |
| In-App Products | google_list_iap, google_get_iap, google_create_iap, google_update_iap, google_delete_iap |
| Subscriptions | google_list_subscriptions, google_get_subscription, google_create_subscription, google_archive_subscription, google_activate_subscription_base_plan, google_deactivate_subscription_base_plan |
| One-time Products² | google_list_one_time_products, google_get_one_time_product, google_create_one_time_product, google_update_one_time_product, google_delete_one_time_product, google_activate_purchase_option, google_deactivate_purchase_option |
¹ If google_list_reviews returns an empty array for an app that has visible reviews in Play Console, first check that the linked service account has the "Reply to reviews" account permission (Play Console → Users and permissions) — the API does not raise a distinct error for a missing permission, it just returns no results. Also note the endpoint only surfaces recent reviews; use pageToken to page through more.
² One-time Products (monetization.onetimeproducts) is Google Play's newer purchase model for buy/rent items, distinct from the older inappproducts API. Purchase options are created active by default; use google_deactivate_purchase_option to pull one down without deleting the product.
Prompts (2)
| Prompt | Description |
|---|---|
app_release_checklist |
Guided checklist for releasing an app update — walks through version creation, metadata, build assignment and submission for iOS and/or Android |
app_store_optimization |
ASO audit that reviews current listing metadata (title, description, keywords, screenshots, localization) and provides actionable improvement recommendations |
Resources (2)
| URI | Description |
|---|---|
app-publish://config |
Current server configuration — connected accounts, auth methods, tool counts |
app-publish://supported-platforms |
All supported tools grouped by platform with descriptions |
Setup
1. Install
npm install
npm run build
2. Apple Credentials
- Go to App Store Connect > Keys
- Create an API Key with App Manager role
- Download the
.p8file - Note the Key ID and Issuer ID
3. Google Credentials
- Go to Google Cloud Console
- Enable Google Play Android Developer API
- Create a Service Account and download the JSON key
- In Google Play Console, grant the service account access under Settings > API access
4. Configure Environment
cp .env.example .env
Edit .env:
APPLE_KEY_ID=YOUR_KEY_ID
APPLE_ISSUER_ID=YOUR_ISSUER_ID
APPLE_P8_PATH=/path/to/AuthKey.p8
GOOGLE_SERVICE_ACCOUNT_PATH=/path/to/service-account.json
5. Add to Claude Code
Add to ~/.claude/settings.local.json:
{
"mcpServers": {
"app-publish-mcp": {
"command": "node",
"args": ["/path/to/app-publish-mcp/dist/index.js"],
"env": {
"APPLE_KEY_ID": "YOUR_KEY_ID",
"APPLE_ISSUER_ID": "YOUR_ISSUER_ID",
"APPLE_P8_PATH": "/path/to/AuthKey.p8",
"GOOGLE_SERVICE_ACCOUNT_PATH": "/path/to/service-account.json"
}
}
}
}
Usage Examples
Submit an iOS app update
1. apple_list_apps → get app ID
2. apple_create_version → create version 1.1.0
3. apple_list_version_localizations → get localization IDs
4. apple_update_version_localization → set whatsNew, description
5. apple_list_builds → find the uploaded build
6. apple_assign_build → attach build to version
7. apple_update_review_detail → set reviewer contact info
8. apple_submit_for_review → submit!
Release an Android app
1. google_create_edit → start edit session
2. google_update_details → update contact info
3. google_update_listing → update store listing
4. google_upload_bundle → upload .aab file
5. google_create_release → create release on production track
6. google_validate_edit → check for errors
7. google_commit_edit → publish changes
Manage Google Play in-app products
1. google_list_iap → list all products
2. google_create_iap → create a new managed product
3. google_update_iap → update price or description
4. google_delete_iap → remove a product
Create a Google Play subscription
1. google_create_subscription → create the subscription with listings and a
base plan (billing period, grace period, regional pricing in micros).
The base plan is created in DRAFT state.
2. google_activate_subscription_base_plan → flip the base plan to ACTIVE so
it becomes purchasable in the Play Store.
3. google_deactivate_subscription_base_plan → pause sales without deleting
the plan.
4. google_archive_subscription → archive the subscription when retired.
Example arguments for google_create_subscription:
{
"packageName": "com.example.app",
"productId": "com.example.app.pro_monthly",
"listings": [
{
"languageCode": "en-US",
"title": "Pro Monthly",
"description": "Unlock all premium features.",
"benefits": ["Ad-free", "Cloud sync", "Priority support"]
}
],
"basePlans": [
{
"basePlanId": "pro-monthly",
"autoRenewing": {
"billingPeriodDuration": "P1M",
"gracePeriodDuration": "P3D",
"accountHoldDuration": "P30D"
},
"regionalConfigs": [
{ "regionCode": "US", "priceMicros": "3990000", "currency": "USD" },
{ "regionCode": "TR", "priceMicros": "99000000", "currency": "TRY" }
]
}
]
}
Prices are given in micros (1 USD = 1,000,000 micros) and converted to
the Play API's Money shape (units + nanos) internally. regionsVersion
defaults to 2022/02, which the Play API currently requires when regional
pricing is supplied.
License
MIT
Installing mikusnuz/app-publish-mcp
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/mikusnuz/app-publish-mcpFAQ
Is mikusnuz/app-publish-mcp MCP free?
Yes, mikusnuz/app-publish-mcp MCP is free — one-click install via Unyly at no cost.
Does mikusnuz/app-publish-mcp need an API key?
No, mikusnuz/app-publish-mcp runs without API keys or environment variables.
Is mikusnuz/app-publish-mcp hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install mikusnuz/app-publish-mcp in Claude Desktop, Claude Code or Cursor?
Open mikusnuz/app-publish-mcp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare mikusnuz/app-publish-mcp with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
