README
🚀 App Store Connect与Play Console API的MCP服务器
本项目将最新的ASO工作流以MCP工具的形式呈现。你可以将其作为标准输入输出的MCP服务器(如Claude Code、Cursor、MCP Inspector等)运行,从而无需离开AI客户端即可管理应用商店的元数据、发布版本以及进行同步操作。
⚠️ 重要提示
该服务完全在本地运行,因此你的凭证和缓存的ASO数据不会离开本地环境(商店API调用直接从你的设备发起)。

🚀 快速开始
如果你需要管理应用在App Store Connect和Google Play Console上的相关信息,本MCP服务器将为你提供便捷的解决方案。通过它,你可以在AI客户端内完成各种操作,无需手动在应用商店后台进行繁琐的点击。
✨ 主要特性
❌ 不使用pabal - mcp的情况
- 每次更新都需要手动在App Store Connect和Google Play Console中进行操作。
- 在不同地区和版本说明之间复制粘贴时容易出错。
- 每个客户或项目都需要重复相同的设置步骤。
✅ 使用pabal - mcp的优势
- 一个MCP服务器即可处理两个应用商店的ASO数据拉取和推送。
- 可以在AI客户端中进行一致的版本说明更新和版本检查。
- 基于本地缓存和配置,拥有可复用、可脚本化的工作流。
📦 安装指南
要求
- Node.js >= 18
- MCP客户端:Cursor、Claude Code、VS Code、Windsurf等。
💡 使用建议
如果你经常进行ASO或应用商店相关任务,可以添加一个客户端规则,如“始终使用pabal - mcp”,这样MCP服务器将自动调用,无需每次都手动输入。
全局安装(推荐)
npm install -g pabal-mcp
# 或者
yarn global add pabal-mcp
建议先进行全局安装,以实现最快启动并避免npm下载问题(如代理、防火墙或离线情况)。你仍然可以使用npx -y pabal - mcp,但全局安装是更好的选择。全局安装后,将MCP配置设置为command: "pabal - mcp"(无需使用npx)。
在Cursor中安装
添加到~/.cursor/mcp.json(全局)或项目的.cursor/mcp.json中:
{
"mcpServers": {
"pabal-mcp": {
"command": "npx",
"args": ["-y", "pabal-mcp"]
}
}
}
在VS Code中安装
settings.json的MCP部分示例:
"mcp": {
"servers": {
"pabal-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "pabal-mcp"]
}
}
}
在Claude Code中安装
💡 使用建议
请参阅官方Claude Code MCP文档以获取详细的配置选项。
添加到Claude Code MCP设置(JSON格式):
{
"mcpServers": {
"pabal-mcp": {
"command": "npx",
"args": ["-y", "pabal-mcp"]
}
}
}
或者如果已经全局安装(npm install -g pabal - mcp):
{
"mcpServers": {
"pabal-mcp": {
"command": "pabal-mcp"
}
}
}
在Windsurf中安装
{
"mcpServers": {
"pabal-mcp": {
"command": "npx",
"args": ["-y", "pabal-mcp"]
}
}
}
🔐 配置凭证
- 创建配置目录并设置权限:
mkdir -p ~/.config/pabal-mcp
chmod 700 ~/.config/pabal-mcp
open ~/.config/pabal-mcp
- 创建配置文件(预填充占位符):
cat <<'EOF' > ~/.config/pabal-mcp/config.json
{
"dataDir": "/ABSOLUTE/PATH/TO/pabal-web",
"appStore": {
"issuerId": "xxxx",
"keyId": "xxxx",
"privateKeyPath": "./app-store-key.p8"
},
"googlePlay": {
"serviceAccountKeyPath": "./google-play-service-account.json"
}
}
EOF
在获取App Store Connect密钥后,下一步将替换issuerId和keyId占位符。dataDir是从每个应用商店拉取的原始数据存储的绝对路径(例如,/ABSOLUTE/PATH/TO/pabal - web)。
-
将凭证添加到
~/.config/pabal - mcp/:App Store Connect API密钥:
- App Store Connect > 用户与访问 > 密钥 → “生成API密钥”。使用管理员/应用管理器权限,下载
.p8文件(仅可下载一次),并将其保存为~/.config/pabal - mcp/app - store - key.p8。 - 从密钥详细信息中复制发行商ID和密钥ID,然后使用这些值更新
~/.config/pabal - mcp/config.json中的issuerId和keyId。
Google Play服务账户JSON文件:
- Google Cloud管理服务账户 → 创建一个服务账户(为清晰起见,将其命名为
pabal) → 创建密钥 → JSON。 - 将下载的JSON文件保存为
~/.config/pabal - mcp/google - play - service - account.json。 - 授予该服务账户电子邮件访问Play Console的权限:转到[用户和权限](https://play.google.com/console/u/0/developers/users - and - permissions) → 邀请新用户 → 输入服务账户电子邮件 → 选择ASO应用 → 启用以下权限:
- 查看应用信息并下载批量报告(只读)
- 创建、编辑和删除应用草稿
- 发布到生产环境
- 管理设备排除列表
- 使用Play应用签名
- 管理应用商店展示
配置文件结构(更新ID后):
{ "dataDir": "/ABSOLUTE/PATH/TO/pabal-web", "appStore": { "issuerId": "<your-issuer-id>", "keyId": "<your-key-id>", "privateKeyPath": "./app-store-key.p8" }, "googlePlay": { "serviceAccountKeyPath": "./google-play-service-account.json" } } - App Store Connect > 用户与访问 > 密钥 → “生成API密钥”。使用管理员/应用管理器权限,下载
-
拉取应用商店数据 使用
apps - init命令从应用商店API获取并自动注册现有应用。这将使用你应用商店中可用的应用填充~/.config/pabal - mcp/registered - apps.json文件。 -
锁定文件权限(配置文件夹中的所有文件):
chmod 600 ~/.config/pabal-mcp/*
此操作适用于~/.config/pabal - mcp/下的每个文件;添加任何新的凭证文件后,请重新运行此命令。
🔧 技术细节
MCP工具
- 身份验证
auth - check:检查App Store Connect / Google Play的身份验证。
- 应用管理
apps - init:从应用商店API获取应用并自动注册它们(Google Play需要packageName)。apps - add:通过bundleId/packageName注册单个应用。apps - search:搜索已注册的应用。
- ASO数据同步
aso - pull:将ASO数据获取到.aso/本地缓存。aso - push:将.aso/中的ASO数据推送到应用商店。
- 版本发布管理
release - check - versions:显示每个应用商店的最新版本。release - create:创建新版本。release - pull - notes:将版本说明拉取到.aso/缓存。release - update - notes:更新版本说明/新增内容。
🏗️ 开发
从源代码构建
git clone https://github.com/quartz-labs-dev/pabal-mcp.git
cd pabal-mcp
yarn install
yarn dev:mcp
测试
运行所有测试:npm test
📄 许可证
本项目采用MIT许可证。
🌐 Pabal Web
想同时管理ASO和SEO吗?快来了解Pabal Web。
Pabal Web是一个基于Next.js的Web界面,为ASO、SEO、Google Search Console索引等的统一管理提供了完整的解决方案。
微信扫一扫