Skip to main content
Glama

App Store Connect MCP Server

by z0rgoyok

App Store Connect MCP Server

MCP (Model Context Protocol) server for working with App Store Connect API. This server provides a set of tools for interacting with App Store Connect through MCP-compatible clients like Claude Desktop, Cline, and other MCP clients.

Features

  • JWT-based authentication with App Store Connect API
  • Retrieving apps and app details
  • Getting app information (ratings, states, metadata)
  • Managing app store versions (create, read, update)
  • Getting build information for apps
  • Platform support for iOS, macOS, and tvOS apps

Installation

npm install

Configuration

To work with the App Store Connect API, you will need:

  1. API Key ID - API key identifier
  2. Issuer ID - issuer identifier
  3. Private Key - private key in PEM format

Getting API Keys

  1. Log in to App Store Connect
  2. Go to "Users and Access" section
  3. Select "Keys" tab
  4. Click "Generate API Key"
  5. Download the key file (.p8)

Configuration Options

You can configure the API credentials in two ways:

Create a .env file in the project root:

APPSTORE_CONNECT_KEY_ID=your-key-id APPSTORE_CONNECT_ISSUER_ID=your-issuer-id APPSTORE_CONNECT_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"

You can also copy the example file:

cp env-example.txt .env

You can specify credentials directly in your MCP client configuration (e.g., mcp.json for Claude Desktop). This approach is more secure as it keeps credentials in the client configuration rather than in the server codebase.

Usage

Building the Server

npm run build

Running the Server

# Development mode npm run dev # Production mode npm start

Using with MCP Clients

This server implements the Model Context Protocol (MCP) and can be used with any MCP-compatible client.

Claude Desktop Integration

Option A: Using MCP configuration with credentials (recommended)

Add to your Claude Desktop configuration (~/.cursor/mcp.json or similar):

{ "mcpServers": { "appstore-connect": { "command": "node", "args": ["path/to/appstore-connect-mcp/build/server.js"], "env": { "APPSTORE_CONNECT_KEY_ID": "your-key-id", "APPSTORE_CONNECT_ISSUER_ID": "your-issuer-id", "APPSTORE_CONNECT_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\nyour-private-key-content\n-----END PRIVATE KEY-----" } } } }

Option B: Using environment variables

Add to your Claude Desktop configuration:

{ "mcpServers": { "appstore-connect": { "command": "node", "args": ["path/to/appstore-connect-mcp/build/server.js"] } } }

Make sure you have a .env file in the server directory with your credentials.

Cline Integration

Option A: Using MCP configuration with credentials

Add to your Cline MCP configuration:

