内容
# asc-metadata-mcp
> App Store Connect 作为 MCP 工具 — 直接从 Claude Code 或 Claude Desktop 管理元数据、分析、评论、IAP、订阅等。
[](https://swift.org)
[](https://developer.apple.com/macos/)
[](https://modelcontextprotocol.io)
[](LICENSE)
一个原生的 Swift [MCP 服务器](https://modelcontextprotocol.io),它公开了 **65+ App Store Connect API 操作**,作为结构化工具 — 因此 Claude 可以在不使用 shell 命令、浏览器会话或复制粘贴的情况下读取和写入您的 App Store 存在。
**独立苹果开发者栈的一部分:**
- **[asc-metadata-mcp](https://github.com/rshankras/asc-metadata-mcp)** ← 你在这里 — ASC 集成层
- **[indie-app-autopilot](https://github.com/rshankras/indie-app-autopilot)** — 从 GitHub 问题到 App Store 的代理管道
- **[claude-code-apple-skills](https://github.com/rshankras/claude-code-apple-skills)** — 适用于 Claude Code 的 139 个苹果开发技能
## 你可以做的事情
询问 Claude: *"根据本周的搜索趋势更新我所有应用的关键词"*
→ Claude 调用 `list_apps`、`get_metadata`,然后为每个应用调用 `update_keywords`。
询问 Claude: *"哪个应用本周下载量下降幅度最大?"*
→ Claude 调用 `get_sales_report` 和 `get_analytics_report`,然后对它们进行排名。
询问 Claude: *"回复所有提及崩溃的 1 星评论"*
→ Claude 调用 `list_reviews`,按评分和内容筛选,然后为每个评论调用 `respond_to_review`。
所有写入工具都支持 **`dryRun: true`** — Claude 显示它将更改的内容,然后再进行实际更改。
## 安装
### 1. 生成 App Store Connect API 密钥
1. 进入 [App Store Connect → 用户和访问权限 → 集成 → 密钥](https://appstoreconnect.apple.com/access/integrations/api)
2. 生成具有 **应用管理器** 或 **管理员** 角色的 API 密钥
3. 下载 `.p8` 文件(仅在生成时可用)
4. 记录密钥 ID 和颁发者 ID
### 2. 创建配置文件
```bash
mkdir -p ~/.asc-metadata-mcp
cat > ~/.asc-metadata-mcp/config.json << 'EOF'
{
"issuerID": "YOUR_ISSUER_ID",
"privateKeyID": "YOUR_KEY_ID",
"privateKeyPath": "/Users/you/.appstoreconnect/AuthKey_XXXXXXXX.p8",
"vendorNumber": "YOUR_VENDOR_NUMBER"
}
EOF
```
`vendorNumber` 是可选的 — `get_sales_report` 和 `get_finance_report` 的默认值。在 App Store Connect 下的付款和财务报告中找到它(不可通过 API 获取)。
### 3. 编译
```bash
git clone https://github.com/rshankras/asc-metadata-mcp.git
cd asc-metadata-mcp
swift build -c release
```
### 4. 添加到 Claude Code
`~/.claude.json` 或项目 `.mcp.json`:
```json
{
"mcpServers": {
"asc-metadata": {
"command": "/path/to/asc-metadata-mcp/.build/release/asc-metadata-mcp",
"args": []
}
}
}
```
对于 Claude Desktop,请将相同的块添加到 `~/Library/Application Support/Claude/claude_desktop_config.json`。
## 工具(65+)
### 应用和元数据
| 工具 | 描述 |
|------|-------------|
| `list_apps` | 列出您帐户中的所有应用 |
| `get_metadata` | 读取应用和本地化的元数据 |
| `list_locales` | 列出活动的本地化 |
| `update_name` | 更新应用名称/副标题 |
| `update_keywords` | 更新关键词(验证每个本地化 100 个字符的限制) |
| `update_description` | 更新完整描述 |
| `update_promo_text` | 更新促销文本(立即生效,无需审核) |
| `update_whats_new` | 更新发行说明 |
| `bulk_update` | 一次更新多个元数据字段 |
| `create_version` | 创建新的 App Store 版本 |
| `update_accessibility` | 更新无障碍元数据 |
| `update_age_rating` | 更新年龄评级声明 |
| `get_age_rating` | 读取当前年龄评级 |
| `get_app_pricing` | 读取定价和可用性 |
| `update_availability` | 更新地区可用性 |
| `list_price_points` | 列出可用的价格点 |
所有写入工具都支持 `dryRun: true` 以在提交前预览更改。
### 评论
| 工具 | 描述 |
|------|-------------|
| `list_reviews` | 列出客户评论(按评分、地区筛选) |
| `get_review` | 获取特定评论 |
| `respond_to_review` | 发布或更新评论回复 |
| `delete_review_response` | 删除现有的回复 |
### 应用内购买
| 工具 | 描述 |
|------|-------------|
| `list_iap` | 列出所有应用内购买 |
| `get_iap` | 获取特定 IAP 的详细信息 |
| `create_iap` | 创建新的应用内购买 |
| `update_iap` | 更新 IAP 详细信息 |
| `delete_iap` | 删除应用内购买 |
### 订阅
| 工具 | 描述 |
|------|-------------|
| `list_subscription_groups` | 列出订阅组 |
| `list_subscriptions` | 列出组中的订阅 |
| `create_subscription_group` | 创建订阅组 |
| `create_subscription` | 创建订阅产品 |
| `update_subscription` | 更新订阅详细信息 |
### 测试版
| 工具 | 描述 |
|------|-------------|
| `list_beta_groups` | 列出 TestFlight 测试版组 |
| `create_beta_group` | 创建测试版组 |
| `update_beta_group` | 更新组设置 |
| `delete_beta_group` | 删除测试版组 |
| `add_beta_tester` | 将测试人员添加到组 |
| `list_beta_feedback_crashes` | 测试人员崩溃反馈 |
| `list_beta_feedback_screenshots` | 测试人员截图反馈 |
### 产品页面优化(实验)
| 工具 | 描述 |
|------|-------------|
| `list_experiments` | 列出 A/B 实验 |
| `create_experiment` | 创建新的实验 |
| `create_experiment_treatment` | 添加处理变体 |
| `update_experiment` | 更新实验设置 |
| `delete_experiment` | 删除实验 |
### 自定义产品页面
| 工具 | 描述 |
|------|-------------|
| `list_custom_pages` | 列出自定义产品页面 |
| `create_custom_page` | 创建自定义产品页面 |
| `create_custom_page_version` | 创建页面的版本 |
| `update_custom_page` | 更新自定义页面详细信息 |
| `delete_custom_page` | 删除自定义页面 |
### 应用内事件
| 工具 | 描述 |
|------|-------------|
| `list_app_events` | 列出应用内事件 |
| `create_app_event` | 创建应用内事件 |
| `update_app_event` | 更新事件详细信息 |
| `update_event_localization` | 更新事件本地化 |
| `delete_app_event` | 删除应用内事件 |
### 分阶段发布
| 工具 | 描述 |
|------|-------------|
| `create_phased_release` | 为版本启用分阶段发布 |
| `update_phased_release` | 暂停、恢复或完成分阶段发布 |
| `delete_phased_release` | 取消分阶段发布 |
### Webhooks
| 工具 | 描述 |
|------|-------------|
| `list_webhooks` | 列出配置的 webhooks |
| `create_webhook` | 创建 webhook |
| `update_webhook` | 更新 webhook URL/事件 |
| `delete_webhook` | 删除 webhook |
| `ping_webhook` | 发送测试 ping |
### 分析和性能
| 工具 | 描述 |
|------|-------------|
| `setup_analytics_reports` | 一次性设置以启用分析收集 |
| `get_analytics_report` | 下载分析数据(参与度、使用情况、商业) |
| `get_perf_metrics` | 性能和电源指标,带有回归检测 |
| `get_diagnostics` | 诊断签名(崩溃、磁盘写入、启动缓慢) |
分析报告需要一次性设置,然后 24-48 小时内数据才会出现:
```
1. setup_analytics_reports → 运行一次
2. get_analytics_report → 列出可用报告(省略 reportName)
3. get_analytics_report → 按 reportName 下载
```
`get_perf_metrics` 和 `get_diagnostics` 立即生效,无需设置。
### 销售和财务
| 工具 | 描述 |
|------|-------------|
| `get_sales_report` | 单位、收益、退款、订阅(次日) |
| `get_finance_report` | 按地区划分的每月结算报告 |
两者都需要您的供应商编号(来自 App Store Connect → 付款和财务报告)。
## 架构
使用官方的 [MCP Swift SDK](https://github.com/modelcontextprotocol/swift-sdk) 和 [asc-swift](https://github.com/aaronsky/asc-swift) 构建,用于 App Store Connect API 客户端(自动管理 JWT 生命周期)。
## 相关
| 仓库 | 描述 |
|------|-----------|
| [indie-app-autopilot](https://github.com/rshankras/indie-app-autopilot) | 代理管道:GitHub 问题 → 测试 PR → TestFlight → App Store |
| [claude-code-apple-skills](https://github.com/rshankras/claude-code-apple-skills) | 适用于 Claude Code 的 139 个苹果开发技能 |
## 许可证
MIT