Koskamo

app-publish-mcp

A unified Model Context Protocol server that provides 91 tools for managing iOS and Android app store presence. It handles app listings, screenshots, releases, reviews, and submissions for both Apple App Store Connect and Google Play Console, allowing AI assistants to automate metadata updates, build submissions, and tester management without compiling the app or owning signing keys.

Package and access

Local package with source-attributed installation metadata. Koskamo does not execute packages during review.

app-publish-mcp logo, by mikusnuzCommunity listingLocal stdioSource reviewed; not executedPublished by mikusnuz
Vendor documentation

Checks and signals

Each line is separate evidence, not a trust score.

  • Popularity 39 GitHub stars

What you can do with it

  • Update app store descriptions and keywords
  • Upload new screenshots for specific device models
  • Submit new versions for review and check status
  • Manage TestFlight beta testers and in-app purchases

Source and maintenance

Community listingRegistry 0.7.0MIT
Last repository push
Latest release
v0.7.0
Maintenance checked

Packages and installation

Source-provided package data. Koskamo has not executed or live-probed this package.

app-publish-mcp 0.7.0

npm
app-publish-mcp package definition
{
  "version": "0.7.0",
  "transport": "stdio",
  "identifier": "app-publish-mcp",
  "registryType": "npm",
  "environmentVariables": [
    {
      "name": "APPLE_KEY_ID",
      "format": "string",
      "description": "Apple App Store Connect API Key ID"
    },
    {
      "name": "APPLE_KEY_TYPE",
      "format": "string",
      "description": "Apple API key type: TEAM (default) or INDIVIDUAL"
    },
    {
      "name": "APPLE_ISSUER_ID",
      "format": "string",
      "description": "Apple App Store Connect Issuer ID for TEAM keys"
    },
    {
      "name": "APPLE_P8_PATH",
      "format": "string",
      "description": "Path to Apple AuthKey .p8 file"
    },
    {
      "name": "GOOGLE_SERVICE_ACCOUNT_PATH",
      "format": "string",
      "description": "Path to Google Play service account JSON key file"
    },
    {
      "name": "GOOGLE_CLIENT_ID",
      "format": "string",
      "description": "Google Desktop OAuth client ID"
    },
    {
      "name": "GOOGLE_CLIENT_SECRET",
      "format": "string",
      "description": "Google Desktop OAuth client secret"
    },
    {
      "name": "GOOGLE_REFRESH_TOKEN",
      "format": "string",
      "description": "Google OAuth refresh token"
    },
    {
      "name": "APPLE_VENDOR_NUMBER",
      "format": "string",
      "description": "Apple vendor number for sales and finance reports"
    },
    {
      "name": "APP_PUBLISH_READ_ONLY",
      "format": "string",
      "description": "Set to true to register only read tools (list/get/search/query/download, no Google edit creation or deletion)"
    },
    {
      "name": "APPLE_REPORTS_KEY_ID",
      "format": "string",
      "description": "Extra Apple key ID for Sales/Finance/Analytics reports"
    },
    {
      "name": "APPLE_REPORTS_P8_PATH",
      "format": "string",
      "description": "Path to the reports key .p8 file"
    },
    {
      "name": "APPLE_ADMIN_KEY_ID",
      "format": "string",
      "description": "Admin key ID for analytics requests and finance/reporting fallback"
    },
    {
      "name": "APPLE_ADMIN_P8_PATH",
      "format": "string",
      "description": "Path to the Admin key .p8 file"
    },
    {
      "name": "APPLE_REPORTS_ISSUER_ID",
      "format": "string",
      "description": "Reports key issuer; defaults to APPLE_ISSUER_ID"
    },
    {
      "name": "APPLE_REPORTS_KEY_TYPE",
      "format": "string",
      "description": "Reports key type: TEAM or INDIVIDUAL; defaults to APPLE_KEY_TYPE"
    },
    {
      "name": "APPLE_ADMIN_ISSUER_ID",
      "format": "string",
      "description": "Admin key issuer; defaults to APPLE_ISSUER_ID"
    },
    {
      "name": "APPLE_ADMIN_KEY_TYPE",
      "format": "string",
      "description": "Admin key type: TEAM or INDIVIDUAL; defaults to APPLE_KEY_TYPE"
    }
  ]
}

Tools

Reported by the attributed source; not independently observed by Koskamo.

No tool definitions available.

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · repository · passed · metadata changed · updated
  • · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown

Connect from your client

Each snippet configures the same source-provided package; replace placeholders before use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Cursor

