App Store Connect MCP Server

repository·main·Indexed 43 days ago

https://github.com/joshuarileydev/app-store-connect-mcp-server

A Model Context Protocol (MCP) server version 1.1.2 that enables AI assistants like Claude Desktop to interact with Apple's App Store Connect API. It provides tools for app management, beta testing, version localization, bundle ID and capability configuration, device and user administration, and the retrieval of analytics, sales, and finance reports. It also includes functionality to list Xcode project schemes via xcodebuild.

Tokens
11.8K
Snippets
44
Records
56
Agent score
55%

What's inside App Store Connect MCP Server

  1. Overview of App Store Connect MCP Server features

    main

    The App Store Connect MCP Server provides tools for managing various aspects of the Apple developer ecosystem through AI.

    Core Capabilities:

    • App Management: List apps, get detailed info, and view metadata.
    • Beta Testing: Manage beta groups, testers, and view feedback (including screenshots/device info).
    • App Store Version Localizations: Create versions, manage release schedules, update descriptions, keywords, promotional text, and "What's New" text.
    • Bundle ID Management: List, create, and manage capabilities for bundle IDs.
    • Device Management: List and filter registered devices.
    • User Management: List team members and view roles/permissions.
    • Analytics & Reports: Request and download engagement, commerce, usage, performance, sales, trends, and finance reports.
    • Xcode Development Tools: List available schemes in Xcode projects/workspaces.
  2. Authenticate with the App Store Connect API

    main

    The server uses JWT authentication via official App Store Connect API keys.

    Required Environment Variables

    1. APP_STORE_CONNECT_KEY_ID: Your API Key ID generated in App Store Connect.
    2. APP_STORE_CONNECT_ISSUER_ID: Your Issuer ID generated in App Store Connect.
    3. APP_STORE_CONNECT_P8_PATH: The absolute file path to your downloaded .p8 private key file.

    Optional Configuration for Sales & Finance Reports

    To access tools like download_sales_report and download_finance_report, you must also provide:

    • APP_STORE_CONNECT_VENDOR_NUMBER: Your vendor number (found in App Store Connect under "Sales and Trends" or "Payments and Financial Reports").
  3. Configure App Store Connect MCP Server environment variables

    main

    The App Store Connect MCP Server requires specific environment variables to authenticate with Apple's APIs. If APP_STORE_CONNECT_VENDOR_NUMBER is provided, the server will also enable tools for downloading Sales and Finance reports.

    Required Variables:

    • APP_STORE_CONNECT_KEY_ID: Your App Store Connect API Key ID.
    • APP_STORE_CONNECT_ISSUER_ID: Your App Store Connect API Issuer ID.
    • APP_STORE_CONNECT_P8_PATH: The local file path to your .p8 private key file.

    Optional Variable:

    • APP_STORE_CONNECT_VENDOR_NUMBER: Your vendor number (required for Sales & Finance report tools).
    export APP_STORE_CONNECT_KEY_ID="YOUR_KEY_ID"
    export APP_STORE_CONNECT_ISSUER_ID="YOUR_ISSUER_ID"
    export APP_STORE_CONNECT_P8_PATH="/path/to/your/key.p8"
    export APP_STORE_CONNECT_VENDOR_NUMBER="YOUR_VENDOR_NUMBER"
  4. Develop the App Store Connect MCP Server

    main

    If you are contributing to or modifying the server, use the following standard npm commands to manage the development lifecycle:

    • npm install: Installs project dependencies.
    • npm run build: Compiles the TypeScript source code.
    • npm test: Executes the test suite.
    • npm run type-check: Runs TypeScript type checking to ensure code integrity.
    # Install dependencies
    npm install
    
    # Build the project
    npm run build
    
    # Run tests
    npm test
    
    # Run type checking
    npm run type-check
  5. Configure the App Store Connect MCP Server for Claude Desktop

    main

    To use the server with Claude Desktop, add the app-store-connect configuration to your claude_desktop_config.json file.

    File Locations:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    Ensure you provide the required environment variables for authentication.

    {
      "mcpServers": {
        "app-store-connect": {
          "command": "npx",
          "args": [
            "-y",
            "appstore-connect-mcp-server"
          ],
          "env": {
            "APP_STORE_CONNECT_KEY_ID": "YOUR_KEY_ID",
            "APP_STORE_CONNECT_ISSUER_ID": "YOUR_ISSUER_ID",
            "APP_STORE_CONNECT_P8_PATH": "/path/to/your/auth-key.p8",
            "APP_STORE_CONNECT_VENDOR_NUMBER": "YOUR_VENDOR_NUMBER_OPTIONAL"
          }
        }
      }
    }
  6. Understand Analytics Report and Segment Data Structures

    main

    Analytics data is returned in two main layers: the AnalyticsReport (the metadata about the report) and the AnalyticsReportSegment (the actual downloadable data).

    • AnalyticsReport: Contains the category, name, and instancesCount.
    • AnalyticsReportSegment: Contains the url to download the data, the sizeInBytes, and a checksum for verification.
    export interface AnalyticsReport {
      id: string;
      type: 'analyticsReports';
      attributes: {
        category: AnalyticsReportCategory;
        name: string;
        instancesCount: number;
      };
    }
    
    export interface AnalyticsReportSegment {
      id: string;
      type: 'analyticsReportSegments';
      attributes: {
        checksum: string;
        sizeInBytes: number;
        url: string;
      };
    }
  7. Handle errors in App Store Connect MCP Server

    main

    The server includes built-in error handling for common integration issues. When interacting with the server via an MCP client, be prepared to handle the following error scenarios:

    • Invalid authentication: Issues with your App Store Connect API keys or credentials.
    • Missing required parameters: API calls that lack necessary arguments.
    • API rate limits: Exceeding the allowed request frequency from Apple's servers.
    • Network issues: Connectivity problems between the server and Apple's API.
    • Invalid operations: Attempting actions that are not supported or are logically incorrect.
  8. Manage Beta Testing and Testers

    main

    The server provides tools to manage beta testing groups and testers:

    • list_beta_groups: Lists internal and external beta groups. Supports limit and appId filtering.
    • list_group_testers: Lists testers within a specific groupId.
    • add_tester_to_group: Adds a tester to a group using groupId and email. Optional firstName and lastName can be provided.
    • remove_tester_from_group: Removes a tester from a group using groupId and testerId.
    • list_beta_feedback_screenshots: Lists feedback screenshots. Can be filtered by appId, bundleId, or buildId. Supports includeBuilds and includeTesters flags.
    • get_beta_feedback_screenshot: Retrieves details for a specific feedbackId. Supports includeBuilds, includeTesters, and downloadScreenshot (defaults to true).
    Example usage:
    "Add john@example.com to beta group ABC123"
    "Remove tester XYZ789 from group ABC123"
    "Get feedback screenshot FEEDBACK123"
  9. Manage Bundle IDs and Capabilities

    main

    Tools for registering and configuring Bundle IDs:

    • create_bundle_id: Registers a new ID. Requires identifier (e.g., 'com.example.app'), name, and platform (IOS, MAC_OS, or UNIVERSAL). Optional seedId can be provided.
    • list_bundle_ids: Lists registered bundle IDs. Supports limit, sort, filter, and include (profiles, bundleIdCapabilities, app).
    • get_bundle_id_info: Gets details for a bundleIdId. Supports include and fields parameters.
    • enable_bundle_capability: Enables a capability (e.g., PUSH_NOTIFICATIONS, ICLOUD, GAME_CENTER) for a bundleIdId. Supports settings.
    • disable_bundle_capability: Disables a capability using its capabilityId.
    Example usage:
    "Create bundle ID com.mycompany.newapp for iOS named 'My New App'"
    "Enable push notifications for bundle ID BUNDLE123"
  10. Manage Devices and Users

    main

    Administrative tools for team resources:

    • list_devices: Lists registered devices. Supports limit, sort (name, platform, status, udid, deviceClass, model, addedDate), filter, and fields.
    • list_users: Lists team members. Supports limit, sort (username, firstName, lastName, roles), filter, fields, and include (visibleApps).