mcpField
A
app-store-connect-mcp

app-store-connect-mcp

本地服务
github.com/chrischall开发工具12 天前更新

关于 app-store-connect-mcp

app-store-connect-mcp 将 Claude 连接到 App Store Connect,可处理应用、TestFlight、评论、销售与财务报告及团队用户操作。写入操作设有确认步骤,并需要 App Store Connect API 密钥。

主要功能

  1. 01浏览应用与版本
  2. 02管理构建版本和 TestFlight 测试者
  3. 03查看并回复评论
  4. 04下载销售与财务报告
  5. 05查看和邀请团队用户
  6. 06确认写入操作

适用场景

  1. 01查看近期应用构建版本
  2. 02邀请或管理 Beta 测试者
  3. 03查看评分并回复用户
  4. 04获取销售或财务报告

MCP 相关

将 App Store Connect 操作作为 MCP 工具提供给 Claude。发送写入操作前需要确认。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"chrischall-app-store-connect": {
"command": "npx",
"args": [
"-y",
"@chrischall/app-store-connect-mcp"
],
"env": {
"APP_STORE_CONNECT_KEY_ID": "<APP_STORE_CONNECT_KEY_ID>",
"APP_STORE_CONNECT_ISSUER_ID": "<APP_STORE_CONNECT_ISSUER_ID>",
"APP_STORE_CONNECT_PRIVATE_KEY_PATH": "<APP_STORE_CONNECT_PRIVATE_KEY_PATH>",
"APP_STORE_CONNECT_PRIVATE_KEY": "<APP_STORE_CONNECT_PRIVATE_KEY>"
}
}
}
}
启动命令npx -y @chrischall/app-store-connect-mcp
需要配置的环境变量
APP_STORE_CONNECT_KEY_ID密钥10-character App Store Connect API Key ID (e.g. ABC1234567).
APP_STORE_CONNECT_ISSUER_IDTeam Issuer ID (UUID) from App Store Connect → Users and Access → Integrations.
APP_STORE_CONNECT_PRIVATE_KEY_PATH密钥Absolute path to your downloaded .p8 private key file. Either this or APP_STORE_CONNECT_PRIVATE_KEY is required.
APP_STORE_CONNECT_PRIVATE_KEY密钥PEM contents of your .p8 private key. Either this or APP_STORE_CONNECT_PRIVATE_KEY_PATH is required.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@chrischall/app-store-connect-mcp1.3.2

工具

22

收录的工具列表 · 更新于 2 周前

参数类型必填说明
namestring否精确匹配的应用名称筛选条件
limitinteger否最多返回的应用数(默认值为 50)。不启用 auto_paginate 时,最多返回一页 API 结果(200 条);启用时,表示跨页返回的总数。
bundleIdstring否精确匹配的 bundle ID 筛选条件(例如,com.example.MyApp)
auto_paginateboolean否沿 links.next 翻页,直到达到 limit(默认值为 false)。请检查结果中的分页块,查看 has_more。

详细介绍

App Store Connect MCP

CI license

一个 Model Context Protocol 服务,可将 Claude 连接到 App Store Connect,让你通过自然语言访问自己的 App、构建版本、TestFlight Beta 群组和测试人员、客户评价、销售/财务报告以及团队用户。

警告

由 AI 开发的项目。 此代码库完全由 Claude Code 构建并积极维护。没有人审查过其实现。使用前请检查所有代码和工具权限。

你可以做什么

你可以向 Claude 提出这类请求:

  • “列出我的 App”
  • “显示 App 1234567890 的最新构建版本”
  • “谁还没有接受 TestFlight 邀请?”
  • “邀请 [email protected] 加入 External Beta 群组”
  • “提交构建版本 9876 以进行 Beta 审核”
  • “我们这个月在日本的平均评分是多少?”
  • “针对那条 1 星评价回复并致歉”
  • “获取供应商 80012345 昨日的每日销售报告”
  • “邀请一位具有 App Manager 角色的新开发者”

要求

安装

选项 A — npm
npx -y @chrischall/app-store-connect-mcp

添加到你的 Claude 配置(.mcp.json 或 Claude Desktop 配置):

{
  "mcpServers": {
    "app-store-connect": {
      "command": "npx",
      "args": ["-y", "@chrischall/app-store-connect-mcp"],
      "env": {
        "APP_STORE_CONNECT_KEY_ID": "ABC1234567",
        "APP_STORE_CONNECT_ISSUER_ID": "57246542-96fe-1a63-e053-0824d011072a",
        "APP_STORE_CONNECT_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_ABC1234567.p8"
      }
    }
  }
}
选项 B — 从源代码安装
git clone https://github.com/chrischall/app-store-connect-mcp.git
cd app-store-connect-mcp
npm install
npm run build

添加到 Claude Desktop 配置:

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "app-store-connect": {
      "command": "node",
      "args": ["/absolute/path/to/app-store-connect-mcp/dist/bundle.js"],
      "env": {
        "APP_STORE_CONNECT_KEY_ID": "ABC1234567",
        "APP_STORE_CONNECT_ISSUER_ID": "57246542-96fe-1a63-e053-0824d011072a",
        "APP_STORE_CONNECT_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_ABC1234567.p8"
      }
    }
  }
}

