{
  "markdown": "# AppLaunchFlow MCP\n\nMCP server for AppLaunchFlow — create App Store & Google Play screenshots with AI.\n\n## Connect\n\nAppLaunchFlow is a hosted MCP connector with OAuth 2.1 and PKCE. No API key,\nlocal token, or scoped npm package name is required.\n\n### Codex\n\nThe shortest setup command configures the hosted connector and opens OAuth:\n\n```bash\nnpx -y applaunchflow connect codex\n```\n\nUseful follow-up commands:\n\n```bash\nnpx -y applaunchflow status\nnpx -y applaunchflow disconnect\n```\n\nThe equivalent native Codex commands are:\n\n```bash\ncodex mcp add applaunchflow --url https://mcp.applaunchflow.com/mcp\ncodex mcp login applaunchflow\ncodex mcp get applaunchflow\ncodex mcp remove applaunchflow\n```\n\n### Claude Code\n\nThe same one-command setup is available for Claude Code. It replaces a legacy\nAppLaunchFlow entry when necessary, adds the hosted HTTP connector, and opens\nOAuth sign-in:\n\n```bash\nnpx -y applaunchflow connect claude\n```\n\nThe equivalent native Claude Code commands are:\n\n```bash\nclaude mcp add --transport http applaunchflow https://mcp.applaunchflow.com/mcp\nclaude mcp login applaunchflow\n```\n\n### ChatGPT\n\n```bash\nnpx -y applaunchflow connect chatgpt\n```\n\nPaste the displayed URL when creating a custom MCP connector in ChatGPT. The\nsame URL is also available at any time with `npx -y applaunchflow url`.\n\n### Other MCP clients\n\nUse this Streamable HTTP endpoint and enable OAuth when prompted:\n\n```text\nhttps://mcp.applaunchflow.com/mcp\n```\n\n### Claude Code plugin\n\nThis repository is also a distributable Claude Code plugin. Its\n`.claude-plugin/plugin.json` manifest bundles the hosted OAuth connector from\n`.mcp.json`, so users do not need to copy a server configuration manually.\n\nTo validate or try the plugin directly from a clone:\n\n```bash\nclaude plugin validate . --strict\nclaude --plugin-dir .\n```\n\nClaude Code starts the hosted connector when the plugin is enabled and opens\nthe AppLaunchFlow OAuth flow when authentication is required.\n\n## Hosted service\n\n### Inline screenshot picker\n\n`prepare_screenshot_styles` returns the personalized V1/V2 picker directly in\nMCP Apps-compatible hosts and creates a variant only after explicit user\nconfirmation through the authenticated tool bridge. Other hosts retain the\nfull-gallery link. Revisit prepared options using the existing widget or that\nlink; there is no separate render-tool call. Social graphics and promo video\nuse the same prepare-and-show flow.\nSee [local testing and deployment notes](docs/inline-picker.md).\n\nThe public Streamable HTTP service uses OAuth 2.1 authorization code flow with\nPKCE through the AppLaunchFlow dashboard.\n\n```bash\nnpm ci\nnpm run build\nAPPLAUNCHFLOW_BASE_URL=https://dashboard.applaunchflow.com \\\nAPPLAUNCHFLOW_MCP_PUBLIC_URL=https://mcp.applaunchflow.com \\\nPORT=8787 \\\nnpm run start:http\n```\n\nPublic endpoints:\n\n- MCP: `https://mcp.applaunchflow.com/mcp`\n- Protected resource metadata: `https://mcp.applaunchflow.com/.well-known/oauth-protected-resource`\n- Health: `https://mcp.applaunchflow.com/healthz`\n\n## Official MCP Registry\n\nAppLaunchFlow is published as `io.github.ynnickw/applaunchflow` in the official\nMCP Registry. The checked-in [`server.json`](server.json) is the canonical\nregistry manifest and points clients to the hosted OAuth connector.\n\nRegistry publication runs automatically from GitHub Actions when the manifest\nchanges on `main`. Keep the manifest version aligned with `package.json`; the\ntest suite enforces this before publication.\n\n`APPLAUNCHFLOW_MCP_PUBLIC_URL` may be either the origin or the full `/mcp`\nURL; both services normalize it to the same canonical resource URL. Set\n`APPLAUNCHFLOW_MCP_PUBLIC_URL=https://mcp.applaunchflow.com/mcp` and\n`NEXT_PUBLIC_APP_URL=https://dashboard.applaunchflow.com` on the dashboard.\n\nThe included `Dockerfile` produces a non-root OCI image for the hosted server.\nThe MCP host and dashboard must both be served through public HTTPS in\nproduction. Do not expose the Node process directly without a TLS-terminating\nplatform or reverse proxy.\n\n## Personalized style workflow\n\nScreenshot 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.\n\nFor App Store screenshots:\n\n1. `list_source_screenshots`\n2. `prepare_screenshot_styles` with 3-7 ordered paths\n3. 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.\n\n`browse_templates` can reopen a prepared catalog, and `apply_screenshot_style`\nremains available when an API client supplies a template id directly.\n\nFor social graphics:\n\n1. `list_source_screenshots`\n2. `prepare_social_graphics_styles` with 3-7 ordered paths\n3. `browse_social_templates` with the returned `templateIds`, `generationId`, and `catalogKey`\n4. `apply_social_graphics_style` with the returned `catalogKey`\n\nThe 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.\n\n## Development\n\n```bash\nnpm ci\nnpm run dev\n```\n\nRun `npm test` before publishing or deploying. See\n[`docs/openai-submission.md`](docs/openai-submission.md) for the final OpenAI\nsubmission checklist and manual test cases.\n# Embedded project and asset lists\n\n`list_projects` shows a compact list with app icons, explicit project selection,\nand dashboard links. `list_assets` shows uploaded screenshots, illustrations,\nicons, recordings, backgrounds, fonts, and music/clips using the same browser\ncomponent as the dashboard Hub. The Upload button accepts up to 10 files per\nbatch (25 MB per file), with progress and a refreshed list after completion.\nScreenshots use the selected device/platform folder; other uploads use the\nselected asset tab. Uploading stores files only: it does not replace the app\nicon, apply a design, register a font family, or overwrite existing assets.\nAsset deletion remains an explicitly confirmed action in the Hub.\n\nThe app-only `prepare_asset_upload` tool uses the connected account to authorize\none uniquely named storage object. Its signed URL is returned only in widget\nmetadata. The browser sends the file bytes directly to storage; neither file\ncontents nor account credentials pass through the model. Refreshing calls the\nread-only `list_assets` tool. No upload is triggered by merely opening the list.\n\nProject selection uses standard MCP Apps messaging, or ChatGPT's native\n`sendFollowUpMessage` bridge when the host does not advertise text messaging.\nHosts with neither retain the exact copy/paste fallback. A failed/ambiguous send\nis never automatically retried through another bridge.\n\nFor maintainers, regenerate the packaged list views and shared contracts with\n`npm run sync:dashboard -- /absolute/path/to/dashboard`. Add `--check` to verify\nthey match without updating the connector artifacts. `npm test` checks artifact\nintegrity and contract hashes without requiring another checkout or network.\nExisting screenshot, social and promo picker behavior is unchanged.\n",
  "bytes": 7283,
  "sha": "07c05946e172092b7371acc93f6f345625ee1a0349794016403781750a38e2fd",
  "repo_slug": "ynnickw/applaunchflow-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ynnickw_applaunchflow_12d29294/readme"
}