Skip to main content
Glama
Jeronimo0228

mobile-release-mcp

by Jeronimo0228

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.

npm version CI License: MIT Node.js MCP

npm: storepilot-mcp · CLI: storepilot

Golden path · Quick start · Demo · Tools · Compare · Launch post


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

Related MCP server: app-publish-mcp

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.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for Appcircle mobile CI/CD platform.

  • MCP server for interacting with the Supabase platform

  • The MCP server for Azure DevOps, bringing the power of Azure DevOps directly to your agents.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jeronimo0228/StorePilot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server