ASOgenic MCP

適用於AI代理的App Store優化工具:研究Apple關鍵字、本地化並驗證App Store中繼資料、管理截圖與版本發布,並透過App Store Connect安全發布。

託管 MCP 伺服器

npx add-mcp 'https://mcp.asogenic.com/mcp'

可安裝到 Claude Code、Codex、Cursor 等客戶端

文件

Connect ASOgenic and run an ASO pass

ASOgenic is a Model Context Protocol server. Connect your MCP client with OAuth, then provide App Store Connect credentials separately through an authenticated credential tool. ASOgenic can research keywords, validate metadata, manage screenshots, and prepare a reviewed release for submission.

In a hurry? Paste https://asogenic.com/setup to your MCP client. It's a plain-text runbook any compatible client or automation can follow.

How it works

Three services, kept deliberately separate:

  • Your MCP client (any MCP-compatible assistant, coding tool, or automation) connects to the ASOgenic MCP endpoint. Interactive desktop and CLI clients use MCP OAuth. Unattended clients may use a platform API key.
  • The ASOgenic MCP server exposes the tools. Hosted clients explicitly store or import an App Store Connect key through the authenticated credential tools.
  • This dashboard manages platform access. It is separate from MCP OAuth and from the App Store Connect credential step.

Authentication

Interactive clients use standard MCP OAuth, but their setup surfaces are not interchangeable. Codex CLI and the Codex IDE extension share MCP configuration. ChatGPT Work plugins, Claude account connectors, Cursor, and VS Code each have their own registration and session state. Platform API keys remain available only for CI and unattended automation.

Choose your client

Use exactly one setup below. Choose the one for the product that will call ASOgenic. Every interactive setup uses the same Streamable HTTP endpoint, https://mcp.asogenic.com/mcp, with OAuth and no custom headers.

Codex CLI and Codex IDE extension

These two share MCP configuration. Run:

codex mcp add asogenic --url https://mcp.asogenic.com/mcp
codex mcp list
codex mcp login asogenic

Complete browser OAuth, then start a new Codex CLI session or IDE chat and call asogenic_auth_status. A http://127.0.0.1:<port>/callback destination is Codex's temporary OAuth listener. It is expected and is not the MCP URL.

ChatGPT Work developer-mode plugin

This creates a personal plugin in ChatGPT Work. It does not authenticate Codex CLI, the Codex IDE extension, or another Codex surface.

  1. In ChatGPT, open Settings → Security and login and enable Developer mode.
  2. Open ChatGPT Plugins, select +, and create a plugin named ASOgenic with URL https://mcp.asogenic.com/mcp and OAuth authentication.
  3. Review the discovered tools, create the plugin, open it, and select + to install it.
  4. Start a new Work chat, enable/select ASOgenic, complete OAuth, and call asogenic_auth_status.

Separate connection: a successful codex mcp login does not authenticate the ChatGPT plugin. Refresh or reconnect the plugin in ChatGPT Plugins and start a new Work chat. Codex CLI/IDE users follow the Codex section above.

Claude Code

claude mcp add --transport http --scope user asogenic https://mcp.asogenic.com/mcp
claude mcp list
claude mcp get asogenic

Start claude, run /mcp, choose ASOgenic, and complete browser OAuth. Run /mcp again to confirm it is connected, then call asogenic_auth_status. These commands are for Claude Code only.

Claude, Cowork, and Claude Desktop

For an individual account, open Customize → Connectors → + Add → Add custom connector. Enter the name ASOgenic and URL https://mcp.asogenic.com/mcp, keep the OAuth method Claude discovers, and complete sign-in. In a new conversation, enable ASOgenic from + → Connectors and call asogenic_auth_status.

On Team or Enterprise, an authorized owner first adds it under Organization settings → Connectors → Add → Custom → Web. Each member then selects Connect under Customize → Connectors. Remote connectors use this account UI even on Claude Desktop. Do not use Claude Code commands or desktop JSON configuration.

Cursor IDE and Cursor Agent CLI

Add this URL-only entry to global ~/.cursor/mcp.json, or to .cursor/mcp.json only when project scope is intentional:

{ "mcpServers": { "asogenic": { "url": "https://mcp.asogenic.com/mcp" } } }

Enable ASOgenic in Cursor MCP settings, select Needs login, complete OAuth, and start a new Agent chat. Confirm it appears under Available Tools and call asogenic_auth_status. CLI diagnostics: cursor-agent mcp list, cursor-agent mcp login asogenic, and cursor-agent mcp list-tools asogenic.

VS Code with GitHub Copilot

  1. Run MCP: Add Server from the Command Palette.
  2. Choose HTTP, enter https://mcp.asogenic.com/mcp, and name it asogenic.
  3. Run MCP: List Servers, start ASOgenic, and approve browser OAuth.
  4. In Copilot Chat Agent mode, enable ASOgenic through Configure Tools, open a new chat, and call asogenic_auth_status.

Other OAuth-capable MCP clients

Add a Streamable HTTP server named asogenic with URL https://mcp.asogenic.com/mcp, leave custom headers empty, and use that client's Connect, Sign in, or Authorize action. Complete OAuth in that same product, open a new session, and call asogenic_auth_status. If an interactive client does not support MCP OAuth, choose a supported OAuth-capable client. Platform API keys are reserved for unattended automation. Do not copy commands or tokens from another product.

CI and unattended automation

Do not attempt interactive OAuth. Create an ASOgenic platform API key, keep it in the job's secret manager, and use this fixed-header configuration:

{ "mcpServers": { "asogenic": { "url": "https://mcp.asogenic.com/mcp", "headers": { "Authorization": "Bearer <your key>" } } } }

This is the only public setup where a fixed bearer header is expected. Never put Apple values in this connection config.

