用 AI 自动发布 iOS 应用:开源 App Store Connect MCP Server (Swift) 实践

对于 iOS 开发者来说,写完代码往往只完成了工作的一半。接下来的应用上架与维护,才是真正折磨人的开始:

  1. 繁琐的元数据管理:多语言支持(如中、英、日、韩)需要我们手动在网页后台一次次复制、粘贴应用标题、副标题、关键字以及“此版本更新内容 (What’s New)”。
  2. TestFlight 频繁构建与提审:每次 Xcode 打包上传后,都要在网页上等待处理,手动配置出口合规证明、填写测试信息并提交审核。
  3. 证书与描述文件的折腾:注册 Bundle ID、生成开发与分发证书、配置 Provisioning Profiles 流程冗长。
  4. 琐碎的评论回复与内购表格:要定期去后台查看用户评论、回复,或者在新建内购时输入一堆冗长的表格配置。

既然我们已经可以使用 AI(如 Cursor, Windsurf, Claude 等)来辅助写代码,为什么不能让 AI 直接帮我们把这些繁杂的 App Store 运维工作也顺手做完呢?

尤其是应用描述与关键字(ASO)的撰写。很多开发人员其实并不擅长如何写出好的、吸引人的应用描述和关键字。然而,在这个世界上,除了开发者自己,最了解这个 App 的人恰恰就是那个协同开发了整个项目的 AI。项目中包含着大量的代码、架构和业务逻辑上下文,这让 AI 天然成为了填写 App Store 信息、甚至进行多语言本地化的最佳人选。它不仅可以做重复性劳动,更能提供高质量的文案输出。

这便是我开发并开源 appstoreconnect-mcp 的初衷。


什么是 MCP?

Model Context Protocol (MCP) 是由 Anthropic 提出的开放标准,旨在让大语言模型(LLM)与外部环境(如本地文件系统、数据库、外部 API 工具)建立起一条安全、统一的交互通道。

通过实现一个 MCP 服务端,你可以向 AI 助手“赋能”一组特殊的工具(Tools)。AI 会根据你的指令,自动编排并调用这些工具,实现端到端的任务执行。


为什么选择 Swift 来编写 MCP?

作为一个苹果生态的开发者,用 Swift 来编写这套工具是极其自然的选择:

  • 类型安全:借助 Swift 严格的静态类型系统,我们可以确保请求体、响应体以及 API 的映射高度严谨。
  • 与 iOS 栈一致:不需要额外配置 Python、Node.js 等环境,依靠 Swift 原生编译即可在 macOS 15+ 上直接跑起来。
  • 直接使用 Apple 原生框架:方便后续直接与 macOS 系统的 Keychain、CryptoKit 甚至是 Xcode 进行底层联通。

核心功能与 AI Agent 工作流

目前,该 MCP Server 已经实现了 78 个 API 工具,覆盖了 App Store Connect 的绝大多数核心功能。这不仅仅是简单的接口封装,当与 AI Agent 结合时,它能衍生出许多极为震撼的自动化工作流:

1. 自动化多语言元数据与 ASO 优化

假设你的 App 新增了一个功能,你只需要在 Cursor 里对 AI 说:

“根据当前工程里的新功能,帮我写一份吸引人的 App Store 应用描述和关键字(包含中英双语),并编写版本更新说明,最后帮我自动更新到 App Store Connect 后台当前的审核版本中。”

AI 助手会:

  1. 分析当前工程代码,理解新功能的实现和产品价值。
  2. 调用 list_apps 获取你的 App ID。
  3. 调用 list_app_store_versions 找到最新的处于草稿状态的构建版本。
  4. 调用 update_app_store_version_localizations 一键将生成的多语言应用描述、关键字以及 whatsNew 更新到 Apple 服务器。

整个过程在几秒钟之内完成,无需打开任何网页。

2. TestFlight 自动提审与监控

在终端打包上传后,你只需在对话框输入:

“监控最新上传的构建版本,处理完成后帮我设置出口合规为否,编写测试说明并提交 TestFlight 审核。”

