App Console: Google Play, App Store Connect, AdMob

io.github.Alekla0126由 GitHub 帳號 Alekla0126 發布v0.3.0更新於 Oct 29, 2026

Google Play Console, App Store Connect and AdMob via official APIs: releases, reviews, vitals, ads

概覽

AI 產生的概覽

透過官方 API 讓助理管理 Google Play、App Store Connect 與 AdMob 的 MCP 伺服器:發布、評論、vitals、商店資訊與廣告報表。

可以做什麼
  • 列出應用程式,讀取與更新商店資訊,管理截圖與圖片,查詢公開搜尋排名
  • 上傳安裝檔、建立版本、在軌道間推廣、調整分階段發布、提交審查並發布已核准版本
  • 讀取並回覆評論,查看當機與 ANR 指標,管理訂閱、價格與 App 內購買
  • 管理 Play Console 使用者、服務帳戶與權限,送出資料安全表單
  • 依應用程式、廣告單元、國家或格式取得 AdMob 收益、eCPM、媒合率/曝光率和點擊率,以及推廣活動報表與廣告來源
  • 在 Google 已為發布商 ID 開通的情況下建立 AdMob 應用程式、廣告單元與中介群組
適用情境
適合發行行動應用程式的團隊:讓助理查看當機指標、評論、銷售與廣告收益,或在不開瀏覽器操作商店後台的情況下準備並推送版本與商店資訊變更。
執行需求
透過 uv/uvx(Python)或已發布的容器映像在本機執行。Google Play 需要 GOOGLE_PLAY_SERVICE_ACCOUNT 指向服務帳戶 JSON 金鑰,並在 Play Console 邀請該帳戶並授予對應權限。App Store Connect 需要 ASC_KEY_ID、ASC_ISSUER_ID 與 ASC_PRIVATE_KEY_PATH(或 ASC_API_KEY_JSON);銷售報表另需 ASC_VENDOR_NUMBER。AdMob 需用桌面用戶端金鑰檔做一次 OAuth 登入;ADMOB_PUBLISHER_ID 僅在多個帳戶時需要。
安裝前請注意
它持有可用於發布的憑證:Play 服務帳戶金鑰檔、App Store Connect 的 .p8 私鑰與 AdMob OAuth 權杖。上傳、分階段發布、提交審查、發布、修改商店資訊、回覆評論與授予使用者權限等寫入操作預設只是試執行,需明確傳入 confirm=true 才會執行。AdMob 的建立類方法需 Google 為發布商 ID 開通並具備 admob.monetization 權限範圍。部分後台操作仍須在網頁上完成。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 App Console: Google Play, App Store Connect, AdMob,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

app-console-mcp

Google Play Console, App Store Connect and AdMob from your terminal or from Claude — no browser.

Español

Driving store consoles through a browser agent burns tokens on screenshots and page snapshots and breaks whenever the UI changes. This project talks to the official APIs instead and answers in a few lines of plain text. Every tool exists twice, with identical output:

  • as an MCP tool for Claude Code, Claude Desktop or any MCP client, and
  • as a CLI command (appconsole ...) for you, your scripts and CI.

It ships as three Claude Code plugins (Google Play, App Store Connect, AdMob), each with its MCP server and a skill that teaches Claude the safe workflows. It also comes built into Alchemist Coder, the open-source desktop app for Claude Code and Codex: every agent there gets these tools for the services you have set up.

text
$ appconsole play vitals com.example.appcom.example.app (data up to 2026-10-19):crash: 0.31% 28-day user-perceived (ok, threshold 1.09%)  newest versions (last 28 d): v42 0.12% (35% of users) · v41 0.44% (60% of users)anr: 0.52% 28-day user-perceived (ABOVE THRESHOLD, threshold 0.47%)  newest versions (last 28 d): v42 0.21% (35% of users) · v41 0.70% (60% of users)
$ appconsole admob report --days 7 --by format --currency USDAdMob 2026-10-20 to 2026-10-26 by format: 128.40 USD (+9% vs previous 7 d: 117.80), 61210 impressions  interstitial: 71.10 USD, 9340 impr, eCPM 7.61, match 88%, show 31%  banner: 39.75 USD, 47880 impr, eCPM 0.83, match 95%, show 52%

What it can do