Add App Store Connect credentials

After OAuth, call asogenic_auth_status. If it reports asc_configured: false, the ASOgenic connection works but Apple access has not been configured.

  1. Get the three Apple values. In App Store Connect, open Users and Access → Integrations → App Store Connect API. Use the team's Issuer ID, the API key's Key ID, and its downloaded .p8 private key. Apple allows that file to be downloaded only when the key is created. A lost file requires a replacement key.
  2. Confirm a private input path exists. Use a client-documented secret/private tool-input field or file-to-tool handoff that does not add the key to the model conversation. If the client has no such feature, stop and use another supported client or contact support. Never paste the key into ordinary chat, shell commands, logs, tickets, source control, or MCP configuration.
  3. Send it only through the credential tool. Tell the user that submitting the tool authorizes the hosted ASOgenic MCP service to receive the key. Call asogenic_store_asc_credential for persistent hosted use, or asogenic_import_asc_key for a one-session test. The credential tools never return private-key material. If a persistent credential already exists, use asogenic_rotate_asc_credential only with explicit approval. The complete release workflow requires App Manager or a higher Apple role.
  4. Verify Apple access. Call asogenic_auth_status again. Continue only when asc_configured: true and asc_valid: true, then call asogenic_list_apps. Service readiness does not prove account access.

The release workflow

The order that actually gets a never-launched app through Apple review:

  1. asogenic_auth_status: credentials work.
  2. asogenic_list_apps / asogenic_resolve_app: find the app. Keep the session_key.
  3. asogenic_intake_product_context: record what the app is. Everything downstream depends on this.
  4. Per locale: asogenic_fetch_source → generate the fields yourself (asogenic_research_keywords, asogenic_assemble_locale, asogenic_get_field_spec are aids) → asogenic_validate_record → asogenic_approve_locale → asogenic_publish.
  5. Store setup, each required before submission: category, age rating, version copyright, content-rights declaration, review info (+ demo account if the app needs login), base price, screenshots for every device family the app supports.
  6. asogenic_get_release_readiness: blockers must be empty. Read the warnings too (some name gaps the server can't verify).
  7. asogenic_submit_for_review.

App Privacy is not in this list on purpose. ASOgenic cannot complete the App Privacy questionnaire through this credential flow. Set and verify it in the App Store Connect web UI before submission.

Quotas & rate limits

Each account gets 500 tool calls per month. The allowance is account-wide across OAuth connections and platform API keys. The window rolls continuously: old calls age out. They do not reset on a fixed date. Short-window burst caps also apply, currently about 120 calls per minute.

  • RATE_LIMITED: a burst cap. Wait the retry_after_s seconds and continue.
  • QUOTA_EXCEEDED: the monthly allowance is spent. It recovers as the oldest calls age out.

A full optimization pass (keyword research, metadata, and publishing across a few locales) is roughly 50 to 100 calls, so a free key covers real, repeated use.

Troubleshooting

Codex CLI or IDE is configured, but the chat has no ASOgenic tools

Run codex mcp list, confirm the exact URL, and run codex mcp login asogenic if needed. Then start a new CLI session or IDE chat. Do not add a duplicate server.

ChatGPT Work plugin says authentication succeeded, but action discovery failed

Open ChatGPT Plugins, open ASOgenic, select Refresh, and confirm the URL ends in /mcp. Review the discovered tools, install and enable the plugin in ChatGPT Work, and start a new Work chat. The Codex CLI login does not repair this connection.

Claude Code says Needs authentication

Run claude mcp get asogenic, then authenticate from /mcp in an interactive Claude Code session. If the credential is stale, use Clear authentication there or claude mcp logout asogenic before logging in again.

Claude or Claude Desktop does not show the connector

Confirm it exists under Customize → Connectors and is enabled from the conversation's + → Connectors menu. Team/Enterprise users may need an authorized owner to add the organization connector first. Do not use desktop JSON for this hosted connector.

Cursor shows Needs login or no ASOgenic tools

Keep the mcp.json entry URL-only, enable it in MCP settings, select Needs login, and open a new Agent chat. Use cursor-agent mcp list-tools asogenic to check discovery from Cursor Agent CLI.

VS Code lists the server but Copilot Agent cannot use it

Run MCP: List Servers and start/enable ASOgenic, approve OAuth, then enable its tools under Configure Tools. Run MCP: Reset Cached Tools after a metadata change.

Auth required or no verified tenant for this request

Reconnect the exact product and surface making the tool call, then retry asogenic_auth_status in a new session. Do not copy OAuth tokens between clients or paste them into chat.

Tools are visible but action discovery fails

Use the client-specific recovery above, then test asogenic_list_capabilities, asogenic_get_server_info, and finally asogenic_auth_status before attempting a write. A build label is not an authentication status.

A consent URL returns 404

Start a fresh OAuth action in the current client. Old, expired, or replayed consent URLs should not be reused.

asc_configured: false from asogenic_auth_status

OAuth is connected, but no Apple credential is configured for this hosted account. Follow the private-input checks in Add App Store Connect credentials, use asogenic_store_asc_credential, then retry the status tool.

asc_valid: false

The credentials are present but Apple rejected them: wrong key ID/issuer ID pairing, a revoked key, or a malformed .p8.

Tools return 401 or “invalid token”

For an interactive client, reconnect OAuth in that product and retry from a new session. For an unattended job, verify or rotate its platform key on the dashboard. Do not move tokens between clients.

HTTP 502 appears briefly

Retry after the service recovers. A transient 502 is not evidence that an Apple key or OAuth account should be rotated.

APP_PRIVACY_NO_API

Expected. See the App Privacy note above. Set it in the web UI.

Still stuck? See the FAQ or contact us.