App Store release pilot MCP server — version bump, archive + TestFlight upload, metadata, review submission. The MCP server that actually ships your binary.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add appstore-release --env APPLE_KEY_ID='<APPLE_KEY_ID>' --env APPLE_ISSUER_ID='<APPLE_ISSUER_ID>' --env APPLE_KEY_CONTENT='<APPLE_KEY_CONTENT>' --env ASC_BUNDLE_ID='<ASC_BUNDLE_ID>' -- npx -y appstore-release-mcp~/.codex/config.toml
[mcp_servers.appstore-release]
command = "npx"
args = ["-y", "appstore-release-mcp"]
env = { APPLE_KEY_ID = "<APPLE_KEY_ID>", APPLE_ISSUER_ID = "<APPLE_ISSUER_ID>", APPLE_KEY_CONTENT = "<APPLE_KEY_CONTENT>", ASC_BUNDLE_ID = "<ASC_BUNDLE_ID>" }
# codex mcp add appstore-release --env APPLE_KEY_ID='<APPLE_KEY_ID>' --env APPLE_ISSUER_ID='<APPLE_ISSUER_ID>' --env APPLE_KEY_CONTENT='<APPLE_KEY_CONTENT>' --env ASC_BUNDLE_ID='<ASC_BUNDLE_ID>' -- npx -y appstore-release-mcp~/.cursor/mcp.json
{
"mcpServers": {
"appstore-release": {
"command": "npx",
"args": [
"-y",
"appstore-release-mcp"
],
"env": {
"APPLE_KEY_ID": "<APPLE_KEY_ID>",
"APPLE_ISSUER_ID": "<APPLE_ISSUER_ID>",
"APPLE_KEY_CONTENT": "<APPLE_KEY_CONTENT>",
"ASC_BUNDLE_ID": "<ASC_BUNDLE_ID>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"appstore-release": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"appstore-release-mcp"
],
"env": {
"APPLE_KEY_ID": "<APPLE_KEY_ID>",
"APPLE_ISSUER_ID": "<APPLE_ISSUER_ID>",
"APPLE_KEY_CONTENT": "<APPLE_KEY_CONTENT>",
"ASC_BUNDLE_ID": "<ASC_BUNDLE_ID>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"appstore-release": {
"command": "npx",
"args": [
"-y",
"appstore-release-mcp"
],
"env": {
"APPLE_KEY_ID": "<APPLE_KEY_ID>",
"APPLE_ISSUER_ID": "<APPLE_ISSUER_ID>",
"APPLE_KEY_CONTENT": "<APPLE_KEY_CONTENT>",
"ASC_BUNDLE_ID": "<ASC_BUNDLE_ID>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"appstore-release": {
"command": "npx",
"args": [
"-y",
"appstore-release-mcp"
],
"env": {
"APPLE_KEY_ID": "<APPLE_KEY_ID>",
"APPLE_ISSUER_ID": "<APPLE_ISSUER_ID>",
"APPLE_KEY_CONTENT": "<APPLE_KEY_CONTENT>",
"ASC_BUNDLE_ID": "<ASC_BUNDLE_ID>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"appstore-release": {
"command": "npx",
"args": [
"-y",
"appstore-release-mcp"
],
"env": {
"APPLE_KEY_ID": "<APPLE_KEY_ID>",
"APPLE_ISSUER_ID": "<APPLE_ISSUER_ID>",
"APPLE_KEY_CONTENT": "<APPLE_KEY_CONTENT>",
"ASC_BUNDLE_ID": "<ASC_BUNDLE_ID>"
}
}
}
}Environment variables
APPLE_KEY_IDAPPLE_ISSUER_IDAPPLE_KEY_CONTENTASC_BUNDLE_ID
Replace the placeholders with your own credentials and keep them out of version control.