mobile-release-mcp

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.

Category
Visit Server

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 />

npm version CI License: MIT Node.js MCP

<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 blockers
  • explain_release_blockers — human-readable “what to do next”
  • execute_release_intent — rollout, promote, submit (dry-run default)
  • list_projects — multi-app registry via STOREPILOT_PROJECTS_DIR
  • promote_release, configure_rollout, create_tester_group

Safety & ops

  • confirm: true on destructive writes; workflows skip confirm when dryRun is true (default)
  • Toolsets: MCP_TOOLSET=release | readonly | all
  • Escape hatch: apple_api_call, google_api_call for 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

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.

Official
Featured
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured