关于 The App Stores Cooolest API
这是一个 Rust API、命令行工具和 MCP 服务,用于管理 App Store Connect、Google Play 与 Huawei AppGallery 的商店元数据、定价、签名和报告。CLI 与 MCP 前端共享操作,各领域则由独立 crate 承载。
主要功能
- 01App Store Connect 元数据与定价
- 02Google Play 列表和发布
- 03AppGallery 发布操作
- 04证书、描述文件与 CSR 生成
- 05销售报告获取
- 06CLI 与 MCP 共享操作
适用场景
- 01更新商店列表和发行说明
- 02管理签名证书与描述文件
- 03获取销售报告
- 04通过 MCP 暴露商店操作
MCP 相关
MCP 服务通过 stdio 暴露共享操作;CLI 也支持 `--mcp`。AppGallery 的 MCP 工具仅包含应用信息和软件包状态等三个只读操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
smbcloud-ascapi
smbcloud-ascapi 是应用商店领域最酷的 API。
包含 9 个 crate,按领域划分并分层设计,确保两个前端的功能保持一致:
| Crate | 说明 |
|---|---|
smbcloud-ascapi-core | 共享传输层:JWT 身份验证、HTTP 客户端、JSON:API 信封、错误类型 |
smbcloud-ascapi-play | Google Play(Edits v3):商店列表、列表图片、轨道版本说明;使用服务账号身份验证,独立于 core |
smbcloud-ascapi-appgallery | 华为 AppGallery Connect Publishing API(Android):应用信息和列表、文件及包上传、提交、分阶段发布、发布时间、GMS 标记、包列表和状态;使用服务账号身份验证(PS256 JWT),独立于 core |
smbcloud-ascapi-aso | 应用元数据:应用、应用信息、版本、构建版本、预发布版本、审核提交、Bundle ID、本地化内容、截图 |
smbcloud-ascapi-pricing | 定价:应用价格计划,以及与价格点和货币关联的各地区价格 |
smbcloud-ascapi-signing | 代码签名:证书和配置描述文件,以及本地 RSA 密钥对和 CSR 生成 |
smbcloud-ascapi-reports | 销售报告:账户级销售数据,格式为 Apple 的 gzip 压缩 TSV |
smbcloud-ascapi-frontend | 两个界面共享的操作,确保 CLI 和 MCP 服务在设计上保持一致;还包含 CLI 的 xcrun altool 上传功能 |
smbcloud-ascapi-mcp | MCP 契约和 stdio 服务 |
smbcloud-ascapi-cli | asc 二进制程序:clap 命令树,以及 --mcp |
aso、play、appgallery、pricing、signing 和 reports 彼此互不知晓,也都不了解前端。每个 crate 都通过扩展 trait向 smbcloud_ascapi_core::Client 添加调用,因为 Rust 只允许在定义类型的 crate 中编写固有实现:
use smbcloud_ascapi_core::{ApiKey, Client};
use smbcloud_ascapi_aso::prelude::*; // or pricing::prelude, signing::prelude
MCP Registry 名称:mcp-name: io.github.smbcloudXYZ/ascapi
凭据
CLI 使用 App Store Connect API 密钥为请求签名:
| 标志 | 环境变量 | 说明 |
|---|---|---|
--key-id | ASC_API_KEY | 密钥 ID。不存在 ASC_KEY_ID。 |
--issuer-id | ASC_ISSUER_ID | 来自 App Store Connect 的发行者 ID。 |
--private-key-path | ASC_PRIVATE_KEY_PATH | 默认为 ~/.appstoreconnect/private_keys/AuthKey_<key-id>.p8。 |
使用 --mcp 时,每次调用工具都会解析凭据,因此即使尚未配置凭据,服务也可以列出其工具。
AppGallery 凭据
asc appgallery 使用 AppGallery Connect 服务账号(开发者级别,具有发布角色),而不是 App Store Connect 密钥:
| 标志 | 环境变量 | 说明 |
|---|---|---|
--service-account | APPGALLERY_SERVICE_ACCOUNT_JSON_PATH | *private.json 文件;也可将其内容放在 APPGALLERY_SERVICE_ACCOUNT_JSON 中。 |
--client-id | APPGALLERY_CLIENT_ID | 可选的 client_id 请求头。 |
asc appgallery app-id xyz.smbcloud.SiGit
asc appgallery listings list <APP> [--lang en-US] # every field the API returns
asc appgallery listings update <APP> --lang en-US --brief "..." --release-notes-file notes.txt
asc appgallery listings delete <APP> --lang id
asc appgallery info update <APP> --privacy-policy URL [--category ID --category-tag ID]
[--publish-country CODES] [--developer-website URL] [--device-types JSON] ...
asc appgallery files upload <APP> --type icon --lang en-US icon-216.png
asc appgallery files upload <APP> --type screenshots --orientation portrait --lang en-US 1.png 2.png
asc appgallery files upload <APP> --type package siGit.apk # chineseMainlandFlag=0 unless --chinese-mainland
asc appgallery packages list <APP>
asc appgallery packages status <APP> <PKG_ID>...
asc appgallery gms <APP> --needs-gms false
asc appgallery submit <APP> [--release-time T] [--remark TEXT] [--phased-start T --phased-end T --phased-percent P --phased-description D]
asc appgallery phased-release <APP> (--to-full | --state SUSPEND|RELEASE | --phased-percent P ...)
asc appgallery release-time <APP> (--immediately | --at T)
<APP> 是数字应用 ID 或包名。每项写入操作都支持 --dry-run。为某种语言绑定图片或视频会清除该语言的文本;files upload 会先读取文本,并在文本缺失时将其写回。MCP 提供 3 个只读工具:appgallery_app_info_get、appgallery_package_list 和 appgallery_package_status。
未涵盖:使用“下载模式”的提交和包操作;这些操作需要公开的包 URL,以及一个供华为回调的服务器。
版权
© 2026 PT Sigit Mitra Bangun(smbCloud)。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。