{ "mcpServers": { "appstore-connect": { "command": "node", "args": ["path/to/appstore-connect-mcp/build/server.js"], "env": { "APPSTORE_CONNECT_KEY_ID": "your-key-id", "APPSTORE_CONNECT_ISSUER_ID": "your-issuer-id", "APPSTORE_CONNECT_PRIVATE_KEY": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----" } } } }

Option B: Using environment variables

Add to your Cline MCP configuration:

{ "mcpServers": { "appstore-connect": { "command": "node", "args": ["path/to/appstore-connect-mcp/build/server.js"] } } }

Available Tools

Once connected to an MCP client, you can use the following tools:

1. appstore_connect_init

Initialize App Store Connect client with authentication credentials

Parameters:

  • keyId (optional): API key ID
  • issuerId (optional): Issuer ID
  • privateKey (optional): Private key in PEM format
  • baseUrl (optional): Base URL for API
2. appstore_connect_init_from_env

Initialize client from environment variables

Parameters: None

3. appstore_connect_get_env_config

Get current environment configuration (for debugging)

Parameters: None

Returns: Current configuration status showing which environment variables are set (private key is redacted for security)

4. appstore_connect_get_apps

Get list of apps

Parameters:

  • limit (optional): Maximum number of apps (1-200)
  • fields (optional): Array of fields to include
  • include (optional): Array of related resources to include
  • sort (optional): Sort order
5. appstore_connect_get_app

Get information about a specific app

Parameters:

  • appId (required): App ID to retrieve
  • fields (optional): Array of fields to include
  • include (optional): Array of related resources to include
6. appstore_connect_get_app_store_versions

Get app versions

Parameters:

  • appId (required): App ID to get versions for
  • limit (optional): Maximum number of versions (1-200)
  • fields (optional): Array of fields to include
  • include (optional): Array of related resources to include
  • filter (optional): Filter criteria
7. appstore_connect_get_builds

Get builds for a specific app

Parameters:

  • appId (required): App ID to get builds for
  • limit (optional): Maximum number of builds (1-200)
  • fields (optional): Array of fields to include
  • include (optional): Array of related resources to include
  • filter (optional): Filter criteria
8. appstore_connect_get_app_info

Get app info for a specific app

Parameters:

  • appId (required): App ID to get info for
  • fields (optional): Array of fields to include
  • include (optional): Array of related resources to include
9. appstore_connect_create_app_store_version

Create a new app store version

Parameters:

  • appId (required): App ID to create version for
  • versionString (required): Version string (e.g., "1.0.0")
  • platform (required): Platform (IOS, MAC_OS, TV_OS)
  • copyright (optional): Copyright information
  • reviewType (optional): Review type (STANDARD, EXPEDITED)
  • releaseType (optional): Release type (AFTER_APPROVAL, MANUAL)
  • earliestReleaseDate (optional): Earliest release date (ISO 8601)
10. appstore_connect_update_app_store_version

Update an existing app store version

Parameters:

  • versionId (required): Version ID to update
  • versionString (optional): Version string (e.g., "1.0.0")
  • copyright (optional): Copyright information
  • reviewType (optional): Review type (STANDARD, EXPEDITED)
  • releaseType (optional): Release type (AFTER_APPROVAL, MANUAL)
  • earliestReleaseDate (optional): Earliest release date (ISO 8601)

App Store Version Localizations

11. appstore_connect_get_app_store_version_localizations

Get localizations for a specific app store version

Parameters:

  • versionId (required): Version ID to get localizations for
  • limit (optional): Maximum number of localizations (1-200)
  • fields (optional): Array of fields to include
  • include (optional): Array of related resources to include
  • filter (optional): Filter criteria
12. appstore_connect_get_app_store_version_localization

Get a specific app store version localization

Parameters:

  • localizationId (required): Localization ID to retrieve
  • fields (optional): Array of fields to include
  • include (optional): Array of related resources to include
13. appstore_connect_create_app_store_version_localization

Create a new app store version localization

Parameters:

  • versionId (required): Version ID to create localization for
  • locale (required): Locale code (e.g., "en-US", "ru", "zh-CN")
  • description (optional): App description for this locale (max 4000 characters)
  • keywords (optional): Keywords for this locale (max 100 bytes)
  • marketingUrl (optional): Marketing URL for this locale
  • promotionalText (optional): Promotional text for this locale (max 170 characters)
  • supportUrl (optional): Support URL for this locale
  • whatsNew (optional): What's new text for this locale (max 4000 characters)
14. appstore_connect_update_app_store_version_localization

Update an existing app store version localization

Parameters:

  • localizationId (required): Localization ID to update
  • description (optional): App description for this locale (max 4000 characters)
  • keywords (optional): Keywords for this locale (max 100 bytes)
  • marketingUrl (optional): Marketing URL for this locale
  • promotionalText (optional): Promotional text for this locale (max 170 characters)
  • supportUrl (optional): Support URL for this locale
  • whatsNew (optional): What's new text for this locale (max 4000 characters)
15. appstore_connect_delete_app_store_version_localization

Delete an app store version localization

Parameters:

  • localizationId (required): Localization ID to delete

What's New Features

The new localization tools enable you to:

🌍 Multi-language Support

  • Create and manage localizations for different markets
  • Update app descriptions, keywords, and promotional text for specific locales
  • Maintain consistent messaging across all supported languages

📝 What's New Management

  • Update "What's New" text for each app version and locale
  • Communicate new features and improvements to users in their language
  • Keep release notes current and engaging

🎯 Marketing Optimization

  • Customize promotional text for different markets
  • Optimize keywords for local App Store search
  • Manage marketing and support URLs per locale

🔄 Automated Workflows

  • Bulk update localizations across multiple locales
  • Automate release note updates as part of your CI/CD pipeline
  • Maintain localization consistency across app versions

Usage Examples

Update What's New for Multiple Locales

// Get current version localizations const localizations = await tools.getAppStoreVersionLocalizations({ versionId: "version-id-here" }); // Update What's New for English await tools.updateAppStoreVersionLocalization({ localizationId: "en-localization-id", whatsNew: "• New feature: Dark mode support\n• Bug fixes and performance improvements\n• Enhanced user interface" }); // Update What's New for Russian await tools.updateAppStoreVersionLocalization({ localizationId: "ru-localization-id", whatsNew: "• Новая функция: поддержка темного режима\n• Исправления ошибок и улучшения производительности\n• Улучшенный пользовательский интерфейс" });

Create New Localization

// Create German localization await tools.createAppStoreVersionLocalization({ versionId: "version-id-here", locale: "de-DE", description: "Eine großartige App für...", keywords: "produktivität, organisation, aufgaben", whatsNew: "Neue Funktionen und Verbesserungen", promotionalText: "Jetzt mit neuen Features!" });

Development

Running Tests

npm test

Running Example

npm run example

Debugging with MCP Inspector

MCP Inspector is a special tool for debugging MCP servers:

# First build the project npm run build # Automatic launch (recommended) npm run debug-auto # Or manual setup npm run debug # In browser: Command: node, Arguments: build/server.js

Automatic mode:

  • ✅ Connects to server immediately
  • ✅ No manual setup required
  • ✅ Uses authentication token

Manual mode:

  • 🔧 Requires setup in interface
  • 📋 Command: node
  • 📋 Arguments: build/server.js

After launch:

  1. 🔧 Test tools through web interface
  2. 📊 View request and response logs
  3. 🐛 Debug errors in real time

Tip: Port may be different on each launch. Use npm run open-inspector for automatic search.

Project Structure

src/ ├── server.ts # Main MCP server ├── client.ts # HTTP client for App Store Connect API ├── auth.ts # Authentication and JWT tokens ├── tools.ts # MCP tools └── types.ts # TypeScript types

Development Commands

# Build the project npm run build # Run in development mode npm run dev # Run usage example npm run example # Run tests npm test # Lint code npm run lint # Debug with MCP Inspector npm run debug-auto

License

MIT

Security

⚠️ Important: Never commit your API keys to version control. Use environment variables or configuration files to store sensitive information.

Configuration Security Recommendations

For Development:

  • Use .env files for local development
  • Add .env to your .gitignore file
  • Use environment variables for CI/CD pipelines

For Production:

  • Prefer MCP client configuration (Option A) over environment variables
  • Store credentials in secure configuration management systems
  • Use least-privilege API keys with minimal required permissions
  • Regularly rotate API keys

Private Key Format:

  • Ensure your private key includes proper line breaks (\n)
  • The authentication system automatically handles both literal \n strings and actual line breaks

Support

If you have questions or issues, create an issue in the project repository.

-
security - not tested
F
license - not found
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

A server implementing Model Context Protocol for interacting with the App Store Connect API, enabling management of iOS, macOS, and tvOS apps through MCP-compatible clients like Claude Desktop and Cline.

  1. Features
    1. Installation
      1. Configuration
        1. Getting API Keys
        2. Configuration Options
      2. Usage
        1. Building the Server
        2. Running the Server
        3. Using with MCP Clients
        4. Available Tools
        5. App Store Version Localizations
      3. What's New Features
        1. 🌍 Multi-language Support
        2. 📝 What's New Management
        3. 🎯 Marketing Optimization
        4. 🔄 Automated Workflows
      4. Usage Examples
        1. Update What's New for Multiple Locales
        2. Create New Localization
      5. Development
        1. Running Tests
        2. Running Example
        3. Debugging with MCP Inspector
      6. Project Structure
        1. Development Commands
          1. License
            1. Security
              1. Configuration Security Recommendations
            2. Support

              Related MCP Servers

              • -
                security
                F
                license
                -
                quality
                A Model Context Protocol server that provides a comprehensive interface for interacting with the ConnectWise Manage API, simplifying API discovery, execution, and management for both developers and AI assistants.
                Last updated -
                46
                2
                Python
                • Linux
                • Apple
              • A
                security
                A
                license
                A
                quality
                A Model Context Protocol server that provides tools for Xcode-related operations, making it easier to work with iOS project management, building, testing, archiving, and deploying apps to both simulators and physical devices.
                Last updated -
                9
                43
                JavaScript
                MIT License
                • Apple
              • A
                security
                A
                license
                A
                quality
                A Model Context Protocol server that enables running AppleScript code to interact with Mac applications and system features including Notes, Calendar, Contacts, Messages, file management, and more.
                Last updated -
                1
                448
                171
                JavaScript
                MIT License
                • Apple

              View all related MCP servers

              MCP directory API

              We provide all the information about MCP servers via our MCP API.

              curl -X GET 'https://glama.ai/api/mcp/v1/servers/z0rgoyok/appstore-connect-mcp'

              If you have feedback or need assistance with the MCP directory API, please join our Discord server