mcp-appstore-connect

mcp-appstore-connect

Enables AI assistants to manage Apple App Store Connect operations including app management, TestFlight, analytics, reviews, subscriptions, and more through 54 tools.

Category
访问服务器

README

MCP App Store Connect

npm version License: MIT

An MCP (Model Context Protocol) server for Apple's App Store Connect API. This server enables AI assistants to manage iOS/macOS apps, TestFlight, analytics, reviews, subscriptions, and more.

54 tools available for comprehensive App Store Connect automation.

Features

  • App Management: List apps, get app details, view app versions
  • TestFlight: Manage builds, beta testers, and beta groups
  • Customer Reviews: List reviews, respond to reviews
  • Analytics: Access sales reports, finance reports, and analytics data
  • Version Management: Create versions, update metadata, submit for review
  • Subscriptions & IAP: Manage subscription groups, in-app purchases, and pricing
  • Metadata Management: Update app descriptions, keywords, what's new, app name, subtitle, privacy policy
  • Build Management: Set builds for versions, submit for beta review, manage beta localizations
  • App Review: Configure review details, age ratings, and phased releases
  • Pricing & Availability: Set app pricing, categories, and territory availability

Prerequisites

  1. Apple Developer Account with App Store Connect access
  2. API Key from App Store Connect:
    • Go to App Store Connect
    • Navigate to Users and Access > Integrations > App Store Connect API
    • Click Generate API Key (requires Admin role)
    • Select Admin or App Manager access
    • Download the .p8 private key file (you can only download it once!)
    • Note your Issuer ID and Key ID

Required Environment Variables

Variable Description Required
APP_STORE_ISSUER_ID Your Issuer ID from App Store Connect (found in Users and Access > Integrations) Yes
APP_STORE_KEY_ID The Key ID of your API key Yes
APP_STORE_PRIVATE_KEY Contents of your .p8 file with newlines as \n One of these
APP_STORE_PRIVATE_KEY_PATH Absolute path to your .p8 private key file One of these

Installation & Setup

Claude Code

Add to your Claude Code MCP settings:

Via CLI:

claude mcp add-json appstore-connect '{
  "command": "npx",
  "args": ["-y", "mcp-appstore-connect"],
  "env": {
    "APP_STORE_ISSUER_ID": "your-issuer-id",
    "APP_STORE_KEY_ID": "your-key-id",
    "APP_STORE_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXXX.p8"
  }
}'

Or manually edit ~/.claude/settings.json:

{
  "mcpServers": {
    "appstore-connect": {
      "command": "npx",
      "args": ["-y", "mcp-appstore-connect"],
      "env": {
        "APP_STORE_ISSUER_ID": "your-issuer-id",
        "APP_STORE_KEY_ID": "your-key-id",
        "APP_STORE_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXXX.p8"
      }
    }
  }
}

Cursor

Add to your Cursor MCP settings (~/.cursor/mcp.json):

{
  "mcpServers": {
    "appstore-connect": {
      "command": "npx",
      "args": ["-y", "mcp-appstore-connect"],
      "env": {
        "APP_STORE_ISSUER_ID": "your-issuer-id",
        "APP_STORE_KEY_ID": "your-key-id",
        "APP_STORE_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXXX.p8"
      }
    }
  }
}

Windsurf

Add to your Windsurf MCP configuration (~/.windsurf/mcp.json):

{
  "mcpServers": {
    "appstore-connect": {
      "command": "npx",
      "args": ["-y", "mcp-appstore-connect"],
      "env": {
        "APP_STORE_ISSUER_ID": "your-issuer-id",
        "APP_STORE_KEY_ID": "your-key-id",
        "APP_STORE_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXXX.p8"
      }
    }
  }
}

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "appstore-connect": {
      "command": "npx",
      "args": ["-y", "mcp-appstore-connect"],
      "env": {
        "APP_STORE_ISSUER_ID": "your-issuer-id",
        "APP_STORE_KEY_ID": "your-key-id",
        "APP_STORE_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXXX.p8"
      }
    }
  }
}

Using Private Key Content Instead of Path

If you prefer to use the key content directly (useful for CI/CD or environments without file access):

{
  "mcpServers": {
    "appstore-connect": {
      "command": "npx",
      "args": ["-y", "mcp-appstore-connect"],
      "env": {
        "APP_STORE_ISSUER_ID": "your-issuer-id",
        "APP_STORE_KEY_ID": "your-key-id",
        "APP_STORE_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\nMIGT...your-key-content...\n-----END PRIVATE KEY-----"
      }
    }
  }
}

Install from Source

git clone https://github.com/ahmetsina/mcp-appstore-connect.git
cd mcp-appstore-connect
npm install
npm run build

Then use the local path in your MCP config:

