Skip to main content
Glama
ynnickw

AppLaunchFlow MCP

by ynnickw

AppLaunchFlow MCP

MCP server for AppLaunchFlow — create App Store & Google Play screenshots with AI.

Connect

AppLaunchFlow is a hosted MCP connector with OAuth 2.1 and PKCE. No API key, local token, or scoped npm package name is required.

Codex

The shortest setup command configures the hosted connector and opens OAuth:

npx -y applaunchflow connect codex

Useful follow-up commands:

npx -y applaunchflow status
npx -y applaunchflow disconnect

The equivalent native Codex commands are:

codex mcp add applaunchflow --url https://mcp.applaunchflow.com/mcp
codex mcp login applaunchflow
codex mcp get applaunchflow
codex mcp remove applaunchflow

Claude Code

The same one-command setup is available for Claude Code. It replaces a legacy AppLaunchFlow entry when necessary, adds the hosted HTTP connector, and opens OAuth sign-in:

npx -y applaunchflow connect claude

The equivalent native Claude Code commands are:

claude mcp add --transport http applaunchflow https://mcp.applaunchflow.com/mcp
claude mcp login applaunchflow

ChatGPT

npx -y applaunchflow connect chatgpt

Paste the displayed URL when creating a custom MCP connector in ChatGPT. The same URL is also available at any time with npx -y applaunchflow url.

Other MCP clients

Use this Streamable HTTP endpoint and enable OAuth when prompted:

https://mcp.applaunchflow.com/mcp

Claude Code plugin

This repository is also a distributable Claude Code plugin. Its .claude-plugin/plugin.json manifest bundles the hosted OAuth connector from .mcp.json, so users do not need to copy a server configuration manually.

To validate or try the plugin directly from a clone:

claude plugin validate . --strict
claude --plugin-dir .

Claude Code starts the hosted connector when the plugin is enabled and opens the AppLaunchFlow OAuth flow when authentication is required.

Related MCP server: app-store-screenshots-mcp

Hosted service

Inline screenshot picker

prepare_screenshot_styles returns the personalized V1/V2 picker directly in MCP Apps-compatible hosts and creates a variant only after explicit user confirmation through the authenticated tool bridge. Other hosts retain the full-gallery link. Revisit prepared options using the existing widget or that link; there is no separate render-tool call. Social graphics and promo video use the same prepare-and-show flow. See local testing and deployment notes.

The public Streamable HTTP service uses OAuth 2.1 authorization code flow with PKCE through the AppLaunchFlow dashboard.

npm ci
npm run build
APPLAUNCHFLOW_BASE_URL=https://dashboard.applaunchflow.com \
APPLAUNCHFLOW_MCP_PUBLIC_URL=https://mcp.applaunchflow.com \
PORT=8787 \
npm run start:http

Public endpoints:

  • MCP: https://mcp.applaunchflow.com/mcp

  • Protected resource metadata: https://mcp.applaunchflow.com/.well-known/oauth-protected-resource

  • Health: https://mcp.applaunchflow.com/healthz

Official MCP Registry

AppLaunchFlow is published as io.github.ynnickw/applaunchflow in the official MCP Registry. The checked-in server.json is the canonical registry manifest and points clients to the hosted OAuth connector.

Registry publication runs automatically from GitHub Actions when the manifest changes on main. Keep the manifest version aligned with package.json; the test suite enforces this before publication.

APPLAUNCHFLOW_MCP_PUBLIC_URL may be either the origin or the full /mcp URL; both services normalize it to the same canonical resource URL. Set APPLAUNCHFLOW_MCP_PUBLIC_URL=https://mcp.applaunchflow.com/mcp and NEXT_PUBLIC_APP_URL=https://dashboard.applaunchflow.com on the dashboard.

The included Dockerfile produces a non-root OCI image for the hosted server. The MCP host and dashboard must both be served through public HTTPS in production. Do not expose the Node process directly without a TLS-terminating platform or reverse proxy.

Personalized style workflow

Screenshot and social-graphics styles are prepared once for the selected app screenshots, then the chosen style is applied from cache. This lets users compare styles without paying for another AI call when they choose one.

For App Store screenshots:

  1. list_source_screenshots

  2. prepare_screenshot_styles with 3-7 ordered paths

  3. The personalized gallery opens automatically. Compare each template's V1/V2 render and confirm the choice; the gallery creates the new variant from cache and opens the editor.

browse_templates can reopen a prepared catalog, and apply_screenshot_style remains available when an API client supplies a template id directly.

For social graphics:

  1. list_source_screenshots

  2. prepare_social_graphics_styles with 3-7 ordered paths

  3. browse_social_templates with the returned templateIds, generationId, and catalogKey

  4. apply_social_graphics_style with the returned catalogKey

The screenshot result includes phone, tablet, and desktop. The social result includes every supported social, store-listing, and mobile-ad format. New screenshot and social-graphics variants always go through their visual pickers so the user explicitly chooses the template and palette.

Development

npm ci
npm run dev

Run npm test before publishing or deploying. See docs/openai-submission.md for the final OpenAI submission checklist and manual test cases.

Embedded project and asset lists

list_projects shows a compact list with app icons, explicit project selection, and dashboard links. list_assets shows uploaded screenshots, illustrations, icons, recordings, backgrounds, fonts, and music/clips using the same browser component as the dashboard Hub. The Upload button accepts up to 10 files per batch (25 MB per file), with progress and a refreshed list after completion. Screenshots use the selected device/platform folder; other uploads use the selected asset tab. Uploading stores files only: it does not replace the app icon, apply a design, register a font family, or overwrite existing assets. Asset deletion remains an explicitly confirmed action in the Hub.

The app-only prepare_asset_upload tool uses the connected account to authorize one uniquely named storage object. Its signed URL is returned only in widget metadata. The browser sends the file bytes directly to storage; neither file contents nor account credentials pass through the model. Refreshing calls the read-only list_assets tool. No upload is triggered by merely opening the list.

Project selection uses standard MCP Apps messaging, or ChatGPT's native sendFollowUpMessage bridge when the host does not advertise text messaging. Hosts with neither retain the exact copy/paste fallback. A failed/ambiguous send is never automatically retried through another bridge.

For maintainers, regenerate the packaged list views and shared contracts with npm run sync:dashboard -- /absolute/path/to/dashboard. Add --check to verify they match without updating the connector artifacts. npm test checks artifact integrity and contract hashes without requiring another checkout or network. Existing screenshot, social and promo picker behavior is unchanged.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that turns raw app screenshots into polished, pixel-perfect store listing visuals with device frames, benefit-driven headlines, brand colors, and exact store dimensions for iOS and Android.
    5
    96
    20
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for managing App Store Optimization: add apps, track keywords, pull health reports, spy on competitors, find keyword opportunities, and write AI copy suggestions.
    5
    MIT