asc-mcp
概述
asc-mcp 是一个基于 Swift 的 MCP 服务器,将本地 macOS MCP 客户端连接到 App Store Connect API。它公开了 502 个工具,涵盖 33 个 App Store 工具域 + 2 个核心域,使您能够通过自然语言自动化 iOS 和 macOS 发布工作流。
配置示例已包含 Codex、Claude Code、Claude Desktop、Gemini CLI、带 GitHub Copilot 的 VS Code、Continue、Cursor 和 Devin Desktop(原 Windsurf)。客户端配置已有文档说明;发布 CI 在 macOS 上验证安装、MCP 初始化和工具发现,而不是启动每个第三方客户端。
刚接触本项目?请遵循快速开始。其余章节是面向高级配置、工具选择和贡献者的参考材料。
主要功能
发布与元数据 — 版本、本地化、构建版本、审核提交、分阶段发布和 Xcode Cloud
TestFlight 与上传 — 测试组、测试员、反馈、招募、构建交付、处理和出口合规
变现 — 应用内购买、订阅、定价、可用性、优惠代码和促销优惠
营销 — 截图、预览、自定义产品页、产品页优化和推广购买
账户与配置 — 多个 App Store Connect 团队、用户、Bundle ID、设备、证书、描述文件和功能
反馈与运营 — 客户评论、Webhook、无障碍声明、分析、指标和诊断
更安全的自动化 — 只读模式、确认保护、严格分页和变更恢复指南
可审计的 API 覆盖 — 版本化的 Apple OpenAPI 契约和发布时漂移检查
Related MCP server: App Store Connect MCP
平台支持
asc-mcp 是一个本地 stdio 服务器:MCP 客户端在同一台计算机上启动它。客户端在 Linux 或 Windows 上可用并不意味着这个 Swift 服务器是跨平台的。
环境 | 状态 | 说明 |
macOS 15.6+ 搭配 Xcode 26.x | 推荐 | 发布 CI 专门使用 GitHub 的 macOS 15 运行器搭配 Xcode 26.2 |
macOS 14.0-15.5 | 仅声明为部署目标 | 构建和运行未经验证;可能需要单独安装 Swift 6.2+ 工具链 |
Linux | 暂不支持 | 移植工作和 Linux CI 尚未完成 |
Windows | 不支持 | 当前的源代码依赖和 Swift MCP |
请参阅 Apple 的 Xcode 系统要求 了解每个 Xcode 版本支持的 macOS 版本。
Web 和云会话不会自动继承本地 MCP 配置。请在兼容的 Mac 上本地运行 MCP 客户端,或使用明确保持在该 Mac 上执行的客户端功能。
快速开始
推荐的设置将 App Store Connect 凭据一次性存储在私有本地文件中。MCP 客户端随后只需 asc-mcp 可执行文件的路径。
1. 安装 asc-mcp
brew install mint
mint install zelentsov-dev/asc-mcp@v4.1.6
~/.mint/bin/asc-mcp --version2. 创建 App Store Connect API 密钥
生成一个覆盖您工作流所需的最小权限角色的密钥。仅当相应操作需要时,才需要 App Manager 或 Admin 角色。
下载
.p8文件。Apple 仅允许下载一次。复制密钥 ID 和签发者 ID。
3. 在本地保存凭据
创建私有配置目录,然后将下载的 .p8 文件移动到 ~/.keys/。在第二条命令中替换源路径和文件名:
mkdir -p ~/.config/asc-mcp ~/.keys
chmod 700 ~/.config/asc-mcp ~/.keys
mv /path/to/downloaded/AuthKey_XXXXXXXXXX.p8 ~/.keys/创建 ~/.config/asc-mcp/companies.json:
{
"companies": [
{
"id": "my-company",
"name": "My Company",
"key_id": "XXXXXXXXXX",
"issuer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"key_path": "/Users/you/.keys/AuthKey_XXXXXXXXXX.p8"
}
]
}将 /Users/you 替换为您的实际主目录路径。将两个文件都保留在仓库之外并限制访问权限:
chmod 600 ~/.config/asc-mcp/companies.json
chmod 600 /Users/you/.keys/AuthKey_XXXXXXXXXX.p8[!CAUTION] 切勿将
companies.json、.p8密钥或原始凭据提交到 Git。如果 App Store Connect 密钥被泄露,请立即撤销。
4. 连接您的 MCP 客户端
选择一个客户端。您无需配置每个客户端。
Codex
codex mcp add asc-mcp -- ~/.mint/bin/asc-mcp
codex mcp listClaude Code
claude mcp add \
--transport stdio \
--scope user \
asc-mcp \
-- ~/.mint/bin/asc-mcp
claude mcp get asc-mcp
claude mcp list对于 Claude Desktop、Gemini CLI、VS Code、Continue、Cursor 和 Devin Desktop,请使用 MCP 客户端设置 中可直接复制的示例。
5. 试用
更改配置后重启 GUI 客户端,打开其 MCP 工具列表,然后询问:
List my App Store Connect apps.如果连接或请求失败,请参阅故障排除。
安装
在 macOS 上使用 Mint(推荐)
Mint 从源码安装固定版本,并将可执行文件保留在 ~/.mint/bin/asc-mcp。
brew install mint
mint install zelentsov-dev/asc-mcp@v4.1.6更新或重新安装固定版本:
mint install zelentsov-dev/asc-mcp@v4.1.6 --force稳定版用户应安装版本标签。安装 main 或 develop 仅适用于维护者和预发布测试。
从源码构建
在兼容的 macOS 版本上使用 Xcode 26.x,或安装独立的 Swift 6.2+ 工具链。
git clone https://github.com/zelentsov-dev/asc-mcp.git
cd asc-mcp
swift build -c release可执行文件为 .build/release/asc-mcp。如果您将其复制到其他位置,请同时复制相邻的资源包:
cp .build/release/asc-mcp /usr/local/bin/asc-mcp
cp -R .build/release/asc-mcp_asc-mcp.bundle /usr/local/bin/该资源包包含发布检查所使用的版本化 OpenAPI 操作契约。
从旧版本升级
版本 4.1 保留了所有现有的工具名称、必需输入、投影键和数组形状。Xcode Cloud 读取工具现在拒绝未记录的参数,并更严格地验证返回的链接、分页、关系谱系和包含的资源。新的 *Present 投影字段区分 Apple 省略的数组与存在的空数组,而旧版数组字段仍保持为数组。新公开的嵌套 *_limit 输入必须与其匹配的 include 值配对使用,续传调用必须原样重复原始请求范围。新的产品和工作流删除工具默认提供安全预览,并要求在永久删除前提供最新的预览回执和精确的库存确认。
版本 4 保留了所有现有的工具名称和工作器过滤器,但破坏性的营销和评论附件调用现在要求在任何 Apple 请求之前提供精确的确认 ID:
现有工具 | 新增必需确认 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
当提供 state 时,ppo_update_experiment 也需要 confirm_experiment_id。仅更新名称或流量比例的调用保持不变。在 unknown 或 committed_unverified 变更结果之后,请先使用返回的检查操作,然后再重试。
从现有的营销和评论附件调用中移除未记录的顶层参数。版本 4 在任何网络请求之前拒绝未知键,而不是静默忽略它们。
配置
凭据
快速开始中显示的默认 ~/.config/asc-mcp/companies.json 文件是推荐方案,因为它对终端和 GUI 客户端都一致有效,无需在每个客户端配置中重复密钥。
对于多个公司,添加更多条目:
{
"companies": [
{
"id": "my-company",
"name": "My Company",
"key_id": "XXXXXXXXXX",
"issuer_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"key_path": "/Users/you/.keys/AuthKey_XXXXXXXXXX.p8",
"vendor_number": "YOUR_VENDOR_NUMBER"
},
{
"id": "client-company",
"name": "Client Company",
"key_id": "YYYYYYYYYY",
"issuer_id": "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy",
"key_path": "/Users/you/.keys/AuthKey_YYYYYYYYYY.p8"
}
]
}vendor_number 仅对 analytics_sales_report、analytics_financial_report 和 analytics_app_summary 是必需的。可在 App Store Connect → 销售和趋势 → 报告 中找到。
环境变量对自动化很有用,但从 Finder 启动的 GUI 应用可能不会继承您的 shell 环境。上述基于文件的设置对大多数用户更简单。
单一公司:
export ASC_KEY_ID=XXXXXXXXXX
export ASC_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export ASC_PRIVATE_KEY_PATH=/Users/you/.keys/AuthKey_XXXXXXXXXX.p8
export ASC_COMPANY_NAME="My Company" # optional
export ASC_VENDOR_NUMBER=YOUR_VENDOR_NUMBER # optional, analytics only多家公司:
export ASC_COMPANY_1_NAME="My Company"
export ASC_COMPANY_1_KEY_ID=XXXXXXXXXX
export ASC_COMPANY_1_ISSUER_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
export ASC_COMPANY_1_KEY_PATH=/Users/you/.keys/AuthKey_XXXXXXXXXX.p8
export ASC_COMPANY_2_NAME="Client Company"
export ASC_COMPANY_2_KEY_ID=YYYYYYYYYY
export ASC_COMPANY_2_ISSUER_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
export ASC_COMPANY_2_KEY_PATH=/Users/you/.keys/AuthKey_YYYYYYYYYY.p8编号从 1 开始。每个连续的条目必须同时提供 ASC_COMPANY_{N}_KEY_ID 和 ASC_COMPANY_{N}_ISSUER_ID;扫描在第一个缺失的配对处停止。
服务器按以下顺序解析凭据:
--companies /absolute/path/to/companies.json用于编程式嵌入的构造函数参数
ASC_MCP_COMPANIES=/absolute/path/to/companies.json默认配置文件位置,包括
~/.config/asc-mcp/companies.jsonASC_COMPANY_1_KEY_ID和其他编号的多公司变量ASC_KEY_ID、ASC_ISSUER_ID以及用于单一公司的私钥变量
MCP 客户端设置
以下所有示例均假设使用 Mint 安装和推荐的 companies.json 凭据文件。将 /Users/you 替换为您的实际主目录路径。GUI 客户端通常需要绝对可执行文件路径。
客户端 | 配置范围 | 备注 |
Codex | 通过 CLI 的用户配置;可选的受信任项目配置 | 同一台 Mac 上的本地 Codex 客户端共享 |
Claude Code |
| 对于个人 App Store 工具, |
Claude Desktop | 用户级桌面配置 | 编辑后重启 |
Gemini CLI | 用户设置 | 本地 |
VS Code with GitHub Copilot | 用户配置文件或 | 首次启动时确认服务器信任 |
Continue | 工作区 | 与 VS Code 原生 MCP 配置分开 |
Cursor | 用户或项目 | 使用绝对命令路径 |
Devin Desktop(原名 Windsurf) | 用户 MCP 配置 | 保持不超过 100 个活动工具 |
推荐的 CLI 注册:
codex mcp add asc-mcp -- ~/.mint/bin/asc-mcp
codex mcp list
codex mcp get asc-mcp --json同一台 Mac 上的 Codex 客户端共享相同的本地 MCP 配置。用户配置位于 $CODEX_HOME/config.toml,默认为 ~/.codex/config.toml:
[mcp_servers.asc-mcp]
command = "/Users/you/.mint/bin/asc-mcp"
startup_timeout_sec = 20
tool_timeout_sec = 60
enabled = true对于特定项目的设置,请将相同的表放在 .codex/config.toml 中;Codex 仅在项目受信任后才加载项目配置。如果你使用 shell 凭据而不是 companies.json,请显式转发它们:
env_vars = ["ASC_KEY_ID", "ASC_ISSUER_ID", "ASC_PRIVATE_KEY_PATH"]更改配置后重启 GUI 客户端,然后使用其 MCP 视图或 /mcp 确认 asc-mcp 已激活。请参阅官方 Codex MCP 文档。
为所有本地项目注册一次:
claude mcp add \
--transport stdio \
--scope user \
asc-mcp \
-- ~/.mint/bin/asc-mcp
claude mcp get asc-mcp
claude mcp list仅对当前项目使用 --scope local,或使用 --scope project 创建共享的 .mcp.json。项目服务器需要信任批准。切勿将原始 App Store Connect 凭据放入已提交的 .mcp.json 中。
Claude 将 user 和 local MCP 条目存储在 ~/.claude.json 中;.claude/settings.json 不是全局 MCP 注册表。在 Claude Code 中使用 /mcp 检查或重新连接服务器。请参阅官方 Claude Code MCP 文档。
将服务器添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}保存文件后退出并重新打开 Claude Desktop。
将服务器添加到 ~/.gemini/settings.json:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}有意保留 Gemini MCP 的默认超时时间。请参阅官方 Gemini CLI MCP 文档。
从命令面板运行 MCP: Add Server,并为个人设置选择用户配置文件。对于工作区设置,创建 .vscode/mcp.json:
{
"servers": {
"asc-mcp": {
"type": "stdio",
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}当 VS Code 首次启动本地服务器时,确认你信任该服务器。不要在共享工作区文件中提交特定于用户的路径或机密。请参阅官方 VS Code MCP 文档。
Continue 不使用 .vscode/mcp.json。在工作区中创建 .continue/mcpServers/asc-mcp.json:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}MCP 工具在 Continue 代理模式下可用。请参阅官方 Continue MCP 文档。
对所有项目使用 ~/.cursor/mcp.json,或对单个项目使用 .cursor/mcp.json:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp"
}
}
}编辑文件后,从 Cursor 设置中重启或刷新 MCP 服务器。请参阅官方 Cursor MCP 文档。
将服务器添加到 ~/.codeium/windsurf/mcp_config.json。此示例启用了 72 个工具的发布子集,低于 Cascade 的 100 个工具限制:
{
"mcpServers": {
"asc-mcp": {
"command": "/Users/you/.mint/bin/asc-mcp",
"args": [
"--workers",
"apps,builds,export_compliance,versions,reviews"
]
}
}
}你也可以在客户端中禁用单个工具。建议使用服务器端 worker 过滤,因为它能保持活动目录可预测。请参阅官方 Devin Desktop MCP 文档。
[!IMPORTANT]
command必须指向真实的可执行文件。GUI 客户端通常不会继承 shell 别名、PATH 更改或环境变量。请使用绝对路径,并优先使用默认的companies.json凭据文件。
Worker 过滤
服务器在 33 个 App Store 工具域 + 2 个核心域中公开 502 个工具。某些 MCP 客户端有工具数量限制;Devin Desktop 中的 Cascade 目前允许 100 个活动工具。使用 35 个 --workers 过滤键仅启用你需要的 worker:
# Only load apps, builds, and version lifecycle tools
asc-mcp --workers apps,builds,versions
# App Store release preparation subset (99 tools, including always-on and build sub-workers)
asc-mcp --workers apps,accessibility,builds,export_compliance,versions,app_info,screenshots
# TestFlight review helpers can be loaded separately (49 tools)
asc-mcp --workers apps,builds,beta_app,pre_release
# Monetization focus
asc-mcp --workers apps,iap,subscriptions,pricing,promoted,review_submissions无论过滤条件如何,company 和 auth worker 始终启用(它们提供核心的多账户和身份验证功能)。
启用 builds 时,它会自动包含 build_processing 和 build_beta 子 worker。
只读模式
当你希望在不修改 App Store Connect 的情况下进行安全检查时,请使用 --read-only:
asc-mcp --read-only
asc-mcp --read-only --workers apps,builds,reviews,analytics在此模式下,读取工具(如 *_list、*_get、*_search、*_status、*_verify、*_parse、*_triage、auth_*、分析和指标)仍然可用。可以创建、更新、上传、提交、发布、删除、撤销、清除、取消或以其他方式修改 App Store Connect 的工具会在其 worker 处理程序运行之前被阻止。company_switch 仍然可用,因为它只更改本地活动公司上下文。
OpenAPI 契约与漂移工具
使用 operation-contract 命令将实际的免凭据 WorkerManager 目录与语义清单及固定的 Apple App Store Connect OpenAPI 规范进行比较。生产清单记录精确的 Apple operationId、HTTP 方法、路径、调用范围内的输入绑定、类型化固定值、响应谱系、本地工作流、实现状态、已弃用的别名以及有意推迟的操作。该命令不会加载 App Store Connect 凭据或启动 MCP 服务器。
rm -rf /tmp/asc-openapi
mkdir -p /tmp/asc-openapi
curl -L --fail -o /tmp/asc-openapi/spec.zip \
https://developer.apple.com/sample-code/app-store-connect/app-store-connect-openapi-specification.zip
spec_entry="$(unzip -Z1 /tmp/asc-openapi/spec.zip | grep -E '(^|/)openapi\.oas[^/]*\.json$')"
test "$(echo "$spec_entry" | grep -c .)" -eq 1
unzip -p /tmp/asc-openapi/spec.zip "$spec_entry" > /tmp/asc-openapi/openapi.oas.json
swift run asc-mcp openapi-contract-check \
--spec /tmp/asc-openapi/openapi.oas.json \
--json-output /tmp/asc-openapi/operation-contract.json \
--markdown-output /tmp/asc-openapi/operation-contract.md \
--strict清单通过版本、SHA-256、路径数和操作数固定到 Apple API 4.4.1。它当前映射 476 个 Apple 操作,显式推迟 424 个,并将 363 个排除在范围之外,覆盖全部 1,263 个操作且无重叠。当 Apple 文档更改、映射的操作移动或消失、公共工具或 worker 偏离清单、输入字段失去绑定、响应谱系变得无效或推迟的决策过期时,CI 会失败。未公开的可选 Apple 参数会作为警告,以便它们保留在生成的待办事项中。
Manifest schema v2 还将每个可选的 Apple 查询和请求体输入归类为公开绑定、内部受控、经审查原因后有意省略或仍未分类。已检入的 optionalInputCoveragePin 记录确切的当前总数以及排序后的输入标识和处置的 SHA-256 摘要;--strict 会拒绝缺失的 pin 或任何计数级或标识级的漂移。该 pin 使分阶段修复可审计且防回归,但并不意味着每个可选的 Apple 输入都已经是公开的。v4.1.3 pin 总计 2,905 个:1,122 个已绑定,40 个内部受控,1,743 个有意省略,0 个未分类。其标识 SHA-256 为 c975f4e4eebb62ec87864a73fbf72bb8841f644108e54e6ffb25168bcf2a2766。
--strict 是合并和打标签时的发布门禁。每个声明的 target 或 broken 工具在报告中仍然是错误,并且回归测试固定其确切状态。当前基线没有 target 或 broken 实现,也没有实现漂移,因此任何偏离 asBuilt 的实现、任何结构性契约错误或任何可选输入覆盖漂移都会阻止合并和发布。--structural-strict 仅保留用于本地分阶段修复工作。
该门禁证明操作标识、顶级 MCP 字段所有权、必需的 Apple 输入、类型化内部值以及响应来源/指针谱系。完整的 MCP 类型/枚举/范围一致性和完整的类型化响应模式仍是单独的优化阶段;当前映射状态为 469 个部分和 33 个已弃用。
较旧的 openapi-coverage 命令仍可用于 ASC-OPENAPI-COVERAGE-GENERATED.md 中的高级域报告。操作契约是权威的发布门禁。
可用的 worker 名称:
Worker | Prefix | Tools | 描述 |
|
| 3 | 多账户管理 |
|
| 4 | JWT 令牌工具 |
|
| 10 | 应用列表、元数据、本地化、搜索关键词 ID |
|
| 6 | App Store 辅助功能声明 |
|
| 11 | Webhook 通知、投递诊断和接收器辅助工具 |
|
| 42 | Xcode Cloud 产品、工作流管理、构建运行、构件、问题、测试结果和 SCM |
|
| 4 | 构建管理 |
|
| 10 | 构建上传父项、文件、安全传输和恢复 |
|
| 4 | 构建状态、加密 |
|
| 11 | 加密声明、文档上传、构建关联、就绪状态 |
|
| 11 | TestFlight 本地化、通知 |
|
| 17 | 版本生命周期、年龄分级、提交、发布 |
|
| 8 | 客户评论与回复 |
|
| 15 | TestFlight 群组和公开链接招募条件 |
|
| 8 | TestFlight 反馈截图、崩溃提交、崩溃日志 |
|
| 12 | 测试员管理 |
|
| 59 | 应用内购买、版本化元数据、定价、可用性、优惠代码、审核资源 |
|
| 99 | 订阅和群组版本、定价、方案可用性、优惠、资源 |
|
| 3 | 沙盒测试员 |
|
| 10 | Beta 应用本地化和审核 |
|
| 3 | 预发布版本 |
|
| 3 | Beta 许可协议 |
|
| 17 | Bundle ID、设备、证书 |
|
| 10 | 应用信息、类别、EULA |
|
| 9 | 地区、定价 |
|
| 10 | 团队成员、角色 |
|
| 9 | 应用内活动、本地化 |
|
| 11 | 销售/财务报告、分析 |
|
| 19 | 截图、预览、集合和已验证排序 |
|
| 17 | 自定义产品页面、版本、本地化和搜索关键词 |
|
| 15 | 产品页面优化实验、处理方案和本地化 |
|
| 10 | 推广的应用内购买和已验证排序 |
|
| 4 | App Store 审核附件 |
|
| 9 | 通用 App Store 审核提交和提交项 |
|
| 9 | 性能指标、诊断信息和 TestFlight 使用指标 |
工具目录大小
当 MCP 客户端急切加载每个工具定义时,近似 schema 占用空间为:
配置 | 工具 | ~Token 数 |
所有 worker(默认) | 502 | ~60,000 |
发布工作流: | ~72 | ~8,900 |
变现: | 184 | ~21,100 |
TestFlight: | ~63 | ~7,100 |
营销: | ~78 | ~8,800 |
| 17 | ~2,100 |
最重的 worker: Subscriptions(99 个工具)、InAppPurchases(59 个工具)、Xcode Cloud(42 个工具)、Screenshots(19 个工具)、Provisioning(17 个工具)。
确切成本取决于 MCP 主机的序列化、分词器和工具发现策略。现代客户端可能会延迟加载 schema,直到需要时才获取。当客户端强制限制工具数量,或者您希望获得更小、更聚焦的目录时,请使用 --workers。
可用工具
502 个工具,分布在 33 个 App Store 工具域 + 2 个核心域(使用 35 个 --workers 过滤键 — 请参阅 Worker 过滤):
工具 | 描述 |
| 列出所有已配置的公司 |
| 切换用于 API 操作的活动公司 |
| 获取当前活动公司信息 |
工具 | 描述 |
| 生成用于 API 访问的 JWT 令牌 |
| 在本地验证标准团队密钥 JWT:ES256 签名、已配置的 |
| 强制刷新 JWT 令牌 |
| 获取 JWT 令牌缓存状态 |
工具 | 描述 |
| 列出所有应用并支持筛选 |
| 获取应用的详细信息 |
| 按名称或 Bundle ID 搜索应用 |
| 列出所有版本及其状态 |
| 获取版本的本地化元数据 |
| 列出用于自定义页面定向的 App Store 规范搜索关键词 ID |
| 更新元数据(新内容、描述等) |
| 列出本地化及其内容状态 |
| 为版本创建新的本地化 |
| 从版本中删除本地化 |
工具 | 描述 |
| 列出应用的辅助功能声明 |
| 获取一条辅助功能声明 |
| 为设备系列创建声明 |
| 更新支持标志或发布声明 |
| 删除声明 |
| 列出应用的声明关系 ID |
工具 | 描述 |
| 列出应用的 webhook |
| 按 ID 获取 webhook |
| 创建 webhook 配置 |
| 更新 webhook 字段 |
| 删除 webhook |
| 列出投递尝试 |
| 重新投递现有的投递记录 |
| 发送测试 ping |
| 根据确切的原始负载正文验证 |
| 解析并规范化原始 webhook 通知负载 |
| 为 webhook 事件或投递失败生成可操作的分类处理计划 |
工具 | 描述 |
| 列出 Xcode Cloud 产品 |
| 获取 Xcode Cloud 产品 |
| 预览或永久删除 Xcode Cloud 产品(带确认保护) |
| 获取与应用关联的 Xcode Cloud 产品 |
| 获取与 Xcode Cloud 产品关联的应用 |
| 列出附加到产品的主仓库 |
| 列出附加到产品的其他仓库 |
| 列出产品的工作流程 |
| 列出产品的构建运行 |
| 获取工作流程 |
| 创建 Xcode Cloud 工作流程 |
| 更新 Xcode Cloud 工作流程 |
| 预览或永久删除工作流程(带确认保护) |
| 获取工作流程使用的仓库 |
| 列出工作流程的构建运行 |
| 获取构建运行 |
| 启动或重新构建 Xcode Cloud 构建 |
| 列出构建运行的操作 |
| 列出由构建运行创建的 App Store Connect 构建 |
| 获取构建操作 |
| 获取拥有构建操作的构建运行 |
| 列出操作的构建产物 |
| 列出操作的问题 |
| 列出操作的测试结果 |
| 获取构建产物 |
| 获取问题 |
| 获取测试结果 |
| 列出可用的 Xcode 版本 |
| 获取 Xcode 版本 |
| 列出与 Xcode 版本兼容的 macOS 版本 |
| 列出可用的 macOS 版本 |
| 获取 macOS 版本 |
| 列出与 macOS 版本兼容的 Xcode 版本 |
| 列出 SCM 提供商 |
| 获取 SCM 提供商 |
| 列出 SCM 提供商的仓库 |
| 列出 SCM 仓库 |
| 获取 SCM 仓库 |
| 列出仓库的 git 引用 |
| 列出仓库的拉取请求 |
| 获取 git 引用 |
| 获取拉取请求 |
工具 | 描述 |
| 列出 beta 崩溃反馈提交 |
| 获取一条 beta 崩溃反馈提交 |
| 读取提交的崩溃日志 |
| 按崩溃日志 ID 读取崩溃日志 |
| 删除 beta 崩溃反馈提交 |
| 列出 beta 截图反馈提交 |
| 获取一条 beta 截图反馈提交 |
| 删除 beta 截图反馈提交 |
工具 | 描述 |
| 列出构建及其处理状态 |
| 获取构建的详细信息 |
| 按版本号查找构建 |
| 获取特定应用版本的构建 |
Tool | Description |
| 列出应用的构建上传父对象,支持筛选、稀疏字段、包含关系和严格分页 |
| 获取单个构建上传,包含处理诊断信息和可选的包含资源 |
| 创建构建上传父对象,不重放不明确的 POST 请求 |
| 在精确确认 ID 后删除构建上传父对象 |
| 列出单个构建上传下的文件预留,使用严格分页 |
| 获取单个构建上传文件及其投递状态 |
| 预留一个精确文件,不重放不明确的 POST 请求 |
| 提交校验和或上传状态变更,分别保留省略和 null 值 |
| 从不可变的本地快照传输新的或现有的预留 |
| 执行父对象创建、预留、传输、提交和处理对账 |
复合上传从预留到恢复都保留相同的小写 MD5 指纹。显式恢复和恢复续传指令携带 expected_md5;下一次调用会在任何 Apple 请求或传输之前,用新的不可变快照对其进行验证。只有当 Apple 的 sourceFileChecksums.file MD5 与该快照匹配时,才会接受已标记为 UPLOAD_COMPLETE 或 COMPLETE 的现有预留;缺失、不支持或不匹配的证据会保留以供检查,而不会再次传输、提交或删除。预签名操作仅在其方法为 PUT 时重试;重定向、POST 和未知方法不会重放。如果某个不明确的创建被唯一恢复,工作流会停止并返回其资源 ID 以进行显式续传。传输凭据保持脱敏,除非在直接读取时显式启用 include_sensitive_details。
Tool | Description |
| 获取当前处理状态 |
| 设置加密合规性 |
| 获取详细处理状态 |
| 检查构建是否可提交 |
Tool | Description |
| 列出应用的加密声明,使用严格分页 |
| 获取单个声明,不包含已弃用的文档 URL 字段 |
| 为应用创建加密声明问卷 |
| 从单个不可变本地快照预留、传输、提交并轮询文档 |
| 获取安全的投递元数据,不包含签名 URL、令牌或上传头 |
| 应用低层可空校验和或上传状态补丁 |
| 使用精确字节及其小写 MD5 回执恢复 AWAITING_UPLOAD 预留 |
| 检查文档存在性并分类其投递状态 |
| 获取当前附加到构建的声明 |
| 附加已批准的声明并验证关系 |
| 仅评估构建的出口合规发布门禁 |
Tool | Description |
| 获取构建的 TestFlight 配置 |
| 更新 TestFlight 设置 |
| 设置 TestFlight 的“新内容” |
| 列出所有 TestFlight 本地化 |
| 获取构建的 Beta 群组 |
| 获取构建的单个测试员 |
| 向 Beta 测试员发送通知 |
| 将构建添加到 Beta 群组 |
| 将单个测试员添加到构建 |
| 从构建中移除单个测试员 |
| 列出分配给构建的单个测试员 |
Tool | Description |
| 列出应用的 TestFlight Beta 群组 |
| 创建新的 Beta 群组 |
| 更新 Beta 群组设置 |
| 删除 Beta 群组 |
| 将测试员添加到 Beta 群组 |
| 从 Beta 群组移除测试员 |
| 列出 Beta 群组中的测试员 |
| 将构建添加到 Beta 群组 |
| 从 Beta 群组移除构建 |
| 获取附加到 Beta 群组的公开链接招募标准 |
| 创建设备家族和操作系统版本招募标准 |
| 替换或显式清除招募筛选条件 |
| 在精确确认标准 ID 后删除招募标准 |
| 列出 Apple 当前允许的设备家族和操作系统版本 |
| 检查群组是否具有与其标准兼容的构建 |
包含测试员的列表/搜索/获取/创建/删除、应用关系、邀请、Beta 群组分配、构建分配和应用移除工具。
Tool | Description |
| 创建新的 App 版本 |
| 列出版本并支持状态筛选 |
| 获取详细的版本信息 |
| 读取 App 信息年龄分级问卷 |
| 按地区列出计算出的年龄分级 |
| 更新版本属性 |
| 将构建附加到版本 |
| 提交以进行 App Store 审核 |
| 取消进行中的审核 |
| 发布已批准的版本 |
| 创建分阶段发布 |
| 获取分阶段发布信息和 ID |
| 暂停/恢复/完成发布 |
| 删除符合条件的计划分阶段发布,需精确确认 ID 并确保未知结果安全 |
| 设置审核联系信息 |
| 配置年龄分级声明 |
| 删除可编辑的 App 版本,需精确确认 ID 并确保未知结果安全 |
工具 | 描述 |
| 获取带筛选和分页的评论 |
| 获取特定评论详情 |
| 获取特定版本的评论 |
| 聚合评论统计 |
| 回复客户评论 |
| 删除回复 |
| 获取评论的回复 |
| 总结评论主题和评分 |
工具 | 描述 |
| 列出应用的应用内购买项目 |
| 获取 IAP 详情 |
| 创建新的 IAP |
| 更新 IAP 属性 |
| 删除 IAP |
| 列出 IAP 本地化 |
| 创建 IAP 本地化 |
| 更新 IAP 本地化 |
| 删除 IAP 本地化 |
| 提交 IAP 审核 |
| 列出订阅组 |
| 获取订阅组详情 |
| 面向 AI 的应用 IAP 清单 |
| 列出按地区划分的价格点 |
| 列出价格点均衡 |
| 获取价格计划 |
| 设置价格计划 |
| 总结当前和计划中的价格 |
| 查找优惠的价格点候选 |
| 设置地区可用性 |
| 按 IAP 或可用性 ID 获取可用性 |
| 列出可用地区 |
| 获取推广购买状态 |
| 列出 IAP 优惠代码 |
| 获取 IAP 优惠代码 |
| 创建 IAP 优惠代码 |
| 更新 IAP 优惠代码 |
| 停用 IAP 优惠代码 |
| 列出按地区划分的优惠价格 |
| 生成一次性优惠代码 |
| 列出一次性代码批次 |
| 获取一次性代码批次 |
| 更新一次性代码批次 |
| 停用一次性代码批次 |
| 获取生成的一次性代码值 |
| 创建自定义优惠代码 |
| 获取自定义代码详情 |
| 更新自定义代码 |
| 停用自定义代码 |
| 获取审核截图 |
| 上传审核截图 |
| 删除审核截图 |
| 上传推广图片 |
| 获取推广图片 |
| 删除推广图片 |
| 列出推广图片 |
| 创建可审核的 IAP 元数据版本 |
| 获取 IAP 版本及其审核状态 |
| 列出 IAP 的可审核版本 |
| 列出 IAP 版本拥有的本地化 |
| 为 IAP 版本创建本地化 |
| 获取 IAP 版本本地化 |
| 更新 IAP 版本本地化上的可空文本 |
| 删除 IAP 版本本地化 |
| 获取与 IAP 版本相关的单一图片 |
| 列出 IAP 版本拥有的所有图片资源,支持严格续传 |
| 上传、提交并协调不可变的 IAP 版本图片 |
| 获取版本范围的 IAP 图片资源 |
| 删除版本范围的 IAP 图片 |
旧版产品范围的本地化、提交和图片工具仍可调用以保持兼容性。Apple 4.4.1 弃用了 iap_list_localizations、iap_create_localization、iap_update_localization、iap_delete_localization、iap_submit_for_review、iap_upload_image、iap_get_image、iap_delete_image 和 iap_list_images;成功响应会标识对应的版本化替代工具。对于本地化创建、推广图片上传和审核提交,请先使用 iap_list_versions,仅在需要新元数据版本时调用 iap_create_version,并将该版本 ID 传递给下游的版本化工具。这些兼容性调用绝不会自动创建或选择版本。
如果 Apple 可能已接受版本或版本本地化的创建请求,但响应丢失或无法解码,工具将返回 write_outcome: not_confirmed 和 retrySafe: false,并附带请求的身份信息以及 list/get 检查步骤。重试前请先检查,以避免重复的元数据资源。
包括订阅和组的元数据版本、版本拥有的本地化和图片、按计划类型划分的可用性、按地区划分的价格、价格点和调整后的均衡、推广购买读取、清单/定价辅助工具、介绍性优惠、促销优惠、优惠代码、一次性/自定义代码、赢回优惠和审核截图。所有以前的公开 offer_codes_*、intro_offers_*、promo_offers_* 和 winback_* 功能均通过 subscriptions_* 提供。
Apple 4.4.1 还弃用了旧版产品或组范围的本地化、图片和提交工具。它们仍可调用以保持兼容性,成功时返回明确的替代指引,并且绝不会自动创建或选择元数据版本。新的集成应使用 subscriptions_create_version 或 subscriptions_create_group_version、相应的版本本地化/图片工具,以及通用的 review_submissions_* 工作流。
订阅版本、组版本、本地化和计划可用性的创建使用相同的非幂等恢复契约:模糊的 Apple 写入返回 write_outcome: not_confirmed、retrySafe: false、请求的指纹,以及确定性的 collection/get 检查指引。
以下名称仍可用于兼容性,但 Apple 4.4.1 弃用了其旧版 subscriptionAvailability 资源,转而使用按计划类型划分的 subscriptionPlanAvailabilities:
工具 | 兼容性状态 |
| 已弃用的旧版可用性读取 |
| 已弃用的旧版可用性写入 |
| 已弃用的旧版地区列表 |
| 已弃用的辅助工具;可省略首个包含的关系页面之外的订阅,并非权威的完整清单 |
工具 | 描述 |
| 列出沙盒测试员 |
| 更新沙盒测试员设置 |
| 清除沙盒测试员的购买历史 |
工具 | 描述 |
| 列出 Beta 应用本地化 |
| 创建 Beta 应用本地化 |
| 获取 Beta 应用本地化 |
| 更新 Beta 应用本地化 |
| 删除 Beta 应用本地化 |
| 提交构建以进行 Beta 审核 |
| 列出 Beta 审核提交 |
| 获取 Beta 审核提交 |
| 获取 Beta 应用审核详情 |
| 更新 Beta 应用审核详情 |
包含预发布版本的列表、详情及相关构建。
包含 Beta 许可协议的列表、获取和更新。
工具 | 描述 |
| 列出已注册的 Bundle ID |
| 获取 Bundle ID 详情 |
| 注册新的 Bundle ID |
| 删除 Bundle ID |
| 列出已注册的设备 |
| 注册新设备 (UDID) |
| 更新设备名称或状态 |
| 列出签名证书 |
| 获取证书详情 |
| 撤销证书 |
| 列出描述文件 |
| 获取描述文件详情 |
| 删除描述文件 |
| 创建描述文件 |
| 列出 Bundle ID 功能 |
| 启用某项功能 |
| 禁用某项功能 |
包含 App 信息的列表/获取/更新、App 信息本地化,以及 EULA 的获取/创建/更新工具。
包含地区、可用性、价格点、价格计划,以及 App Store availability v2 工具。
包含团队成员列表/获取/更新/移除、邀请、可见 App,以及可见 App 关系更新。
包含 App 内事件的增删改查,以及事件本地化的列表/创建/更新/删除。
包含销售、财务、App 摘要、分析报告请求、报告、实例、快照和细分工具。
工具 | 描述 |
| 列出截图集 |
| 按 ID 获取截图集 |
| 创建截图集 |
| 删除截图集 |
| 列出截图集中的截图 |
| 上传截图 |
| 获取截图详情 |
| 删除截图 |
| 重新排序截图集中的截图 |
| 列出 App 预览集 |
| 按 ID 获取 App 预览集 |
| 创建预览集 |
| 删除预览集 |
| 上传 App 预览 |
| 获取预览详情 |
| 列出预览集中的预览 |
| 重新排序集中的每个预览,并包含成员资格和事后验证 |
| 批量上传截图 |
| 删除预览 |
工具 | 描述 |
| 列出自定义产品页面 |
| 获取页面详情 |
| 创建自定义页面 |
| 更新自定义页面 |
| 删除自定义页面 |
| 列出页面版本 |
| 按 ID 获取页面版本 |
| 创建页面版本 |
| 更新页面版本 |
| 列出版本本地化 |
| 按 ID 获取本地化 |
| 创建本地化 |
| 更新本地化 |
| 在精确确认后删除本地化 |
| 列出分配给本地化的搜索关键词 ID |
| 添加搜索关键词关系 |
| 在精确确认后移除搜索关键词关系 |
工具 | 描述 |
| 列出 A/B 测试实验 |
| 列出某个 App Store 版本的 V2 实验 |
| 获取实验详情 |
| 创建实验 |
| 更新/开始/停止实验 |
| 删除实验 |
| 列出实验变体 |
| 按 ID 获取变体 |
| 创建变体 |
| 更新变体 |
| 在精确确认后删除变体 |
| 列出变体本地化 |
| 按 ID 获取变体本地化 |
| 创建变体本地化 |
| 在精确确认后删除变体本地化 |
工具 | 描述 |
| 列出应用的推广购买项 |
| 获取推广详情 |
| 创建推广 |
| 更新推广的可见性或启用状态 |
| 删除推广 |
| 替换并验证应用的完整推广购买项顺序 |
| 已弃用:返回迁移指南;该端点不在固定的 Apple OpenAPI 4.4.1 中 |
| 已弃用:返回迁移指南;该端点不在固定的 Apple OpenAPI 4.4.1 中 |
| 已弃用:返回迁移指南;该端点不在固定的 Apple OpenAPI 4.4.1 中 |
| 已弃用:返回迁移指南;该关系不在固定的 Apple OpenAPI 4.4.1 中 |
包括 App Store 审核附件的上传、获取、删除和列表工具。
工具 | 描述 |
| 列出应用的通用审核提交 |
| 获取单个通用审核提交 |
| 为应用和平台创建通用审核提交 |
| 列出附加到审核提交的项目 |
| 将可审核资源版本附加到提交 |
| 更新已提交项目上可空的 |
| 从提交中移除项目 |
| 提交所有附加项目以供审核 |
| 取消已提交的通用审核提交 |
review_submissions_add_item 仅在 Apple 的响应确认有效的项目 ID 以及完全匹配的请求关系名称、JSON:API 类型和资源 ID 时报告成功。任何不匹配都会作为未确认的写入返回,并附带提交和项目列表恢复步骤。
工具 | 描述 |
| 获取应用性能/功耗指标 |
| 获取构建性能指标 |
| 列出构建的诊断信息 |
| 获取诊断日志 |
| 按 Beta 测试员获取应用的 TestFlight 崩溃、会话和反馈指标 |
| 按 Beta 测试员获取 Beta 组的 TestFlight 崩溃、会话和反馈指标 |
| 获取公开链接的浏览量、接受结果、标准失败和调查比例 |
| 获取单个测试员在应用内的 TestFlight 使用指标 |
| 获取构建的 TestFlight 崩溃、安装、会话、反馈和邀请指标 |
使用示例
完整发布工作流
You: "Release version 2.2.0 of my app with build 456"
Claude will:
1. app_versions_create(app_id, platform: "IOS", version_string: "2.2.0")
2. app_versions_attach_build(version_id, build_id)
3. app_versions_set_review_details(version_id, contact_email: "...")
4. app_versions_submit_for_review(version_id)
5. app_versions_create_phased_release(version_id) # after approvalTestFlight 分发
You: "Create a beta group 'External Testers' and distribute the latest build"
Claude will:
1. beta_groups_create(app_id, name: "External Testers")
2. builds_list(app_id, limit: 1) # find latest
3. builds_set_beta_localization(build_id, locale: "en-US", whats_new: "...")
4. beta_groups_add_testers(group_id, tester_ids: [...])审核管理
You: "Show me all 1-star reviews from the last week and draft responses"
Claude will:
1. reviews_list(app_id, rating: 1, sort: "-createdDate", limit: 50)
2. reviews_create_response(review_id, response_body: "...") # for each多公司工作流
You: "Switch to ClientCorp and check their latest build status"
Claude will:
1. company_switch(company: "ClientCorp")
2. apps_list(limit: 5)
3. builds_list(app_id, limit: 1)
4. builds_get_processing_state(build_id)API 约束
约束 | 详情 |
无表情符号 | 元数据字段(新内容、描述、关键词)不得包含表情符号字符 |
版本状态 | App Store Connect 会验证元数据更新的可编辑状态。被拒绝和元数据被拒绝的版本可以编辑以重新提交;已发布或审核中的版本可能会被 Apple 拒绝。 |
JWT 过期 | 令牌在 20 分钟后过期 — 服务器会自动刷新它们 |
速率限制 | Apple 强制执行按账户的速率限制(文档) |
区域格式 | 使用标准代码: |
架构
Sources/asc-mcp/
├── EntryPoint.swift # Entry point, --workers filtering
├── Core/
│ ├── Application.swift # MCP server setup & initialization
│ └── ASCError.swift # Custom error types
├── Helpers/ # JSON formatting, pagination, safe helpers
├── Models/ # API request/response models
│ ├── AppStoreConnect/ # Apps, versions, localizations
│ ├── Builds/ # Builds, beta details, beta groups
│ ├── AppLifecycle/ # Version lifecycle models
│ ├── InAppPurchases/ # IAP models
│ ├── Subscriptions/ # Subscriptions, offer codes, win-back
│ ├── Marketing/ # Screenshots, custom pages, PPO, promoted
│ ├── Metrics/ # Performance metrics, diagnostics
│ ├── Analytics/ # Sales/financial reports
│ ├── Provisioning/ # Bundle IDs, devices, certificates
│ ├── Shared/ # Shared upload/image types
│ └── ... # AppEvents, AppInfo, Pricing, Users
├── Services/
│ ├── HTTPClient.swift # Actor-based HTTP with retry logic
│ ├── JWTService.swift # ES256 JWT token generation
│ └── CompaniesManager.swift # Multi-account management
└── Workers/ # MCP tool implementations (39 Swift worker classes + MainWorker router)
├── MainWorker/WorkerManager # Central tool registry & routing
├── CompaniesWorker/ # company_* tools
├── AuthWorker/ # auth_* tools
├── AppsWorker/ # apps_* tools
├── AccessibilityWorker/ # accessibility_* tools
├── WebhooksWorker/ # webhooks_* tools
├── XcodeCloudWorker/ # xcode_cloud_* tools
├── BuildsWorker/ # builds_* tools
├── BuildUploadsWorker/ # build_uploads_* tools
├── BuildProcessingWorker/ # builds_*_processing tools
├── ExportComplianceWorker/ # export_compliance_* tools
├── BuildBetaDetailsWorker/ # builds_*_beta_* tools
├── AppLifecycleWorker/ # app_versions_* tools
├── ReviewsWorker/ # reviews_* tools
├── BetaGroupsWorker/ # beta_groups_* tools
├── BetaFeedbackWorker/ # beta_feedback_* tools
├── BetaTestersWorker/ # beta_testers_* tools
├── InAppPurchasesWorker/ # iap_* tools
├── SubscriptionsWorker/ # subscriptions_* tools
├── OfferCodesWorker/ # subscriptions offer-code tools
├── IntroductoryOffersWorker/ # subscriptions intro-offer tools
├── PromotionalOffersWorker/ # subscriptions promotional-offer tools
├── WinBackOffersWorker/ # subscriptions win-back tools
├── SandboxTestersWorker/ # sandbox_* tools
├── BetaAppWorker/ # beta_app_* tools
├── PreReleaseVersionsWorker/ # pre_release_* tools
├── BetaLicenseAgreementsWorker/ # beta_license_* tools
├── ProvisioningWorker/ # provisioning_* tools
├── AppInfoWorker/ # app_info_* tools
├── PricingWorker/ # pricing_* tools
├── UsersWorker/ # users_* tools
├── AppEventsWorker/ # app_events_* tools
├── AnalyticsWorker/ # analytics_* tools
├── ScreenshotsWorker/ # screenshots_* tools
├── CustomProductPagesWorker/ # custom_pages_* tools
├── ProductPageOptimizationWorker/ # ppo_* tools
├── PromotedPurchasesWorker/ # promoted_* tools
├── ReviewAttachmentsWorker/ # review_attachments_* tools
├── ReviewSubmissionsWorker/ # review_submissions_* tools
└── MetricsWorker/ # metrics_* tools设计原则
Swift 6 严格并发 — 所有 worker 和服务都是
Sendable,具有正确的 actor 隔离基于 Actor 的 HTTP 客户端 — 线程安全,具有指数退避和重试逻辑
基于前缀的路由 —
WorkerManager按名称前缀路由工具调用(零配置)最小依赖 — 仅使用 MCP Swift SDK
故障排除
运行
~/.mint/bin/asc-mcp --version以独立于 MCP 客户端验证安装。验证 MCP 客户端使用已安装可执行文件的绝对路径。
对于 Codex,运行
codex mcp list和codex mcp get asc-mcp --json。对于 Claude Code,运行
claude mcp get asc-mcp和claude mcp list。检查配置的
companies.json文件或所选设置使用的环境变量。确保每个
.p8密钥路径都是绝对的且文件存在。更改 MCP 配置后重启 GUI 客户端,然后检查客户端的 MCP 输出日志。
验证您的密钥 ID 和签发者 ID 与 App Store Connect 中显示的一致
确保
.p8文件是原始下载(未被修改)检查 API 密钥是否已被撤销
JWT 令牌会自动刷新,但如果密钥无效,所有请求都将失败
apps_update_metadata 在本地文本、区域和 URL 验证后将元数据 PATCH 发送到 App Store Connect。Apple 决定当前版本状态是否可编辑。被拒绝和元数据被拒绝的版本可以编辑并重新提交;已发布、审核中或其他锁定版本可能会返回 Apple API 错误。
使用 builds_get_processing_status 检查当前处理状态,使用 builds_check_readiness 验证 App Store/TestFlight 就绪状态。Apple 的构建处理通常需要 5-30 分钟,但在高峰时段可能更长。
HTTP 客户端会在收到 429 响应时自动以指数退避重试。如果您持续达到限制,请降低 API 调用频率或使用较小的分页大小进行分页。
获取帮助
在提交报告之前,请搜索现有问题。如果问题是新出现的,请打开一个问题并包含:
macOS 版本和安装方法;
MCP 客户端名称和版本;
所选的
--workers值(如有);确切的错误消息和最小可复现请求。
在发布日志之前,请从日志中移除密钥 ID、签发者 ID、私钥、签名 URL、令牌和账户数据。请按照 SECURITY.md 私下报告安全漏洞。有关代码贡献,请参阅 CONTRIBUTING.md。
开发
构建
swift build # Debug build
swift build -c release # Release build (optimized)
swift package clean # Clean build artifacts测试模式
.build/debug/asc-mcp --test # Runs built-in integration tests添加新工具
在相应的
Worker+Handlers.swift中创建处理程序方法在
Worker+ToolDefinitions.swift中添加工具定义在 worker 的
getTools()方法中注册在 worker 的
handleTool()switch 中添加路由 caseWorkerManager按前缀自动路由 — 无需更改
添加新 Worker
创建目录:
Workers/MyWorker/创建 3 个文件:
MyWorker.swift、MyWorker+ToolDefinitions.swift、MyWorker+Handlers.swift在
WorkerManager.swift中添加 worker 属性和初始化在
WorkerManager.registerWorkers()中添加路由规则添加
getMyTools()辅助方法
贡献
我们欢迎贡献!有关详细信息,请参阅贡献指南。
许可证
本项目根据 MIT 许可证授权。有关详细信息,请参阅 LICENSE 文件。
致谢
Model Context Protocol — 协议规范及 Swift SDK
App Store Connect API — Apple 的官方 REST API
这是一个非官方的社区维护工具,与 Apple Inc. 无关联,也未获得其认可。
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
- app-managerOAuthapp.lance
App Store Connect operator for AI agents: icons, TestFlight builds, listings, IAP, rejection fixes.
MCP server for Appcircle mobile CI/CD platform.
Related MCP Servers
- AlicenseAqualityBmaintenanceA Model Context Protocol (MCP) server for Apple's App Store Connect API. Manage your iOS, macOS, tvOS, and visionOS apps directly from Claude, Cursor, or any MCP-compatible client.52899 npm22MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server that connects Cursor, Claude Desktop, and other MCP clients to the official App Store Connect API—so you can manage iOS/macOS apps, TestFlight, in-app subscriptions, and store metadata via chat or automated tool calls.6951 npm13MIT
- AlicenseAqualityAmaintenanceAn opinionated MCP server for App Store Connect that provides 13 curated tools, slash-command workflows, and a Claude Skill to manage apps, reviews, sales, and pre-submission audits via natural language.41263 npm1MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that exposes the entire Apple App Store Connect API (1,200+ operations) as MCP tools, enabling AI assistants to query apps, manage builds, handle submissions, read analytics, and more.6 npmMIT