# Apple Ads

Pulls Apple Ads campaigns and performance into your MCP client. Writes are drafted first and applied only after you confirm.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI
- Author: get-mcp-ads
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/get-mcp-ads/apple-ads-mcp-server
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/get-mcp-ads-apple-ads

## What it does

The server talks to Apple Ads Platform API v1 over OAuth 2 client credentials. You get 9 read tools and 11 write tools, the latter switched off unless asked for. Requests go straight to Apple, no gateway in between.

Signing happens locally: an EC P-256 key is loaded from the environment at startup and held in memory. The runtime requirement is Node.js 22.23.4, 24.22.1 or 26.12.1 or newer; an older one triggers a stderr warning. Set `APPLE_ADS_AD_ACCOUNT_IDS` with 1 to 200 account IDs, because every call is scoped to that allowlist. Without the key material and a valid account list the server returns nothing useful.

Writes always surface as a preview, updates are bound to a snapshot, and created entities start paused. `apple_ads_list_ad_accounts` replaces hosted account selection and returns only what you configured. Check that list before flipping `APPLE_ADS_ENABLE_WRITES` to `true`.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `APPLE_ADS_CLIENT_ID`, `APPLE_ADS_TEAM_ID`, `APPLE_ADS_KEY_ID`, `APPLE_ADS_PRIVATE_KEY`, `APPLE_ADS_PRIVATE_KEY_PATH`, `APPLE_ADS_AD_ACCOUNT_IDS`, `APPLE_ADS_ENABLE_WRITES` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add apple-ads -e APPLE_ADS_CLIENT_ID=<APPLE_ADS_CLIENT_ID> -e APPLE_ADS_TEAM_ID=<APPLE_ADS_TEAM_ID> -e APPLE_ADS_KEY_ID=<APPLE_ADS_KEY_ID> -e APPLE_ADS_PRIVATE_KEY=<APPLE_ADS_PRIVATE_KEY> -e APPLE_ADS_AD_ACCOUNT_IDS=<APPLE_ADS_AD_ACCOUNT_IDS> -- npx -y @getmcpads/apple-ads-mcp-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add get-mcp-ads-apple-ads --env APPLE_ADS_CLIENT_ID=<APPLE_ADS_CLIENT_ID> --env APPLE_ADS_TEAM_ID=<APPLE_ADS_TEAM_ID> --env APPLE_ADS_KEY_ID=<APPLE_ADS_KEY_ID> --env APPLE_ADS_PRIVATE_KEY=<APPLE_ADS_PRIVATE_KEY> --env APPLE_ADS_PRIVATE_KEY_PATH=<APPLE_ADS_PRIVATE_KEY_PATH> -- npx -y @getmcpads/apple-ads-mcp-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "get-mcp-ads-apple-ads": {
            "command": "npx",
            "args": [
                "-y",
                "@getmcpads/apple-ads-mcp-server"
            ],
            "env": {
                "APPLE_ADS_CLIENT_ID": "<APPLE_ADS_CLIENT_ID>",
                "APPLE_ADS_TEAM_ID": "<APPLE_ADS_TEAM_ID>",
                "APPLE_ADS_KEY_ID": "<APPLE_ADS_KEY_ID>",
                "APPLE_ADS_PRIVATE_KEY": "<APPLE_ADS_PRIVATE_KEY>",
                "APPLE_ADS_PRIVATE_KEY_PATH": "<APPLE_ADS_PRIVATE_KEY_PATH>"
            }
        }
    }
}
```
Replace <…> with your own values. 2 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "get-mcp-ads-apple-ads": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "@getmcpads/apple-ads-mcp-server"
            ],
            "env": {
                "APPLE_ADS_CLIENT_ID": "<APPLE_ADS_CLIENT_ID>",
                "APPLE_ADS_TEAM_ID": "<APPLE_ADS_TEAM_ID>",
                "APPLE_ADS_KEY_ID": "<APPLE_ADS_KEY_ID>",
                "APPLE_ADS_PRIVATE_KEY": "<APPLE_ADS_PRIVATE_KEY>",
                "APPLE_ADS_PRIVATE_KEY_PATH": "<APPLE_ADS_PRIVATE_KEY_PATH>"
            }
        }
    }
}
```
Replace <…> with your own values. 2 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e APPLE_ADS_CLIENT_ID=<APPLE_ADS_CLIENT_ID> -e APPLE_ADS_TEAM_ID=<APPLE_ADS_TEAM_ID> -e APPLE_ADS_KEY_ID=<APPLE_ADS_KEY_ID> -e APPLE_ADS_PRIVATE_KEY=<APPLE_ADS_PRIVATE_KEY> -e APPLE_ADS_PRIVATE_KEY_PATH=<APPLE_ADS_PRIVATE_KEY_PATH> get-mcp-ads-apple-ads npx -y @getmcpads/apple-ads-mcp-server
```
Replace <…> with your own values. 2 more environment variables are in the server README

## When to use it
- see App Store campaigns and metrics without opening the web UI
- draft a bid change and inspect the preview before it lands
- create a campaign or ad group in paused state
- restrict agent access to a named set of ad accounts
- check which ad accounts this connection can reach

## Example prompts
- Show the campaigns in my account and their spend for last week
- Draft a lower bid on this ad group and show the preview without applying it
- List the ad accounts you have access to

## Similar
- [labelhead-artist-momentum](https://affpapa.org/en/nevibecode/mcp/labelhead-artist-momentum.md) — MCP server · ★ 107701
- [openshorts](https://affpapa.org/en/nevibecode/mcp/openshorts.md) — MCP server · ★ 7132
- [OpenScreen](https://affpapa.org/en/nevibecode/mcp/openscreen.md) — MCP server · ★ 4963
- [Usertour MCP Server](https://affpapa.org/en/nevibecode/mcp/usertour-mcp-server.md) — MCP server · ★ 2329
- [Appllama](https://affpapa.org/en/nevibecode/mcp/appllama.md) — MCP server · ★ 3228
- [obsei](https://affpapa.org/en/nevibecode/mcp/obsei.md) — MCP server · ★ 1441

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
