MCP server for App Store Connect — apps, TestFlight, reviews, users, sales. Built on @chrischall/mcp-utils.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add app-store-connect-chrischall --env APP_STORE_CONNECT_KEY_ID='<APP_STORE_CONNECT_KEY_ID>' --env APP_STORE_CONNECT_ISSUER_ID='<APP_STORE_CONNECT_ISSUER_ID>' --env APP_STORE_CONNECT_PRIVATE_KEY_PATH='<APP_STORE_CONNECT_PRIVATE_KEY_PATH>' --env APP_STORE_CONNECT_PRIVATE_KEY='<APP_STORE_CONNECT_PRIVATE_KEY>' -- npx -y @chrischall/app-store-connect-mcp~/.codex/config.toml
[mcp_servers.app-store-connect-chrischall]
command = "npx"
args = ["-y", "@chrischall/app-store-connect-mcp"]
env = { APP_STORE_CONNECT_KEY_ID = "<APP_STORE_CONNECT_KEY_ID>", APP_STORE_CONNECT_ISSUER_ID = "<APP_STORE_CONNECT_ISSUER_ID>", APP_STORE_CONNECT_PRIVATE_KEY_PATH = "<APP_STORE_CONNECT_PRIVATE_KEY_PATH>", APP_STORE_CONNECT_PRIVATE_KEY = "<APP_STORE_CONNECT_PRIVATE_KEY>" }
# codex mcp add app-store-connect-chrischall --env APP_STORE_CONNECT_KEY_ID='<APP_STORE_CONNECT_KEY_ID>' --env APP_STORE_CONNECT_ISSUER_ID='<APP_STORE_CONNECT_ISSUER_ID>' --env APP_STORE_CONNECT_PRIVATE_KEY_PATH='<APP_STORE_CONNECT_PRIVATE_KEY_PATH>' --env APP_STORE_CONNECT_PRIVATE_KEY='<APP_STORE_CONNECT_PRIVATE_KEY>' -- npx -y @chrischall/app-store-connect-mcp~/.cursor/mcp.json
{
"mcpServers": {
"app-store-connect-chrischall": {
"command": "npx",
"args": [
"-y",
"@chrischall/app-store-connect-mcp"
],
"env": {
"APP_STORE_CONNECT_KEY_ID": "<APP_STORE_CONNECT_KEY_ID>",
"APP_STORE_CONNECT_ISSUER_ID": "<APP_STORE_CONNECT_ISSUER_ID>",
"APP_STORE_CONNECT_PRIVATE_KEY_PATH": "<APP_STORE_CONNECT_PRIVATE_KEY_PATH>",
"APP_STORE_CONNECT_PRIVATE_KEY": "<APP_STORE_CONNECT_PRIVATE_KEY>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"app-store-connect-chrischall": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@chrischall/app-store-connect-mcp"
],
"env": {
"APP_STORE_CONNECT_KEY_ID": "<APP_STORE_CONNECT_KEY_ID>",
"APP_STORE_CONNECT_ISSUER_ID": "<APP_STORE_CONNECT_ISSUER_ID>",
"APP_STORE_CONNECT_PRIVATE_KEY_PATH": "<APP_STORE_CONNECT_PRIVATE_KEY_PATH>",
"APP_STORE_CONNECT_PRIVATE_KEY": "<APP_STORE_CONNECT_PRIVATE_KEY>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"app-store-connect-chrischall": {
"command": "npx",
"args": [
"-y",
"@chrischall/app-store-connect-mcp"
],
"env": {
"APP_STORE_CONNECT_KEY_ID": "<APP_STORE_CONNECT_KEY_ID>",
"APP_STORE_CONNECT_ISSUER_ID": "<APP_STORE_CONNECT_ISSUER_ID>",
"APP_STORE_CONNECT_PRIVATE_KEY_PATH": "<APP_STORE_CONNECT_PRIVATE_KEY_PATH>",
"APP_STORE_CONNECT_PRIVATE_KEY": "<APP_STORE_CONNECT_PRIVATE_KEY>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"app-store-connect-chrischall": {
"command": "npx",
"args": [
"-y",
"@chrischall/app-store-connect-mcp"
],
"env": {
"APP_STORE_CONNECT_KEY_ID": "<APP_STORE_CONNECT_KEY_ID>",
"APP_STORE_CONNECT_ISSUER_ID": "<APP_STORE_CONNECT_ISSUER_ID>",
"APP_STORE_CONNECT_PRIVATE_KEY_PATH": "<APP_STORE_CONNECT_PRIVATE_KEY_PATH>",
"APP_STORE_CONNECT_PRIVATE_KEY": "<APP_STORE_CONNECT_PRIVATE_KEY>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"app-store-connect-chrischall": {
"command": "npx",
"args": [
"-y",
"@chrischall/app-store-connect-mcp"
],
"env": {
"APP_STORE_CONNECT_KEY_ID": "<APP_STORE_CONNECT_KEY_ID>",
"APP_STORE_CONNECT_ISSUER_ID": "<APP_STORE_CONNECT_ISSUER_ID>",
"APP_STORE_CONNECT_PRIVATE_KEY_PATH": "<APP_STORE_CONNECT_PRIVATE_KEY_PATH>",
"APP_STORE_CONNECT_PRIVATE_KEY": "<APP_STORE_CONNECT_PRIVATE_KEY>"
}
}
}
}Environment variables
APP_STORE_CONNECT_KEY_IDAPP_STORE_CONNECT_ISSUER_IDAPP_STORE_CONNECT_PRIVATE_KEY_PATHAPP_STORE_CONNECT_PRIVATE_KEY
Replace the placeholders with your own credentials and keep them out of version control.