App Store数据访问服务器

一个提供结构化访问App Store Connect数据的MCP服务器,支持ASO分析、下载追踪和性能监控。

  • by Fourni-j
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Fourni-j/appstore-connect-MCP

使用说明

非官方App Store Connect MCP服务器

一 主控程序 服务器,使AI助手能够结构化地访问App Store Connect数据。专为ASO(App Store优化)分析、下载跟踪和性能监控而构建。

服务器返回对代理友好的JSON,其中包含自然语言摘要、预先计算的聚合和转换率,因此AI代理可以解释App Store数据,而不需要了解苹果原始报告格式的特定领域知识。

目录

快速开始

先决条件

您需要App Store Connect API密钥。创建一个 应用商店连接>用户和访问>集成>应用商店连接API.

安装

git clone https://github.com/Fourni-j/appstore-connect-MCP.git
cd appstore-connect-MCP
npm install
npm run build

配置您的MCP客户端

添加到您的MCP客户端配置中(例如。, claude_desktop_config.json):

{
  "mcpServers": {
    "appstore-connect": {
      "command": "node",
      "args": ["/path/to/appstore-connect-MCP/dist/index.js"],
      "env": {
        "ASC_KEY_ID": "your-key-id",
        "ASC_ISSUER_ID": "your-issuer-id",
        "ASC_PRIVATE_KEY_PATH": "/path/to/AuthKey_XXXX.p8",
        "ASC_VENDOR_NUMBER": "your-vendor-number"
      }
    }
  }
}

环境变量

变量 必填 描述
ASC_KEY_ID 是 来自App Store Connect的API密钥ID
ASC_ISSUER_ID 是 来自App Store Connect的发卡机构ID
ASC_PRIVATE_KEY_PATH 是 通往 .p8 私钥文件
ASC_VENDOR_NUMBER 用于销售/下载 付款和财务报告中的供应商编号

第一个命令

问你的AI助手:

“在App Store Connect上列出我的应用程序”

工具

list_apps

列出帐户中的所有应用程序。返回每个应用程序的 id, name, bundleId,以及 sku.返回 id 被用作 appId 在所有其他工具中。

参数: limit (可选,默认50,最大200)

获取app_元数据

获取本地化元数据:所有地区的标题、副标题、关键字、描述和宣传文本。可用于ASO审查。

参数: appId (必填)

get_analytics_report

获取五类应用程序的分析数据:

类别 指标
APP_STORE_ENGAGEMENT 印象、页面浏览量、点击次数、转化率
COMMERCE 按类型、设备、地区下载
APP_USAGE 会话、活动设备
FRAMEWORK_USAGE 框架采用
PERFORMANCE 崩溃,发射时间

默认情况下,返回每个时段的聚合数据,包括按来源/设备/地区划分的总计和细分。对于参与度,COMMERCE下载数据会自动合并,包括与App Store Connect定义完全匹配的转化率(总下载量/独特印象)。

集 raw: true 对于每个区域/设备/OS的细粒度行。

始终指定 granularity (DAILY 或 MONTHLY).没有它,苹果将每月和每天的实例混合在一起。月度仅涵盖已完成的月份;DAILY涵盖了最近几天。要了解完整情况,请拨打两个电话。

参数: appId (必填), category (必填), granularity (可选但推荐), startDate (可选), endDate (可选), raw (可选), limit (可选)

get_sales_report

下载并解析结构化JSON格式的销售/安装报告。Apple的原始TSV列名被映射到可读的camelCase密钥。每行包括一个 productTypeLabel 具有人类可读的描述。

参数: reportType (必填), reportSubType (必填), frequency (必填), vendorNumber (可选--回退到 ASC_VENDOR_NUMBER), reportDate (可选)

get_app_store_versions

列出应用程序版本及其应用商店状态(READY_FOR_SALE, IN_REVIEW等)、创建日期和平台。可用于将发布与度量变化相关联。

参数: appId (必填), limit (可选,默认10,最大50)

get_downloads_summary

获取按时间段汇总的首次下载次数。对于32天以下的范围,自动使用每日粒度,否则按月使用。仅计算新安装(不包括更新、重新下载、IAP和订阅)。

参数: appId (必填), startDate (可选), endDate (可选)

get_customer_reviews

获取应用程序的客户评论和评级。返回带有汇总统计数据(平均评分、星级分布)的个人书面评论,以及iTunes Lookup API的官方App Store评分。

App Store评级包括所有评级(无声的星级点击+书面评论),并因国家而异 storeCountry 以获得特定市场的评级。

参数: appId (必填), rating (可选,1-5), territory (可选,3个字母的代码,如 USA, FRA), sort (可选,默认 -createdDate), startDate (可选), endDate (可选), storeCountry (可选,2个字母的ISO代码,默认值 US), limit (可选,默认500,最大1000)

分析报告的工作原理

分析报告使用苹果的 异步报告流。这与其他工具不同——它不会从单个API调用返回数据。

