mcpField
A
App Console: Google Play, App Store Connect, AdMob

App Console: Google Play, App Store Connect, AdMob

本地服务
github.com/Alekla0126开发工具03 天前更新

关于 App Console: Google Play, App Store Connect, AdMob

App Console 通过官方 API 管理 Google Play Console、App Store Connect 和 AdMob,面向应用开发者及运营团队。相同功能可通过命令行或 MCP 工具调用,写入操作默认先进行试运行。

主要功能

  1. 01管理商店列表、版本和发布
  2. 02查看评论并发送回复
  3. 03查询崩溃率及 ANR 指标
  4. 04查看 AdMob 收入和广告指标
  5. 05通过命令行和 MCP 调用
  6. 06写入操作默认试运行

适用场景

  1. 01检查应用版本并准备商店发布
  2. 02筛选未回复的应用评论
  3. 03监测崩溃和 ANR 指标
  4. 04按广告格式或国家查看 AdMob 报告

MCP 相关

提供用于 Google Play、App Store Connect 和 AdMob 的 MCP 工具;可分别启动服务,也可由 `appconsole mcp all` 合并为一个服务。工具包含只读和破坏性操作标注,写入需确认。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"alekla0126-app-console": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GOOGLE_PLAY_SERVICE_ACCOUNT",
"-e",
"ASC_KEY_ID",
"-e",
"ASC_ISSUER_ID",
"-e",
"ASC_PRIVATE_KEY_PATH",
"-e",
"ASC_VENDOR_NUMBER",
"-e",
"ADMOB_PUBLISHER_ID",
"ghcr.io/alekla0126/app-console-mcp:0.3.0"
],
"env": {
"GOOGLE_PLAY_SERVICE_ACCOUNT": "<GOOGLE_PLAY_SERVICE_ACCOUNT>",
"ASC_KEY_ID": "<ASC_KEY_ID>",
"ASC_ISSUER_ID": "<ASC_ISSUER_ID>",
"ASC_PRIVATE_KEY_PATH": "<ASC_PRIVATE_KEY_PATH>",
"ASC_VENDOR_NUMBER": "<ASC_VENDOR_NUMBER>",
"ADMOB_PUBLISHER_ID": "<ADMOB_PUBLISHER_ID>"
}
}
}
}
启动命令docker run -i --rm -e GOOGLE_PLAY_SERVICE_ACCOUNT -e ASC_KEY_ID -e ASC_ISSUER_ID -e ASC_PRIVATE_KEY_PATH -e ASC_VENDOR_NUMBER -e ADMOB_PUBLISHER_ID ghcr.io/alekla0126/app-console-mcp:0.3.0
需要配置的环境变量
GOOGLE_PLAY_SERVICE_ACCOUNTPath to a Google Cloud service account JSON key invited in Play Console
ASC_KEY_ID密钥App Store Connect API key ID
ASC_ISSUER_IDApp Store Connect API issuer ID
ASC_PRIVATE_KEY_PATH密钥Path to the AuthKey_<KEY_ID>.p8 file
ASC_VENDOR_NUMBERVendor number, only for sales reports
ADMOB_PUBLISHER_IDpub-... id, only with several AdMob accounts

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/alekla0126/app-console-mcp:0.3.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

app-console-mcp

在终端或 Claude 中使用 Google Play Console、App Store Connect 和 AdMob,无需浏览器。

Español

通过浏览器 Agent 操作商店控制台,会在截图和页面快照上消耗大量 token,而且 UI 一有变化就会失效。本项目改为调用官方 API,并以几行纯文本作答。每个工具都有两种形式,输出完全相同:

  • 作为 MCP 工具,供 Claude Code、Claude Desktop 或任何 MCP 客户端使用;以及
  • 作为 CLI 命令(appconsole ...),供你、脚本和 CI 使用。

项目以三个 Claude Code 插件的形式提供(Google Play、App Store Connect、AdMob),每个插件都包含自己的 MCP 服务,以及教 Claude 安全工作流的技能。它也内置于 Alchemist Coder 中。Alchemist Coder 是一款面向 Claude Code 和 Codex 的开源桌面应用:其中的每个 Agent 都能使用你已设置的服务对应的这些工具。

$ appconsole play vitals com.example.app
com.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 USD
AdMob 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%

功能