Merge this local stdio configuration, replace every placeholder environment value, and restart Cursor. Koskamo has not executed this package.
Cursor configuration
{
  "mcpServers": {
    "app-publish-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "app-publish-mcp@0.7.0"
      ],
      "env": {
        "APPLE_KEY_ID": "<YOUR_APPLE_KEY_ID>",
        "APPLE_KEY_TYPE": "<YOUR_APPLE_KEY_TYPE>",
        "APPLE_ISSUER_ID": "<YOUR_APPLE_ISSUER_ID>",
        "APPLE_P8_PATH": "<YOUR_APPLE_P8_PATH>",
        "GOOGLE_SERVICE_ACCOUNT_PATH": "<YOUR_GOOGLE_SERVICE_ACCOUNT_PATH>",
        "GOOGLE_CLIENT_ID": "<YOUR_GOOGLE_CLIENT_ID>",
        "GOOGLE_CLIENT_SECRET": "<YOUR_GOOGLE_CLIENT_SECRET>",
        "GOOGLE_REFRESH_TOKEN": "<YOUR_GOOGLE_REFRESH_TOKEN>",
        "APPLE_VENDOR_NUMBER": "<YOUR_APPLE_VENDOR_NUMBER>",
        "APP_PUBLISH_READ_ONLY": "<YOUR_APP_PUBLISH_READ_ONLY>",
        "APPLE_REPORTS_KEY_ID": "<YOUR_APPLE_REPORTS_KEY_ID>",
        "APPLE_REPORTS_P8_PATH": "<YOUR_APPLE_REPORTS_P8_PATH>",
        "APPLE_ADMIN_KEY_ID": "<YOUR_APPLE_ADMIN_KEY_ID>",
        "APPLE_ADMIN_P8_PATH": "<YOUR_APPLE_ADMIN_P8_PATH>",
        "APPLE_REPORTS_ISSUER_ID": "<YOUR_APPLE_REPORTS_ISSUER_ID>",
        "APPLE_REPORTS_KEY_TYPE": "<YOUR_APPLE_REPORTS_KEY_TYPE>",
        "APPLE_ADMIN_ISSUER_ID": "<YOUR_APPLE_ADMIN_ISSUER_ID>",
        "APPLE_ADMIN_KEY_TYPE": "<YOUR_APPLE_ADMIN_KEY_TYPE>"
      }
    }
  }
}

Cline

Merge this local stdio configuration, replace every placeholder environment value, and restart Cline. Koskamo has not executed this package.
Cline configuration
{
  "mcpServers": {
    "app-publish-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "app-publish-mcp@0.7.0"
      ],
      "env": {
        "APPLE_KEY_ID": "<YOUR_APPLE_KEY_ID>",
        "APPLE_KEY_TYPE": "<YOUR_APPLE_KEY_TYPE>",
        "APPLE_ISSUER_ID": "<YOUR_APPLE_ISSUER_ID>",
        "APPLE_P8_PATH": "<YOUR_APPLE_P8_PATH>",
        "GOOGLE_SERVICE_ACCOUNT_PATH": "<YOUR_GOOGLE_SERVICE_ACCOUNT_PATH>",
        "GOOGLE_CLIENT_ID": "<YOUR_GOOGLE_CLIENT_ID>",
        "GOOGLE_CLIENT_SECRET": "<YOUR_GOOGLE_CLIENT_SECRET>",
        "GOOGLE_REFRESH_TOKEN": "<YOUR_GOOGLE_REFRESH_TOKEN>",
        "APPLE_VENDOR_NUMBER": "<YOUR_APPLE_VENDOR_NUMBER>",
        "APP_PUBLISH_READ_ONLY": "<YOUR_APP_PUBLISH_READ_ONLY>",
        "APPLE_REPORTS_KEY_ID": "<YOUR_APPLE_REPORTS_KEY_ID>",
        "APPLE_REPORTS_P8_PATH": "<YOUR_APPLE_REPORTS_P8_PATH>",
        "APPLE_ADMIN_KEY_ID": "<YOUR_APPLE_ADMIN_KEY_ID>",
        "APPLE_ADMIN_P8_PATH": "<YOUR_APPLE_ADMIN_P8_PATH>",
        "APPLE_REPORTS_ISSUER_ID": "<YOUR_APPLE_REPORTS_ISSUER_ID>",
        "APPLE_REPORTS_KEY_TYPE": "<YOUR_APPLE_REPORTS_KEY_TYPE>",
        "APPLE_ADMIN_ISSUER_ID": "<YOUR_APPLE_ADMIN_ISSUER_ID>",
        "APPLE_ADMIN_KEY_TYPE": "<YOUR_APPLE_ADMIN_KEY_TYPE>"
      }
    }
  }
}

VS Code

Merge this local stdio configuration, replace every placeholder environment value, and restart VS Code. Koskamo has not executed this package.
VS Code configuration
{
  "servers": {
    "app-publish-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "app-publish-mcp@0.7.0"
      ],
      "env": {
        "APPLE_KEY_ID": "<YOUR_APPLE_KEY_ID>",
        "APPLE_KEY_TYPE": "<YOUR_APPLE_KEY_TYPE>",
        "APPLE_ISSUER_ID": "<YOUR_APPLE_ISSUER_ID>",
        "APPLE_P8_PATH": "<YOUR_APPLE_P8_PATH>",
        "GOOGLE_SERVICE_ACCOUNT_PATH": "<YOUR_GOOGLE_SERVICE_ACCOUNT_PATH>",
        "GOOGLE_CLIENT_ID": "<YOUR_GOOGLE_CLIENT_ID>",
        "GOOGLE_CLIENT_SECRET": "<YOUR_GOOGLE_CLIENT_SECRET>",
        "GOOGLE_REFRESH_TOKEN": "<YOUR_GOOGLE_REFRESH_TOKEN>",
        "APPLE_VENDOR_NUMBER": "<YOUR_APPLE_VENDOR_NUMBER>",
        "APP_PUBLISH_READ_ONLY": "<YOUR_APP_PUBLISH_READ_ONLY>",
        "APPLE_REPORTS_KEY_ID": "<YOUR_APPLE_REPORTS_KEY_ID>",
        "APPLE_REPORTS_P8_PATH": "<YOUR_APPLE_REPORTS_P8_PATH>",
        "APPLE_ADMIN_KEY_ID": "<YOUR_APPLE_ADMIN_KEY_ID>",
        "APPLE_ADMIN_P8_PATH": "<YOUR_APPLE_ADMIN_P8_PATH>",
        "APPLE_REPORTS_ISSUER_ID": "<YOUR_APPLE_REPORTS_ISSUER_ID>",
        "APPLE_REPORTS_KEY_TYPE": "<YOUR_APPLE_REPORTS_KEY_TYPE>",
        "APPLE_ADMIN_ISSUER_ID": "<YOUR_APPLE_ADMIN_ISSUER_ID>",
        "APPLE_ADMIN_KEY_TYPE": "<YOUR_APPLE_ADMIN_KEY_TYPE>"
      }
    }
  }
}

Claude Desktop

Merge this local stdio configuration, replace every placeholder environment value, and restart Claude Desktop. Koskamo has not executed this package.
Claude Desktop configuration
{
  "mcpServers": {
    "app-publish-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "app-publish-mcp@0.7.0"
      ],
      "env": {
        "APPLE_KEY_ID": "<YOUR_APPLE_KEY_ID>",
        "APPLE_KEY_TYPE": "<YOUR_APPLE_KEY_TYPE>",
        "APPLE_ISSUER_ID": "<YOUR_APPLE_ISSUER_ID>",
        "APPLE_P8_PATH": "<YOUR_APPLE_P8_PATH>",
        "GOOGLE_SERVICE_ACCOUNT_PATH": "<YOUR_GOOGLE_SERVICE_ACCOUNT_PATH>",
        "GOOGLE_CLIENT_ID": "<YOUR_GOOGLE_CLIENT_ID>",
        "GOOGLE_CLIENT_SECRET": "<YOUR_GOOGLE_CLIENT_SECRET>",
        "GOOGLE_REFRESH_TOKEN": "<YOUR_GOOGLE_REFRESH_TOKEN>",
        "APPLE_VENDOR_NUMBER": "<YOUR_APPLE_VENDOR_NUMBER>",
        "APP_PUBLISH_READ_ONLY": "<YOUR_APP_PUBLISH_READ_ONLY>",
        "APPLE_REPORTS_KEY_ID": "<YOUR_APPLE_REPORTS_KEY_ID>",
        "APPLE_REPORTS_P8_PATH": "<YOUR_APPLE_REPORTS_P8_PATH>",
        "APPLE_ADMIN_KEY_ID": "<YOUR_APPLE_ADMIN_KEY_ID>",
        "APPLE_ADMIN_P8_PATH": "<YOUR_APPLE_ADMIN_P8_PATH>",
        "APPLE_REPORTS_ISSUER_ID": "<YOUR_APPLE_REPORTS_ISSUER_ID>",
        "APPLE_REPORTS_KEY_TYPE": "<YOUR_APPLE_REPORTS_KEY_TYPE>",
        "APPLE_ADMIN_ISSUER_ID": "<YOUR_APPLE_ADMIN_ISSUER_ID>",
        "APPLE_ADMIN_KEY_TYPE": "<YOUR_APPLE_ADMIN_KEY_TYPE>"
      }
    }
  }
}

Let your agent find its tools

Find servers like app-publish-mcp from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.