流程:

  1. 报告请求 --服务器创建 ONGOING 分析报告请求 为您的应用
  2. 报告生成 --Apple处理请求并生成 报告实例 (每个时间段一个)
  3. 分段下载 --每个实例包含 片段 服务器下载并解析的(gzip压缩的TSV文件)

首次设置: 对给定应用程序的第一次调用会创建报告请求并返回 "pending" 状态。苹果需要时间(通常是几个小时,有时长达24小时)来生成初始报告。后续呼叫会立即返回数据。

为什么它可能很慢: 即使在初始设置之后,获取分析也需要多个连锁的API调用。对于具有许多实例的大日期范围,这可能需要10-30秒。

看 Apple的分析报告文档 以获取API的完整参考。

响应格式

所有工具都返回具有代理友好结构的JSON:

Aggregated analytics example (APP_STORE_ENGAGEMENT)
{
  "summary": "APP_STORE_ENGAGEMENT analytics from 2026-02-01 to 2026-02-28: 28 periods...",
  "status": "ready",
  "granularity": "daily",
  "dateRange": { "from": "2026-02-01", "to": "2026-02-28" },
  "totals": { "Impression": 50000, "Page view": 8000, "Tap": 3200 },
  "uniqueTotals": { "Impression": 40000, "Page view": 7000, "Tap": 2800 },
  "conversionRates": {
    "tapRate (Unique Taps / Unique Impressions)": "7.00%",
    "pageViewRate (Unique Page Views / Unique Impressions)": "17.50%",
    "conversionRate (Total Downloads / Unique Impressions)": "4.50%"
  },
  "downloads": {
    "totalDownloads": 1800,
    "firstTimeDownloads": 1500,
    "redownloads": 300,
    "updates": 500
  },
  "periods": [
    {
      "date": "2026-02-01",
      "counts": { "Impression": 1800, "Page view": 290, "Tap": 115 },
      "uniqueCounts": { "Impression": 1400, "Page view": 250, "Tap": 100 },
      "conversionRates": { "...": "..." },
      "bySource": { "App Store Browse": 900, "App Store Search": 700 },
      "byDevice": { "iPhone": 1400, "iPad": 400 },
      "downloads": { "totalDownloads": 60, "firstTimeDownloads": 50, "redownloads": 10 }
    }
  ]
}
Sales report example
{
  "summary": "DAILY SALES/SUMMARY report for 2026-02-15: 12 rows.",
  "totalRows": 12,
  "truncated": false,
  "data": [
    {
      "title": "My App",
      "sku": "com.example.myapp",
      "units": "5",
      "customerPrice": "0",
      "productType": "1",
      "productTypeLabel": "Free or Paid App (Universal)",
      "countryCode": "US",
      "device": "iPhone"
    }
  ]
}
Customer reviews example
{
  "summary": "App Store rating (US): 4.58 from 178 ratings. 42 written reviews (avg 3.26). Distribution: 5★=16, 4★=10, 3★=8, 2★=3, 1★=5.",
  "appId": "123",
  "storeRating": {
    "averageRating": 4.58,
    "ratingCount": 178,
    "currentVersionAverageRating": 4.58,
    "currentVersionRatingCount": 178
  },
  "totalReviews": 42,
  "averageRating": 3.26,
  "ratingDistribution": { "1": 5, "2": 3, "3": 8, "4": 10, "5": 16 },
  "truncated": false,
  "reviews": [
    {
      "id": "review-id",
      "rating": 5,
      "title": "Great app!",
      "body": "Love the barcode scanning feature.",
      "reviewerNickname": "user123",
      "territory": "USA",
      "createdDate": "2026-03-01T00:00:00Z"
    }
  ]
}
Error example
{
  "error": "ASC_VENDOR_NUMBER environment variable is not set. Find your vendor number in App Store Connect > Payments and Financial Reports."
}

还设置了错误响应 isError: true 在MCP结果对象上。

本地测试

直接针对真实的App Store Connect API运行工具处理程序:

# Set environment variables first
export ASC_KEY_ID="your-key-id"
export ASC_ISSUER_ID="your-issuer-id"
export ASC_PRIVATE_KEY_PATH="/path/to/AuthKey_XXXX.p8"
export ASC_VENDOR_NUMBER="your-vendor-number"

# Run all tools
npx tsx scripts/test-tools.ts

# Run a specific tool
npx tsx scripts/test-tools.ts list-apps
npx tsx scripts/test-tools.ts get-analytics-report
npx tsx scripts/test-tools.ts get-customer-reviews

发展

npm run build        # Compile TypeScript
npm test             # Run tests (94 tests)
npm run test:watch   # Watch mode
npm start            # Start the MCP server

贡献

欢迎捐款。请先打开一个问题,讨论您想更改的内容。

许可证

MIT许可证——见 许可证 了解详情。


This project is an independent, unofficial tool and is not affiliated with, endorsed by, or sponsored by Apple Inc. App Store Connect, TestFlight, and Apple are trademarks of Apple Inc., registered in the U.S. and other countries.