Google Play(play)App Store Connect(appstore)AdMob(admob)
apps 列出密钥可访问的应用apps 列出应用accounts 发布商账号
listing / update-listing 标题、简短描述、完整描述、新语言listing / update-listing 名称、副标题、关键词、描述、宣传文本、更新内容apps 应用和广告单元 ID
tracks 查看每个轨道上的版本versions 版本和审核状态report 按应用、广告单元、国家/地区、格式、应用/SDK/OS 版本、广告受限原因、广告来源或中介组查看收入、eCPM、匹配率/展示率、CTR,以及与上一时段的对比
upload 将 .aab/.apk 上传到任意轨道(分阶段发布或草稿)create-version 创建新的可编辑版本campaign-report 推广活动:安装量、费用、CPI
promote 在轨道之间推广builds 处理状态、出口合规性ad-sources 网络及其适配器设置
rollout 更改百分比、完成、暂停、恢复submit 附加构建版本并提交至 App Reviewmediation-groups / ad-unit-mappings ✱
reviews / replyrelease 发布已批准的手动发布版本create-app / create-ad-unit ✱
vitals 崩溃率和 ANR 率(Google 的 28 天数据)reviews / replymap-ad-unit / create-mediation-group / update-mediation-group ✱
products 订阅、基础方案、价格sales 按应用查看下载量、IAP 数量、收入ab-experiment 启动或停止中介 A/B 测试 ✱
search-rank 公开搜索排名search-rank 公开搜索排名
images / upload-images 截图和图形素材screenshots / upload-screenshots 按设备和地区查看
users / grant / revoke 用户、服务账号和应用权限products 订阅和应用内购买
data-safety 提交 Data safety 表单(CSV)

✱ AdMob 的受限访问:Google 必须为你的发布商 ID 启用这些方法(请联系 AdMob 客户经理或 AdMob 支持),且令牌需要 admob.monetization 范围(appconsole admob login --monetization)。在此之前,这些工具会说明需要申请什么。

默认安全。 所有会更改内容的工具都默认执行试运行,除非传入 confirm=true(在 CLI 中使用 --confirm)。 Google Play 试运行会在草稿编辑中构建更改,并让 Google 在丢弃更改前进行验证,这样你就能在发布任何内容之前看到真实错误。MCP 工具带有 readOnlyHint/destructiveHint 注释,客户端可以据此自动批准读取操作,并在写入前询问。

安装

你需要 uv(它会获取 Python 和依赖项)。

Claude Code 插件(推荐)
/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

只安装你会用到的插件。每个插件都会询问所需凭据(路径和 ID;可以留空,改用 appconsole config),添加其 MCP 服务和技能,并将 appconsole 加入 Claude Bash 工具的 PATH。

