asc-api-integration-service
A dedicated Model Context Protocol (MCP) engine for executing operations against the Apple App Store Connect RESTful interface, encompassing application lifecycle management, beta distribution oversight, provisioning artifact control, and performance metric retrieval.
Author

JoshuaRileyDev
Quick Info
Actions
Tags
App Store Connect API Integration Engine (MCP Server)
This Model Context Protocol (MCP) service furnishes a robust interface for interacting programmatically with the official App Store Connect Web Services. It empowers developers to orchestrate crucial aspects of their publishing pipeline, including app configuration, user provisioning, metadata iteration, and consumption of vital operational statistics.
Core Purpose
The App Store Connect MCP Engine serves as a vital conduit, transforming complex, direct API interactions into accessible, instruction-based commands usable via conversational AI frameworks. This abstraction layer streamlines routine administrative tasks associated with managing software distribution on Apple platforms (iOS, macOS, tvOS, visionOS).
Principal Capabilities: - 🤖 AI-Driven Asset Control: Manage application metadata, builds, and versioning using natural language. - 📊 Performance Data Access: Retrieve detailed reporting on sales, downloads, engagement, and usage analytics. - 👥 Tester Cohort Administration: Efficiently onboard, offboard, and organize individuals for pre-release validation programs. - 🌍 Internationalization Control: Update localized descriptive text, keywords, and release notes across various territories. - 🔧 Development Workflow Hooks: Inspect project artifacts, such as Xcode build schemes, for pipeline integration. - 🔐 Secure Authorization: Employs standard JWT signing based on private keys (.p8) for authenticated access to the Apple ecosystem. - 🚀 Freshness Guarantee: Data retrieval reflects the current state directly from Apple's backend infrastructure.
Target Audience: - Software engineers managing deployment artifacts for Apple devices. - QA leads coordinating robust testing pools. - Product owners monitoring business outcomes and user interaction metrics. - Marketing specialists handling global storefront presentation. - Operations personnel aiming to automate submission and release procedures. - Any entity seeking significant efficiency gains in App Store Connect management overhead.
This utility shifts the paradigm from manual portal navigation to declarative, automated fulfillment of standard App Store Connect requirements, whether checking adoption rates, revising privacy policies, or staging the next release candidate.
Functional Modules
- Application Entity Manipulation
- Enumerate all registered applications.
- Fetch comprehensive metadata for a designated application.
-
Review associated metadata configurations and structural relationships.
-
Pre-Release Validation Oversight
- List defined tester pools (internal/external).
- Retrieve registered participants within a specific group.
- Add or revoke participant access from defined validation pools.
- Configure parameters for validation cycles.
-
Access collected user feedback, including associated imagery and hardware specifications.
-
Storefront Metadata Iteration ✨ NEW
- Provision new storefront versions, including release timing controls.
- Catalog all existing versions attached to an application.
- Survey all localized content sets for a given application version.
- Retrieve granular details of a specific localization record.
- Modify textual assets: descriptions, search keywords, promotional slogans, and changelogs.
- Manage public-facing support and marketing uniform resource locators (URLs).
-
Update the 'What's New in This Version' content.
-
Bundle Identifier Governance
- Inventory all provisioned unique application identifiers.
- Register novel bundle identifiers.
- Examine the properties of a specific identifier record.
-
Activate or deactivate specific technical capabilities linked to an identifier.
-
Device Registry Management
- Query the roster of registered hardware endpoints.
- Apply filtering based on device lineage, operational status, or hardware class.
-
Inspect individual device attributes.
-
Team Member Administration
- Fetch the roster of users associated with the development team.
- Review assigned operational roles and permissions levels.
-
Segment users based on their assigned roles or access privileges.
-
Performance Insights & Reporting
- Initiate asynchronous requests for application telemetry data.
- Retrieve aggregated data spanning usage, sales transactions, and platform engagement.
- Access reports detailing framework utilization and overall performance characteristics.
- Secure transactional data exports (daily, weekly, monthly, annual cadence).
-
Fetch granular financial settlement documentation categorized by geographical territory.
-
Xcode Build Artifact Inspection
- List selectable build targets (schemes) available within provided Xcode project files (.xcodeproj or .xcworkspace).
- Facilitate integration points for automated deployment environments.
Deployment Procedure
Via Smithery CLI
To automate the setup for use with supported conversational AI clients:
npx @smithery/cli install appstore-connect-mcp-server --client claude
Manual Node Installation
npm install @joshuarileydev/app-store-connect-mcp-server
Configuration Parameters
Inject the following structure into your client's configuration file (e.g., claude_desktop_config.json):
macOS Path Example
~/Library/Application Support/Claude/claude_desktop_config.json
Windows Path Example
%APPDATA%\Claude\claude_desktop_config.json
{
"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"
}
}
}
}
Authorization Mechanism
Mandatory Setup Steps
- Provision an App Store Connect API Key via the Integrations section of App Store Connect.
- Securely download the corresponding private cryptographic key file (.p8).
- Record your assigned Key Identifier and Issuer Identifier.
- Define the subsequent environment variables within your configuration block:
APP_STORE_CONNECT_KEY_ID: The ID associated with the generated API Key.APP_STORE_CONNECT_ISSUER_ID: Your unique Issuer ID.APP_STORE_CONNECT_P8_PATH: The absolute file system locator for the downloaded .p8 private key.
Optional Configuration for Financial Data Access
To unlock the sales and financial reporting utilities, you must additionally configure:
- APP_STORE_CONNECT_VENDOR_NUMBER: Your unique identifier assigned by Apple for financial reporting.
Crucial Note: The report generation functions (download_sales_report, download_finance_report) will remain inaccessible unless the vendor number is correctly supplied in the configuration or explicitly overridden in the tool call.
Comprehensive Function Reference
📱 Application Lifecycle Utilities
list_apps
Retrieves the catalog of all applications linked to the authenticated account.
Arguments:
- limit (optional): Maximum record count to retrieve (Default: 100, Upper Bound: 200).
- bundleId (optional): Criterion to filter results by unique bundle identifier.
Invocation Examples:
"Catalog every application I manage"
"Query applications matching bundle ID com.enterprise.service"
"Fetch the first 50 entries in the app registry"
get_app_info
Fetches exhaustive metadata for a specified application instance.
Arguments:
- appId (mandatory): The unique numerical identifier of the target application.
- include (optional): A comma-separated list of related entities to embed in the response (e.g., appClips, appInfos, appStoreVersions, betaGroups, builds).
Invocation Examples:
"Retrieve full details for application ID 123456789"
"Show app 123456789, including its associated build records and tester groups"
"Get comprehensive metadata for my primary application, including version history"
👥 Pre-Release Validation Utilities
list_beta_groups
Fetches the inventory of internal and external validation cohorts.
Arguments:
- limit (optional): Maximum number of groups to return (Default: 100, Upper Bound: 200).
- appId (optional): Constraint to narrow results to groups associated with a single application.
Invocation Examples:
"Display all existing validation groups"
"List testing groups explicitly tied to application 123456789"
"Retrieve the initial 20 defined validation cohorts"
list_group_testers
Enumerates the participants assigned to a specified validation group.
Arguments:
- groupId (mandatory): The unique identifier for the target validation group.
- limit (optional): Maximum participant count to list (Default: 100, Upper Bound: 200).
Invocation Examples:
"Enumerate all testers registered under group ABC123"
"Show the first 50 validated users within beta pool ABC123"
add_tester_to_group
Enrolls a new individual into a validation pool.
Arguments:
- groupId (mandatory): The identifier of the destination group.
- email (mandatory): The electronic mail address of the participant.
- firstName (optional): The given name of the participant.
- lastName (optional): The family name of the participant.
Invocation Examples:
"Enroll john@example.com into validation group ABC123"
"Register John Smith (john@example.com) into cohort ABC123"
remove_tester_from_group
Revokes a participant's access from a validation pool.
Arguments:
- groupId (mandatory): The identifier of the group to modify.
- testerId (mandatory): The unique identifier of the participant to remove.
Invocation Examples:
"Deprovision tester XYZ789 from group ABC123"
"Terminate access for tester XYZ789 in beta pool ABC123"
list_beta_feedback_screenshots
Retrieves submissions of visual feedback captured during testing phases.
Arguments:
- appId (optional): Filter based on the application the feedback pertains to.
- bundleId (optional): Filter based on the application's bundle identifier.
- buildId (optional): Filter based on the specific build version submitted.
- limit (optional): Cap on the number of results returned (Default: 100).
- includeBuilds (optional): Boolean flag to enrich results with corresponding build metadata.
- includeTesters (optional): Boolean flag to enrich results with tester identity information.
Invocation Examples:
"Display all visual feedback artifacts for application 123456789"
"List image feedback records tied to bundle ID com.example.app"
"Fetch feedback records including tester details for build XYZ"
get_beta_feedback_screenshot
Fetches the detailed record and optionally the image data for a specific feedback submission.
Arguments:
- feedbackId (mandatory): The unique reference ID for the feedback submission.
- includeBuilds (optional): Include associated build record details.
- includeTesters (optional): Include associated tester identity details.
- downloadScreenshot (optional): Instruction to fetch the binary image data (Default is true).
Invocation Examples:
"Retrieve details for feedback record FEEDBACK123"
"Show feedback entry FEEDBACK123 enriched with tester metadata"
"Initiate binary download for the screenshot associated with FEEDBACK123"
🌍 Storefront Localization Utilities
create_app_store_version
Provisions a new version entity for submission associated with an application.
Arguments:
- appId (mandatory): The unique numerical identifier of the application.
- platform (mandatory): The target ecosystem (IOS, MAC_OS, TV_OS, VISION_OS).
- versionString (mandatory): The semantic version string (e.g., '1.0' or '1.0.0').
- copyright (optional): The mandatory copyright notice for this specific version.
- releaseType (optional): The deployment strategy (MANUAL, AFTER_APPROVAL, SCHEDULED).
- earliestReleaseDate (optional): ISO 8601 formatted timestamp; mandatory if releaseType is SCHEDULED.
- buildId (optional): The identifier of the specific build artifact to attach to this version record.
Invocation Examples:
"Provision iOS version 2.0.0 for application 123456789"
"Instantiate macOS version 1.5.0 for app 123456789, releasing manually"
"Schedule iOS version 2.1.0 for app 123456789 to go live on 2024-02-01"
"Create version 1.2.0 for app 123456789, utilizing build BUILD456 and setting copyright to '2024 My Company'"
list_app_store_versions
Retrieves all version records cataloged for a given application.
Arguments:
- appId (mandatory): The unique numerical identifier of the application.
- limit (optional): Cap on the number of versions returned (Default: 100, Upper Bound: 200).
- filter (optional): Structured criteria for narrowing the list:
- platform: Filter by ecosystem (IOS, MAC_OS, TV_OS).
- versionString: Filter by the specific version identifier (e.g., '1.0.0').
- appStoreState: Filter by submission status (e.g., READY_FOR_SALE, PREPARE_FOR_SUBMISSION).
Invocation Examples:
"List every version record associated with app 123456789"
"Isolate iOS versions for app 123456789"
"Locate version 2.0.0 for application 123456789"
"Show all application versions currently in the review queue for app 123456789"
list_app_store_version_localizations
Fetches the inventory of all localized content packages for a specific version record.
Arguments:
- appStoreVersionId (mandatory): The unique identifier of the parent application version.
- limit (optional): Maximum count of localization records (Default: 100, Upper Bound: 200).
Invocation Examples:
"Enumerate all localized content sets for version VERSION123"
"Show all language variations configured for app store version VERSION123"
get_app_store_version_localization
Retrieves the detailed attributes of a single localized content record.
Arguments:
- localizationId (mandatory): The unique identifier for the specific localization instance.
Invocation Examples:
"Fetch granular details for localization LOCALE123"
"Display the specific metadata for the French localization LOCALE123"
update_app_store_version_localization
Modifies a single attribute within a specified localization record.
Arguments:
- localizationId (mandatory): The unique identifier for the localization instance.
- field (mandatory): The property name to modify (description, keywords, marketingUrl, promotionalText, supportUrl, whatsNew).
- value (mandatory): The new textual content for the specified field.
Invocation Examples:
"Modify the description for localization LOCALE123 to 'A revolutionary application enhancing productivity'"
"Set keywords for LOCALE123 to 'organization, planning, efficiency'"
"Update the 'What's New' section for LOCALE123 to reflect recent stability patches"
🔤 Bundle Identifier Governance Utilities
create_bundle_id
Registers a new, unique application identifier within the team's provisioning profile.
Arguments:
- identifier (mandatory): The canonical string representation (e.g., 'com.mycorp.newservice').
- name (mandatory): A human-readable designation for the identifier.
- platform (mandatory): The required ecosystem (IOS, MAC_OS, or UNIVERSAL).
- seedId (optional): The team's designated seed identifier, if applicable.
Invocation Examples:
"Register new bundle ID com.mycorp.newservice for iOS, naming it 'New Corporate Service'"
"Provision a UNIVERSAL identifier com.example.app called 'Core Example Utility'"
list_bundle_ids
Queries and lists all identifiers registered to the current development team.
Arguments:
- limit (optional): Maximum number of records to fetch (Default: 100, Upper Bound: 200).
- sort (optional): Order of results (e.g., name, -name for descending, platform, identifier).
- filter (optional): Criteria for filtering results by identifier string, name, platform, or seedId.
- include (optional): Related records to embed (profiles, bundleIdCapabilities, app).
Invocation Examples:
"List every registered application identifier"
"Display all iOS identifiers sorted alphabetically by name"
"Search for identifiers containing the substring 'example'"
get_bundle_id_info
Retrieves the full configuration and linkage for a specific bundle identifier record.
Arguments:
- bundleIdId (mandatory): The internal unique identifier for the bundle ID record.
- include (optional): Related data to embed (e.g., capabilities).
- fields (optional): Specify only certain fields of the primary resource.
Invocation Examples:
"Fetch configuration details for bundle ID BUNDLE123"
"Show bundle ID BUNDLE123, including all enabled technical capabilities"
enable_bundle_capability
Activates a specific technical feature (capability) for a designated bundle identifier.
Arguments:
- bundleIdId (mandatory): The unique identifier of the bundle ID being modified.
- capabilityType (mandatory): The feature to enable (e.g., PUSH_NOTIFICATIONS, ICLOUD, GAME_CENTER).
- settings (optional): Any configuration payloads required by the specific capability.
Invocation Examples:
"Activate Push Notification services for bundle ID BUNDLE123"
"Associate the iCloud capability with bundle BUNDLE123"
"Enable Game Center functionality for identifier BUNDLE123"
disable_bundle_capability
Deactivates a technical feature associated with a bundle identifier.
Arguments:
- capabilityId (mandatory): The unique identifier pointing to the specific capability linkage record.
Invocation Examples:
"Deactivate capability record CAP123"
"Remove the capability association identified by CAP123 from its parent bundle"
📱 Device Registry Utilities
list_devices
Fetches the roster of all physical and virtual devices provisioned for development and testing.
Arguments:
- limit (optional): Maximum entry count (Default: 100, Upper Bound: 200).
- sort (optional): Criteria for ordering results (e.g., name, platform, status, udid, addedDate).
- filter (optional): Parameters to narrow the device set by name substring, platform, status flag, UDID, or hardware class.
- fields (optional): Specify a subset of device attributes to return.
Invocation Examples:
"List every device currently registered on the team"
"Show all active iOS devices"
"Locate devices whose registered name contains 'John'"
"Query registered iPhones, ordered by the date they were added"
👤 Team Member Administration Utilities
list_users
Retrieves the directory of all associated personnel on the App Store Connect team account.
Arguments:
- limit (optional): Maximum user count (Default: 100, Upper Bound: 200).
- sort (optional): Order of results (e.g., username, firstName, lastName, roles).
- filter (optional): Criteria to filter users by email or by assigned roles.
- fields (optional): Specify which user attributes should be returned.
- include (optional): Embed the list of applications visible to that user.
Invocation Examples:
"List all registered team personnel"
"Show users possessing the 'ADMIN' role assignment"
"Find all developer accounts, sorted by their last name"
"List team members along with the applications they can access"
📊 Performance Telemetry and Reporting
create_analytics_report_request
Initiates a job to generate a custom usage/sales telemetry report.
Arguments:
- appId (mandatory): The identifier of the application under review.
- accessType (mandatory): Defines the job type (ONGOING for recurring, ONE_TIME_SNAPSHOT for a single instance).
- frequency (optional): The repetition cadence for ongoing reports (DAILY, WEEKLY, MONTHLY).
- startDate (optional): The initial date for data inclusion (YYYY-MM-DD format).
- endDate (optional): The concluding date for data inclusion (YYYY-MM-DD format).
Invocation Examples:
"Schedule a recurring daily analytics data generation for application 123456789"
"Generate a singular snapshot report for app 123456789 covering the entirety of January 2024"
list_analytics_reports
Retrieves the generated report files associated with a previously submitted generation request.
Arguments:
- reportRequestId (mandatory): The ID of the initial report creation job.
- limit (optional): Maximum result count (Default: 100, Upper Bound: 200).
- filter (optional): Criteria to filter reports by category type, report name, or generation date.
Invocation Examples:
"List all available files resulting from request REQ123"
"Show only usage reports generated under request REQ123"
list_analytics_report_segments
Fetches the individual data chunks (segments) that comprise a finalized analytics report.
Arguments:
- reportId (mandatory): The identifier of the specific analytics report file.
- limit (optional): Maximum segment count (Default: 100, Upper Bound: 200).
Invocation Examples:
"List the data segments comprising report REPORT123"
"Retrieve the download URI links for all segments within report REPORT123"
download_analytics_report_segment
Executes the actual download of the compressed data payload for a report segment.
Arguments:
- url (mandatory): The direct, authenticated Uniform Resource Locator provided for the segment file.
Invocation Examples:
"Download the data payload from the provided URL: https://api.appstoreconnect.apple.com/..."
💰 Financial Settlement Documents (Vendor ID Required)
download_sales_report
Fetches transactional and subscription activity documentation.
Arguments:
- frequency (mandatory): The reporting period granularity (DAILY, WEEKLY, MONTHLY, YEARLY).
- reportDate (mandatory): The specific date/period identifier (e.g., '2024-01-15' or '2024-01').
- reportType (mandatory): The data domain (SALES, SUBSCRIPTION, SUBSCRIPTION_EVENT, SUBSCRIBER, NEWSSTAND, PREORDER).
- reportSubType (mandatory): The detail level (SUMMARY or DETAILED).
- vendorNumber (optional): An optional override for the configured vendor ID.
- version (optional): Specifies the required report schema version (Default: 1_0).
Invocation Examples:
"Download the summarized daily sales figures for January 15th, 2024"
"Retrieve detailed records on subscription events for the month of January 2024"
"Fetch the annual sales summary documentation for the fiscal year 2023"
download_finance_report
Retrieves financial payout documentation broken down by geographical market.
Arguments:
- reportDate (mandatory): The month and year identifier (YYYY-MM format).
- regionCode (mandatory): The ISO standard code for the territory (e.g., 'Z1' for Global).
- vendorNumber (optional): An optional override for the configured vendor ID.
Invocation Examples:
"Download the financial reconciliation statement for worldwide operations for January 2024"
"Get the financial ledger for region Z1 corresponding to report month 2024-01"
🔧 Xcode Build Artifact Utilities
list_schemes
Enumerates all discoverable build configurations (schemes) within a specified Xcode project or workspace file.
Arguments:
- projectPath (mandatory): The file system path pointing to either the .xcodeproj or .xcworkspace directory.
Invocation Examples:
"Enumerate build schemes located in /Users/john/MyApp/MyApp.xcodeproj"
"Show all available targets defined within MyApp.xcworkspace"
Operational Resilience
The integration service is engineered with comprehensive fault tolerance, specifically addressing: - Authentication credential failures. - Incomplete or missing mandatory input arguments. - Exceeding Apple's imposed request rate limits. - Transient or persistent network connectivity interruptions. - Attempting invalid state transitions or operations.
Development Lifecycle
# Install project dependencies
npm install
# Compile source code into deployable assets
npm run build
# Execute unit and integration tests
npm test
# Verify TypeScript syntax and types
npm run type-check
Licensing
This software component is distributed under the terms specified in the MIT License (see the accompanying LICENSE file for full details).
Related Resources
- Model Context Protocol Official Specification
- Apple Developer Documentation: App Store Connect API
- MCP TypeScript SDK Repository
WIKIPEDIA: Business management tools encompass all methodologies, controls, applications, and computational frameworks utilized by organizations to effectively navigate dynamic market conditions, maintain competitive standing, and achieve superior operational performance. These systems span functions like strategic forecasting, process automation, data aggregation for decision support, and resource optimization. The selection and adaptation of these digital instruments are crucial for long-term success, requiring managers to adopt a strategic rather than merely tactical approach to technology adoption.
== Conceptual Categorization == Business tools can be functionally segmented across departmental needs. Key categories include: tools for data capture and integrity verification, systems for business process control and refinement, and platforms for large-scale data synthesis supporting executive decision-making. Technological advancements have rapidly transformed this landscape, making tool selection a complex strategic imperative driven by cost reduction targets, revenue growth objectives, and the imperative to deeply understand and satisfy evolving customer requirements.
== Global Adoption Trends (2013 Survey Example) == A notable 2013 survey by Bain & Company illustrated global usage patterns for management instruments, reflecting regional market dynamics. Top-tier tools identified included: Strategic Planning Frameworks, Customer Relationship Management (CRM) suites, Employee Feedback Mechanisms, Benchmarking Analysis, Balanced Scorecard implementation, Core Competency Analysis, Outsourcing evaluation, Change Management programs, Supply Chain Optimization, and foundational Mission/Vision statement clarity.
== Enterprise Software Evolution == Business software, defined as programmed collections of routines used by organizational personnel to execute various operational tasks, has historically progressed from early Management Information Systems (MIS) to integrated Enterprise Resource Planning (ERP) systems. The addition of Customer Relationship Management (CRM) capabilities, and more recently, migration into cloud-based business management platforms, marks this evolution. While IT investment correlates with organizational output, the maximum value is only realized through the effectiveness of the implementation process and the judicious selection of tools tailored to organizational reality.

