mobile-release-mcp
MCP server for managing mobile app releases on App Store Connect and Google Play. It exposes 101 tools for iOS and Android release lifecycle and reacts to EAS/GitHub webhooks automatically.
README
<div align="center">
StorePilot
Release orchestration MCP for App Store Connect + Google Play
Ask your agent “can I ship?” — get blockers, a plan, and safe dry-runs before touching production.
<br />
<br />
npm: storepilot-mcp · CLI: storepilot
<img src="docs/assets/storepilot-console-4k-preview.gif" alt="StorePilot console demo — snapshot, blockers, dry-run intents" width="100%" />
<p align="center"><sub>4K: <code>docs/assets/storepilot-console-4k.mp4</code> · Rebuild: <code>npm run record:console:4k</code></sub></p>
Golden path · Quick start · Demo · Tools · Compare · Launch post
</div>
Not the same as silviosotelo/mobile-release-mcp (Fastlane/build focus).
StorePilot = store operations + release orchestration for AI agents.
Why StorePilot
| Other MCP servers | StorePilot |
|---|---|
| 90+ low-level tools, agent picks one-by-one | Snapshot → blockers → intent → execute |
| No project memory | storepilot.yaml + .storepilot/memory.json |
| Writes hit production immediately | dryRun: true by default on workflows |
| Apple or Google depth | Both, plus escape hatch for long tail |
| No CI hooks | EAS + GitHub webhooks built in |
~131 typed tools · 91 in release toolset · App Store Connect · Google Play · provenance on npm
Golden path (StorePilot)
Three steps from zero to “agent knows if you can ship”:
1. Add storepilot.yaml to your app repo
cp path/to/StorePilot/storepilot.example.yaml ./storepilot.yaml
# Edit stores.ios.appId and stores.android.package
project: my-app
stores:
ios:
appId: "1234567890"
bundleId: com.example.app
android:
package: com.example.app
release:
defaultRollout: 0.1
2. Point MCP at your project
{
"mcpServers": {
"storepilot": {
"command": "npx",
"args": ["-y", "storepilot-mcp@latest"],
"env": {
"APPLE_KEY_ID": "YOUR_KEY_ID",
"APPLE_ISSUER_ID": "YOUR_ISSUER_ID",
"APPLE_PRIVATE_KEY_PATH": "/path/to/AuthKey.p8",
"GOOGLE_SERVICE_ACCOUNT_KEY_PATH": "/path/to/play-service-account.json",
"STOREPILOT_CONFIG_PATH": "/path/to/your-app/storepilot.yaml",
"MCP_TOOLSET": "release"
}
}
}
}
3. Ask your agent
"Load my project and explain what's blocking release."
→ load_project / get_release_snapshot / explain_release_blockers
"Plan a 10% production rollout (don't execute yet)."
→ execute_release_intent { intent: "rollout_production", percentage: 10, dryRun: true }
"When ready: promote Android internal → production at 10%."
→ execute_release_intent { intent: "promote_to_production", dryRun: false, confirm: true }
CLI (no IDE):
export STOREPILOT_CONFIG_PATH=./storepilot.yaml
# + Apple/Google env vars — see docs/CREDENTIALS.md
storepilot snapshot # blockers + next actions
storepilot projects # multi-app registry
Full walkthrough: docs/DEMO.md
Quick start
npx -y storepilot-mcp@latest
Credentials: docs/CREDENTIALS.md — EAS webhooks do not replace App Store / Play API keys.
Features
Orchestrator (v1.0+)
get_release_snapshot— production vs candidate, cross-platform blockersexplain_release_blockers— human-readable “what to do next”execute_release_intent— rollout, promote, submit (dry-run default)list_projects— multi-app registry viaSTOREPILOT_PROJECTS_DIRpromote_release,configure_rollout,create_tester_group
Safety & ops
confirm: trueon destructive writes; workflows skip confirm whendryRunis true (default)- Toolsets:
MCP_TOOLSET=release|readonly|all - Escape hatch:
apple_api_call,google_api_callfor long-tail API - Webhooks: EAS Build/Submit + GitHub Actions →
list_pending_webhooks - Transports: stdio (Cursor/Claude) or HTTP
/mcp - Tests:
npm test(42+),npm run smoke(live, needs credentials)
Store coverage
- Apple: builds, TestFlight, metadata, screenshots, export compliance, submission preflight
- Google: tracks, uploads, subscriptions, internal app sharing, deobfuscation maps
See docs/TOOLS.md · docs/COMPARISON.md
Configuration
| Variable | Description |
|---|---|
STOREPILOT_CONFIG_PATH |
Path to storepilot.yaml |
STOREPILOT_PROJECTS_DIR |
Directory of app repos for list_projects |
MCP_TOOLSET |
release (recommended), readonly, all |
APPLE_* / GOOGLE_* |
Store API credentials — CREDENTIALS.md |
EAS_PROJECT_MAPPINGS |
Map EAS project → store IDs for webhooks |
LOG_LEVEL |
Set error for clean CLI JSON output |
Full env reference: .env.example
Webhook flow
EAS/GitHub → POST /webhook/* → verify → persist
→ list_pending_webhooks
→ get_release_snapshot
→ execute_release_intent (dryRun → confirm)
→ mark_webhook_processed
Development
git clone https://github.com/Jeronimo0228/StorePilot.git
cd StorePilot
npm install
npm test
npm run build
npm run storepilot -- snapshot # from source
Try it without cloning: npx storepilot-mcp@latest + scripts/try-storepilot.sh
Project structure
src/
├── core/ Release snapshot, workflows, release-intent
├── tools/ MCP registrations (orchestrator, apple, google, escape)
├── providers/ App Store Connect + Google Play clients
├── plugins/ Plugin hook contract (v1.0)
├── cli.ts storepilot CLI
└── webhook/ EAS + GitHub
docs/ DEMO, TOOLS, COMPARISON, LAUNCH (LinkedIn draft)
Feedback
Early v1 — we want real-world reports: Try StorePilot feedback
License
MIT — see LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.