任意 MCP 客户端(Claude Desktop、Cursor、Codex、VS Code……)
{
  "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 会将三个服务作为单个服务提供,适用于只接受一个服务的客户端。

也可以使用 Claude Code CLI: claude mcp add google-play -- uvx --from git+https://github.com/Alekla0126/app-console-mcp appconsole mcp play

仅限命令行
uv tool install git+https://github.com/Alekla0126/app-console-mcp
appconsole --help
appconsole play reviews com.example.app --unanswered-only

凭据

设置会优先从环境变量读取,其次从 ~/.config/appconsole/config.json 读取 (通过 appconsole config set KEY VALUE 设置,并以 600 权限存储)。这里只存储文件路径和 ID;密钥仍保存在你指定的位置。 运行 appconsole doctor 可检查全部三个服务。

Google Play 设置
  1. 在 Google Cloud 项目中启用 Google Play Android Developer API 和 Google Play Developer Reporting API。
  2. 创建服务账号(IAM & Admin > Service accounts),并为其创建 JSON 密钥。
  3. 在 Play Console > Users and permissions > Invite new users 中,添加服务账号的电子邮件地址并授予 所需权限:View app information(读取信息和核心指标)、Manage store presence(商品详情)、Release apps to testing tracks / Release to production(上传和发布)、Reply to reviews。
  4. appconsole config set GOOGLE_PLAY_SERVICE_ACCOUNT /path/to/key.json
  5. 对于 users、grant 和 revoke:运行 appconsole config set GOOGLE_PLAY_DEVELOPER_ID <任意 Play Console 地址中 /developers/ 后面的数字>,并授予密钥“Manage users and permissions”权限。
App Store Connect 设置
  1. App Store Connect > Users and Access > Integrations > App Store Connect API > Team Keys > 生成密钥。角色 App Manager 涵盖此处的所有操作,但销售数据除外;销售数据需要 Sales 或 Finance 角色。
  2. 下载 AuthKey_<KEY_ID>.p8(Apple 只允许下载一次),并记下 Key ID 和 Issuer ID。
  3. 配置:
appconsole config set ASC_KEY_ID ABC123XYZ
appconsole config set ASC_ISSUER_ID 00000000-0000-0000-0000-000000000000
appconsole config set ASC_PRIVATE_KEY_PATH ~/.appstoreconnect/private_keys/AuthKey_ABC123XYZ.p8
appconsole config set ASC_VENDOR_NUMBER 12345678   # optional, for `appstore sales`

如果你已在使用 fastlane,可以改为将 ASC_API_KEY_JSON 指向你的 api_key.json。如果 .p8 文件位于 ~/.appstoreconnect/private_keys 或 ~/private_keys,则可以省略路径。

AdMob 设置

AdMob 不接受服务账号,只接受 Google 用户,因此需要授权一次:

  1. 在 Google Cloud 项目中启用 AdMob API。
  2. 配置 OAuth 同意屏幕(选择 External;将自己添加为测试用户),并将发布状态设为 In production——仍处于 Testing 状态的应用,其刷新令牌会在 7 天后过期。自行使用时会看到“未经验证的应用”警告,这是正常情况。
  3. 创建类型为 Desktop app 的 OAuth 客户端 ID,并下载其 JSON 文件。
  4. 运行 appconsole admob login --client-secrets client_secret.json(会打开一次浏览器;令牌会保存到 ~/.config/appconsole/admob-token.json)。Google 为你的发布商 ID 启用相关权限后,可添加 --monetization 来创建应用、广告单元和中介组。

替代方案:使用带 AdMob 作用域的 gcloud 应用默认凭据 — 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。 如果有多个发布商账号,请设置 ADMOB_PUBLISHER_ID=pub-...。

所有设置
设置用途
GOOGLE_PLAY_SERVICE_ACCOUNTGoogle Play(若未设置,则使用 GOOGLE_APPLICATION_CREDENTIALS)
GOOGLE_PLAY_DEVELOPER_IDGoogle Play 用户和权限
ASC_KEY_ID、ASC_ISSUER_ID、ASC_PRIVATE_KEY_PATH 或 ASC_PRIVATE_KEYApp Store Connect
ASC_API_KEY_JSONApp Store Connect,使用 fastlane 格式的密钥文件代替上述三项
ASC_VENDOR_NUMBERappstore sales
ADMOB_PUBLISHER_ID、ADMOB_TOKEN_FILEAdMob,可选
APPCONSOLE_HOME配置目录,默认为 ~/.config/appconsole
APPCONSOLE_DEBUG=1在 CLI 中显示完整回溯信息

官方 API 无法完成的操作

以下操作仍然需要通过网站完成,使用这些工具遇到这类操作时会明确提示:

  • Google Play:启用托管发布时的 Publish 按钮(以及 Google 要求手动操作时的 Send for review)、创建应用、内容分级、广告和广告 ID 声明、目标受众、应用访问权限、自定义商店详情和详情页实验、回复超过约一周的评价,以及读取 Data safety 的回答。
  • App Store Connect:创建应用记录、App Privacy 标签、年龄分级、应用预览、Resolution Center 消息。创建订阅和应用内购买项目及其定价有 API,但尚未实现。
  • AdMob:隐私与消息(GDPR、美国各州、IDFA)、屏蔽控制、政策中心、付款、app-ads.txt 状态和用户。创建应用、广告单元、映射和中介组的功能已经存在,但仅适用于获准使用的发布者(上文的 ✱)。

开发

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

bin/appconsole 和插件通过 uvx --from <repo> 运行此软件包,该命令会缓存构建结果;编辑源文件后,请使用 .venv,或添加 --refresh-package app-console-mcp。发布时,请更新 pyproject.toml、src/app_console_mcp/__init__.py 和 .claude-plugin/marketplace.json 中的三个版本号。

标记 v* 会运行 .github/workflows/publish.yml,将软件包发布到 PyPI,然后发布到官方 MCP Registry(server.json)。在 PyPI 信任此工作流之前,这项功能处于关闭状态:在 pypi.org 添加待处理的可信发布者(项目为 app-console-mcp,所有者为 Alekla0126,仓库为 app-console-mcp,工作流为 publish.yml,环境为 pypi),然后运行 gh variable set PUBLISH_PYPI --body true 并重新运行工作流。

在此之前,.github/workflows/docker.yml(在相同标签上触发,也可手动运行)会将一体化映像推送到 ghcr.io/alekla0126/app-console-mcp,并改为在 MCP Registry 中列出该映像。Registry 会读取映像,因此软件包必须公开可见(GitHub → Packages → app-console-mcp → Package settings → Change visibility)。启用 PyPI 发布后,请将该映像添加到 server.json 的 packages 中,放在 PyPI 软件包旁边,因为 Registry 每个版本只收录一次。

工具是在 src/app_console_mcp/{play,appstore,admob}.py 中使用 @tool()(或带有 confirm 参数的 @tool(write=True))装饰的一个函数。它的签名和 Google 风格的文档字符串会同时生成 MCP 架构和 CLI 选项。请保持输出简短,因为模型会读取这些内容。

欢迎提交问题和拉取请求。

许可证

MIT。与 Google 或 Apple 无关联。Google Play、AdMob 和 App Store Connect 是其各自所有者的商标。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。