{
  "mcpServers": {
    "appstore-connect": {
      "command": "node",
      "args": ["/path/to/mcp-appstore-connect/dist/index.js"],
      "env": {
        "APP_STORE_ISSUER_ID": "your-issuer-id",
        "APP_STORE_KEY_ID": "your-key-id",
        "APP_STORE_PRIVATE_KEY_PATH": "/absolute/path/to/AuthKey_XXXXX.p8"
      }
    }
  }
}

Available Tools

Apps (3 tools)

Tool Description
list_apps List all apps in your account
get_app Get detailed app information
get_app_versions List app versions

TestFlight (6 tools)

Tool Description
list_builds List TestFlight builds
get_build Get build details
list_beta_testers List beta testers
add_beta_tester Add tester to beta group
remove_beta_tester Remove a beta tester
list_beta_groups List beta groups

Reviews (4 tools)

Tool Description
list_reviews Get customer reviews
get_review Get specific review
respond_to_review Reply to a review
delete_review_response Delete a response

Analytics (5 tools)

Tool Description
list_analytics_report_requests List analytics requests
create_analytics_report_request Create analytics request
list_analytics_reports List available reports
get_sales_reports_info Sales report info
get_finance_reports_info Finance report info

Versions (5 tools)

Tool Description
create_app_version Create new version
update_app_version Update version metadata
submit_for_review Submit for App Store review
get_app_store_state Check review status
get_version_localization Get localization info

Subscriptions & IAP (6 tools)

Tool Description
list_subscription_groups List subscription groups
list_subscriptions List subscriptions
get_subscription Get subscription details
list_in_app_purchases List IAPs
get_in_app_purchase Get IAP details
get_subscription_prices Get pricing info

Metadata (6 tools)

Tool Description
update_version_localization Update description, keywords, what's new, promotional text, URLs
create_version_localization Create localization for a new language
get_app_info Get app info ID for app-level localizations
list_app_info_localizations List localizations (name, subtitle, privacy policy)
update_app_info_localization Update app name, subtitle, privacy policy
create_app_info_localization Create app info localization for new language

Build Management (9 tools)

Tool Description
update_build Update build attributes (export compliance)
set_build_for_version Associate a build with an App Store version
submit_build_for_beta_review Submit build for TestFlight beta review
get_beta_review_status Get beta app review submission status
list_beta_build_localizations List "What to Test" notes
update_beta_build_localization Update "What to Test" notes
create_beta_build_localization Create "What to Test" for new locale
add_build_to_beta_group Add build to TestFlight group
remove_build_from_beta_group Remove build from beta group

App Review & Submission (9 tools)

Tool Description
get_app_store_review_detail Get review details (contact, demo account, notes)
update_app_store_review_detail Update review details for submission
create_app_store_review_detail Create review details for a version
get_age_rating_declaration Get age rating settings
update_age_rating_declaration Update age rating content declarations
get_phased_release Get phased release status
create_phased_release Create phased release (gradual rollout)
update_phased_release Pause, resume, or complete phased release
delete_phased_release Delete phased release configuration

Pricing & Categories (8 tools)

Tool Description
list_app_categories List available App Store categories
update_app_categories Update app's primary/secondary categories
list_territories List all territories with currency codes
list_app_price_points List price points for an app in a territory
get_app_price_schedule Get current price schedule
set_app_price_schedule Set app pricing
get_app_availability Get territories where app is available
set_app_availability Set app availability by territory

Resources

The server also exposes MCP resources:

  • appstore://apps - List of all apps
  • appstore://apps/{appId} - Specific app details
  • appstore://apps/{appId}/reviews - App reviews

Rate Limits

The App Store Connect API has rate limits:

  • ~3,600 requests per hour
  • ~300 requests per minute

The server automatically handles rate limiting with:

  • Rate limit header parsing
  • Exponential backoff on 429 errors
  • Warning logs when approaching limits

Error Handling

The server provides detailed error messages for:

  • Authentication failures (invalid credentials)
  • Rate limit exceeded
  • Invalid requests (400 errors)
  • Server errors (5xx with retry)

Development

# Run in development mode
npm run dev

# Type check
npm run typecheck

# Run tests
npm test

# Lint
npm run lint

# Build for production
npm run build

Troubleshooting

"Missing APP_STORE_ISSUER_ID" Error

Make sure all required environment variables are set in your MCP configuration. The path to your .p8 file must be an absolute path.

"Authentication failed" Error

  • Verify your Issuer ID and Key ID are correct
  • Ensure your API key has the required permissions (Admin or App Manager)
  • Check that your .p8 file is valid and hasn't been modified

"Rate limit exceeded" Error

The server will automatically retry with exponential backoff. If you consistently hit rate limits, reduce the frequency of your requests.

License

MIT

Author

Ahmet Sina Ustem (@ahmetsina)

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选