AI 将会自动轮询 list_builds 查看编译进度。一旦就绪,它会调用 update_build_export_complianceupdate_build_testing_info,将构建自动推送到你的测试组中。

3. 一键创建复杂的订阅和内购

以前配置应用内购买(In-App Purchase),要在 App Store Connect 后台填各种表格、本地化名称、定价档位。现在你可以直接把表格丢给 AI,或者直接让它生成:

“帮我创建一个非消耗性商品,ID 为 com.mytech.pro,中文显示为‘专业版永久解锁’,英文为‘Pro Lifetime Unlock’,价格设定在 9.99 美元档位。”

AI 助手会直接调用 create_in_app_purchase 以及相关的 localization API 完成一键生成与配置。

4. 证书与描述文件自动管理

新拉取了一个项目?AI 可以自动调用 register_bundle_id 注册你的 Bundle ID,调用 register_device 注册开发测试机,并生成对应的 Provisioning Profiles 供本地 Xcode 编译直接使用,极大简化了新团队成员配置环境的痛苦。

5. 引入 Agent Skills:注入苹果专家的领域知识

仅仅提供 API 工具还不够,AI 在操作 App Store 时很容易踩进苹果各种隐蔽的 API 规则陷阱(比如首个版本 v1.0 填了 whatsNew 会报错 409、翻译后的 CJK 关键字长度不够浪费曝光等)。

为了让 AI 更加专业,本项目特意引入了 Agent Skills(智能体技能规范)的概念(存放于 skills 目录)。

例如,appstoreconnect-translation 技能文档为 AI 提供了以下“黄金法则”与实战指南:

  • 主语言一致性原则(Primary Locale Parity):确保主语言填写的字段(如 supportUrl)在其他多语言中不留空,防止因留空导致苹果 fallback 或提审被拒。
  • ASO 关键字扩充策略:英文翻译为中、日、韩文时,由于字符密度不同,翻译出的关键字往往远低于 100 字符上限。该 Skill 会要求 AI 自动补充同义词、长尾词至 80-100 字符,最大化 SEO/ASO 检索曝光。
  • API 避坑指南:如 v1.0 版本的 whatsNew 必须传 nil(防 409 报错),以及处理本地化名称重名(DUPLICATE_NAME)的重试逻辑。

AI 会在执行任务前自动加载这些技能,使其在操作时像一个拥有多年上架经验的 iOS 专家,确保提审一次性通过。


快速上手与集成

appstoreconnect-mcp 提供了非常友好的交互式一键安装脚本。

1. 安装

你只需在终端运行:

curl -fsSL https://raw.githubusercontent.com/jihongboo/appstoreconnect-mcp/main/install.sh | bash

脚本会自动下载预编译的二进制包,并支持交互式检测你本地的 Claude DesktopCursorWindsurf 等客户端,并将配置自动注入进去。

或者通过 Homebrew 进行安装:

brew install jihongboo/tap/appstoreconnect-mcp

2. 配置凭证

在 App Store Connect 后台申请好 API 密钥,并将以下环境变量配置到你的 MCP 配置文件中(如 mcp_config.json):

{
  "mcpServers": {
    "appstoreconnect-mcp": {
      "command": "appstoreconnect-mcp",
      "env": {
        "APP_STORE_CONNECT_ISSUER_ID": "你的 Issuer ID",
        "APP_STORE_CONNECT_PRIVATE_KEY_ID": "你的 Key ID",
        "APP_STORE_CONNECT_PRIVATE_KEY_PATH": "/Users/username/keys/AuthKey_xxxx.p8"
      }
    }
  }
}

3. 连接诊断

运行以下命令来诊断本地的 API Key 配置是否有效:

appstoreconnect-mcp --test

结语

在 AI Agent 时代,编写代码的门槛已经被大幅降低,但分发与运维依旧是一道枯燥且繁复的壁垒。appstoreconnect-mcp 将 AI 的能力从“写代码”延伸到了“自动化分发”。

如果你也厌倦了 App Store Connect 那慢吞吞的网页和繁琐的流程,欢迎安装并把它加入到你的 AI 工作流中。也欢迎到 GitHub 仓库 提出你的反馈或贡献代码!