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.
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
- 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
{
"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.
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.
Cursor
{
"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
{
"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
{
"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
{
"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.