获取 API 密钥

  1. 登录 App Store Connect → 用户与访问 → 集成 → App Store Connect API。
  2. 点击 + 生成密钥。选择适合你希望 Claude 执行的操作的角色——只读浏览使用 Developer 即可;管理 TestFlight 使用 App Manager;邀请用户和执行大多数写入操作则需要 Admin。
  3. 下载 .p8 文件(只能下载一次),并记下 Key ID 和 Issuer ID。
  4. 将 APP_STORE_CONNECT_PRIVATE_KEY_PATH 指向已保存的 .p8 文件,或者将 PEM 内容粘贴到 APP_STORE_CONNECT_PRIVATE_KEY 中(使用转义换行符也可以)。

该密钥会按需签署有效期较短(20 分钟)的 ES256 JWT。不会在外部存储令牌;除 Apple 外,不会向任何人发送数据。

工具

工具功能
list_apps列出账户中的 App(按 bundleId/name 筛选)
get_app按 ID 获取单个 App
list_app_store_versions列出某个 App 的 App Store 版本
get_app_infos获取某个 App 的年龄分级和商店状态信息
list_builds列出最近的构建(最新的排在前面),可按 App/状态/版本筛选
get_build获取单个构建的详细信息
list_beta_groups列出 TestFlight 内部/外部 Beta 组
list_beta_testers列出 Beta 测试人员,可按 App/组/邮箱筛选
invite_beta_tester添加新的测试人员,可选择将其加入组/构建
delete_beta_tester从团队中移除测试人员
add_testers_to_beta_group将现有测试人员加入某个组
remove_testers_from_beta_group从某个组中移除测试人员
submit_build_for_beta_review提交构建以供 TestFlight Beta 审核
list_customer_reviews列出 App Store 评论,可按评分/地区筛选
get_customer_review获取单条评论及开发者回复
respond_to_review发布或更新开发者回复
download_sales_report下载每日/每周/每月/每年的销量和销售额 TSV 报告
download_finance_report下载地区财务/收益 TSV 报告;Total_* 汇总行单独放在 summary 中
list_users列出 App Store Connect 团队用户
list_user_invitations列出待处理的团队邀请
invite_user邀请新团队成员并分配角色;必须明确设置 App 可见范围(allAppsVisible: true 或非空的 visibleAppIds,不会默认显示所有 App)
asc_healthcheck验证凭据和上游连接状态;将故障作为数据报告,而非抛出异常

环境

变量必需说明
APP_STORE_CONNECT_KEY_ID是10 个字符的 Key ID(例如 ABC1234567)
APP_STORE_CONNECT_ISSUER_ID是团队 Issuer ID(UUID)
APP_STORE_CONNECT_PRIVATE_KEY二选一.p8 文件的完整 PEM 内容。支持换行转义符(\n)。
APP_STORE_CONNECT_PRIVATE_KEY_PATH二选一.p8 文件的绝对路径

确认

每项写入操作(invite_beta_tester、delete_beta_tester、add_testers_to_beta_group、remove_testers_from_beta_group、submit_build_for_beta_review、respond_to_review、invite_user)都会在发送任何内容前要求你确认。能够显示确认提示词的客户端(Claude Code)会显示包含确切请求内容的提示。对于无法显示确认提示词的客户端,首次调用不会发送任何内容,而是返回预览,其中包含将要发送的 method、path 和 JSON 正文,以及一个 confirmToken;只有使用相同参数和该令牌再次调用,才会执行写入操作。令牌只能使用一次,会过期;如果预览后有任何参数发生变化,令牌将被拒绝。

变量默认值
MCP_CONFIRM_MODEask-user对于无法显示确认提示词的客户端(claude.ai、Claude Desktop),写入操作的处理方式。ask-user:分两步进行——首次调用不执行任何操作,而是返回预览和令牌;模型必须先在聊天中获得你的批准,然后才能携带令牌再次调用。auto:同样分两步进行,但模型查看预览后可以自行使用令牌。refuse:此类客户端的写入操作会被拒绝。能够显示提示的客户端(Claude Code)始终会收到实际提示,除非 MCP_CONFIRM_ELICITATION=off。无法识别的值将按 refuse 处理。
MCP_CONFIRM_ELICITATIONonoff 表示不发送确认提示,因此所有客户端都会采用 MCP_CONFIRM_MODE 指定的流程。如果客户端声明能够显示提示但实际上从不显示,请设置此项(受控调用会一直挂起——opencode 2.0.x)。任何其他值都会保持 on,并在 stderr 中发出警告。
MCP_CONFIRM_TTL_SECONDS600令牌的有效时长。
MCP_CONFIRM_SECRET每个进程随机生成签名密钥;仅当令牌需要在服务重启后继续有效时才设置。

开发

npm install
npm test               # vitest run
npm run test:watch     # watch mode
npm run build          # tsc + esbuild bundle
npm run dev            # node --env-file=.env dist/index.js

测试会模拟 client.request / client.requestRaw;不会发起任何真实的 App Store Connect 调用。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。