Google Play (play)App Store Connect (appstore)AdMob (admob)
apps list apps the key can seeapps list appsaccounts publisher accounts
listing / update-listing title, short, full description, new languageslisting / update-listing name, subtitle, keywords, description, promo text, what's newapps apps and ad unit ids
tracks releases per trackversions versions and review statereport earnings, eCPM, match/show rate, CTR by app, ad unit, country, format, app/SDK/OS version, why ads are limited, ad source or mediation group, vs. previous period
upload .aab/.apk to any track (staged or draft)create-version new editable versioncampaign-report promotion campaigns: installs, cost, CPI
promote between tracksbuilds processing state, export compliancead-sources networks and their adapters' settings
rollout change %, complete, halt, resumesubmit attach build + submit to App Reviewmediation-groups / ad-unit-mappings ✱
reviews / replyrelease release an approved manual-release versioncreate-app / create-ad-unit ✱
vitals crash and ANR rates (Google's 28-day numbers)reviews / replymap-ad-unit / create-mediation-group / update-mediation-group ✱
products subscriptions, base plans, pricessales downloads, IAP units, proceeds per appab-experiment start or stop a mediation A/B test ✱
search-rank public search positionsearch-rank public search position
images / upload-images screenshots and graphicsscreenshots / upload-screenshots per device and locale
users / grant / revoke users, service accounts and app permissionsproducts subscriptions and in-app purchases
data-safety send the Data safety form (CSV)

✱ AdMob's limited access: Google has to enable your publisher id for these methods (ask your AdMob account manager or AdMob support) and the token needs the admob.monetization scope (appconsole admob login --monetization). Until then they explain what to ask for.

Safe by default. Every tool that changes something is a dry run unless you pass confirm=true (--confirm in the CLI). Google Play dry runs build the change in a draft edit and let Google validate it before discarding it, so you see real errors before anything is published. MCP tools carry readOnlyHint/destructiveHint annotations so clients can auto-approve reads and ask before writes.

Install

You need uv (it fetches Python and the dependencies).

Claude Code plugins (recommended)

text
/plugin marketplace add Alekla0126/app-console-mcp/plugin install google-play@app-console/plugin install app-store-connect@app-console/plugin install admob@app-console

Install only the ones you use. Each plugin asks for its credentials (paths and ids; you can leave them empty and use appconsole config instead), adds its MCP server and skill, and puts appconsole on the PATH of Claude's Bash tool.

Any MCP client (Claude Desktop, Cursor, Codex, VS Code…)

json
{  "mcpServers": {    "google-play": {      "command": "uvx",      "args": ["--from", "git+https://github.com/Alekla0126/app-console-mcp", "appconsole", "mcp", "play"],      "env": { "GOOGLE_PLAY_SERVICE_ACCOUNT": "/path/to/service-account.json" }    },    "app-store-connect": {      "command": "uvx",      "args": ["--from", "git+https://github.com/Alekla0126/app-console-mcp", "appconsole", "mcp", "appstore"]    },    "admob": {      "command": "uvx",      "args": ["--from", "git+https://github.com/Alekla0126/app-console-mcp", "appconsole", "mcp", "admob"]    }  }}

appconsole mcp all serves the three services as a single server, for clients that take only one.

Or with the Claude Code CLI: claude mcp add google-play -- uvx --from git+https://github.com/Alekla0126/app-console-mcp appconsole mcp play

CLI only

bash
uv tool install git+https://github.com/Alekla0126/app-console-mcpappconsole --helpappconsole play reviews com.example.app --unanswered-only

Credentials

Settings are read from environment variables first, then from ~/.config/appconsole/config.json (appconsole config set KEY VALUE, stored with 600 permissions). Only file paths and ids are stored; keys stay where you keep them. Run appconsole doctor to check all three services.

Google Play setup

  1. In a Google Cloud project enable the Google Play Android Developer API and the Google Play Developer Reporting API.
  2. Create a service account (IAM & Admin > Service accounts) and a JSON key for it.
  3. In Play Console > Users and permissions > Invite new users, add the service account's email and grant what you need: View app information (read and vitals), Manage store presence (listings), Release apps to testing tracks / Release to production (uploads and rollouts), Reply to reviews.
  4. appconsole config set GOOGLE_PLAY_SERVICE_ACCOUNT /path/to/key.json
  5. For users, grant and revoke: appconsole config set GOOGLE_PLAY_DEVELOPER_ID <the number after /developers/ in any Play Console address>, and give the key "Manage users and permissions".

App Store Connect setup

  1. App Store Connect > Users and Access > Integrations > App Store Connect API > Team Keys > generate a key. Role App Manager covers everything here except sales, which needs Sales or Finance.
  2. Download AuthKey_<KEY_ID>.p8 (Apple lets you download it only once) and note the Key ID and the Issuer ID.
  3. Configure:
bash
appconsole config set ASC_KEY_ID ABC123XYZappconsole config set ASC_ISSUER_ID 00000000-0000-0000-0000-000000000000appconsole config set ASC_PRIVATE_KEY_PATH ~/.appstoreconnect/private_keys/AuthKey_ABC123XYZ.p8appconsole config set ASC_VENDOR_NUMBER 12345678   # optional, for `appstore sales`

Already use fastlane? Point ASC_API_KEY_JSON to your api_key.json instead. If the .p8 file sits in ~/.appstoreconnect/private_keys or ~/private_keys, the path is optional.

AdMob setup

AdMob does not accept service accounts, only a Google user, so you authorize once:

  1. In a Google Cloud project enable the AdMob API.
  2. Configure the OAuth consent screen (External; add yourself as a test user) and set its publishing status to In production — refresh tokens of apps left in Testing expire after 7 days. For your own use you will see an "unverified app" warning; that is expected.
  3. Create an OAuth client ID of type Desktop app and download its JSON.
  4. appconsole admob login --client-secrets client_secret.json (opens the browser once; the token is saved in ~/.config/appconsole/admob-token.json). Add --monetization to also create apps, ad units and mediation groups, once Google enabled your publisher id for them.

Alternative: gcloud application-default credentials with the AdMob scopes — gcloud auth application-default login --scopes=https://www.googleapis.com/auth/admob.readonly,https://www.googleapis.com/auth/admob.report,https://www.googleapis.com/auth/cloud-platform. With several publisher accounts set ADMOB_PUBLISHER_ID=pub-....

All settings

SettingUsed by
GOOGLE_PLAY_SERVICE_ACCOUNTGoogle Play (falls back to GOOGLE_APPLICATION_CREDENTIALS)
GOOGLE_PLAY_DEVELOPER_IDGoogle Play users and permissions
ASC_KEY_ID, ASC_ISSUER_ID, ASC_PRIVATE_KEY_PATH or ASC_PRIVATE_KEYApp Store Connect
ASC_API_KEY_JSONApp Store Connect, fastlane-format key file instead of the three above
ASC_VENDOR_NUMBERappstore sales
ADMOB_PUBLISHER_ID, ADMOB_TOKEN_FILEAdMob, optional
APPCONSOLE_HOMEconfig directory, default ~/.config/appconsole
APPCONSOLE_DEBUG=1show full tracebacks in the CLI

What the official APIs cannot do

These still need the website, and the tools say so when you hit them:

  • Google Play: the Publish button when managed publishing is on (and Send for review when Google demands it by hand), creating apps, content rating, ads and advertising ID declarations, target audience, app access, custom store listings and listing experiments, replying to reviews older than about a week, and reading back the Data safety answers.
  • App Store Connect: creating the app record, App Privacy labels, age rating, app previews, Resolution Center messages. Creating and pricing subscriptions and in-app purchases has an API but isn't implemented yet.
  • AdMob: privacy & messaging (GDPR, US states, IDFA), blocking controls, the policy center, payments, app-ads.txt status and users. Creating apps, ad units, mappings and mediation groups exists but only for publishers Google enabled (✱ above).

Development

bash
uv venv && uv pip install -e '.[dev]'.venv/bin/pytest && .venv/bin/ruff check src testsclaude plugin validate .

bin/appconsole and the plugins run the package with uvx --from <repo>, which caches the build; after editing the sources use the .venv or add --refresh-package app-console-mcp. For a release, bump the version in pyproject.toml, src/app_console_mcp/__init__.py and the three entries of .claude-plugin/marketplace.json.

Tagging v* runs .github/workflows/publish.yml, which publishes to PyPI and then to the official MCP Registry (server.json). It is off until PyPI trusts the workflow: on pypi.org add a pending trusted publisher (project app-console-mcp, owner Alekla0126, repository app-console-mcp, workflow publish.yml, environment pypi), then gh variable set PUBLISH_PYPI --body true and re-run the workflow.

Until then, .github/workflows/docker.yml (on the same tags, or run by hand) pushes the all-in-one image to ghcr.io/alekla0126/app-console-mcp and lists that image in the MCP Registry instead. The registry reads the image, so the package must be public (GitHub → Packages → app-console-mcp → Package settings → Change visibility). Once PyPI is on, add the image to server.json's packages next to PyPI's, because the registry takes each version once.

A tool is one function decorated with @tool() (or @tool(write=True) with a confirm argument) in src/app_console_mcp/{play,appstore,admob}.py. Its signature and Google-style docstring become both the MCP schema and the CLI options. Keep outputs short: they are read by a model.

Issues and pull requests are welcome.

License

MIT. Not affiliated with Google or Apple. Google Play, AdMob and App Store Connect are trademarks of their owners.

來源:README.md,提交 e41ee4c

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.3.0最新Oct 29, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分