Apple Ads MCP Server
Provides tools for interacting with the Apple Ads Platform API v1, enabling campaign and ad group management, keyword and bid/budget changes, reporting, search term insights, recommendations, budget orders, and Apple Maps ad assets.
Supports App Store advertising workflows, including querying App Store campaigns, apps, creatives, keywords, search terms, and performance reports through Apple Ads.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Apple Ads MCP Server (read + write)
An MCP server for Apple Ads, built on the Apple Ads Platform API v1. Use it from Claude, ChatGPT, Cursor, Codex or any MCP client to report on App Store and Apple Maps campaigns, find search terms, keyword ideas and impression share, and change budgets, bids, keywords and ads.
Maintained by AI Shopping Feeds. It offers:
nearly every Platform API v1 endpoint: campaigns, ad groups, keywords and negative keywords, ads and creatives, reports, impression share, search term popularity, recommendations, budget orders, Apple Maps and change history
spend safety: dry-run, confirm words for deletes and bulk changes, a limit on budget and bid rises, paused new campaigns and an audit log
every other endpoint through a generic
apple_ads_requesttoolthe current API: Apple switches off the older Campaign Management API v5 on 26 January 2027
Not affiliated with or endorsed by Apple.
Part of the AI Shopping Feeds MCP family: Google Ads · Google Merchant Centre · Google Analytics · YouTube Studio · Amazon Ads · Apple Ads · Microsoft Ads · TikTok Ads · Pinterest Ads · Snapchat Ads · OpenAI Ads · AppLovin.
Let your agent set it up
Paste this into Claude Code, Codex, Cursor or any agent that can read web pages and edit files:
Set up the Apple Ads MCP server for me by following https://raw.githubusercontent.com/AI-Shopping-Feeds/apple-ads-mcp/main/skills/apple-ads-mcp/SKILL.mdThe agent checks whether it's already connected, installs the runner if you
agree, walks you through the Apple Ads API user, key pair and IDs, adds the server to your
client's config without touching your other servers, and checks it works by
calling apple_ads_health_check.
The same file is an Agent Skill, so your agent can keep it as a guide to using the tools well. For Claude Code, copy the folder into your skills:
git clone --depth 1 https://github.com/AI-Shopping-Feeds/apple-ads-mcp.git /tmp/apple-ads-mcp
cp -r /tmp/apple-ads-mcp/skills/apple-ads-mcp ~/.claude/skills/Other agents that support skills load the same skills/apple-ads-mcp folder from their own skills directory.
Related MCP server: Apple Ads MCP
What it can do
89 tools, all prefixed apple_ads_. The full list is in docs/tools.md.
Read
Area | Tools |
Accounts |
|
Apps |
|
Structure |
|
Reports |
|
Insights and ideas |
|
More | budget orders, Apple Maps brands, locations and assets, |
Server |
|
Write
Area | Tools |
Campaigns |
|
Ad groups |
|
Keywords |
|
Ads and creatives |
|
Recommendations |
|
Budget orders and Apple Maps |
|
Any endpoint |
|
Safety
Dry-run (
APPLE_ADS_DRY_RUN=trueorapple_ads_set_dry_run) previews and logs writes without sending them. Reads and reports still work.Deletes need
confirm='DELETE'. Bulk changes, applying recommendations, budget orders and raw writes needconfirm='APPLY'.Budget and bid rises above
APPLE_ADS_MAX_INCREASE_PCT(default 20%) needconfirm='APPLY', and the refusal shows the change, e.g.dailyBudget: 10.00 -> 15.00 (+50%). New campaigns start paused.Every write and dry-run is recorded in an append-only audit log (
~/.apple-ads-mcp/logs/audit.jsonl) with abeforesnapshot. Entries older thanAPPLE_ADS_AUDIT_RETENTION_DAYS(default 30) are deleted at startup, andapple-ads-mcp purgedeletes the log.APPLE_ADS_READ_ONLY=truehides every tool that can change the account;APPLE_ADS_TOOL_GROUPSexposes only the groups you need. Every tool carries a title and MCP read-only/destructive hints.The HTTP transports have no sign-in, so the server refuses to listen on anything but localhost unless you set
APPLE_ADS_ALLOW_REMOTE=true.Report data stays in memory and is never written to disk. How the server fits Apple's terms: docs/terms-and-data.md.
Supported clients
Client | Works? | How |
Claude Code | ✅ | Local server, |
Claude Desktop | ✅ | Local server, |
Cursor | ✅ | Local server, |
VS Code (Copilot) | ✅ | Local server, |
Codex | ✅ | Local server, |
Gemini CLI | ✅ | Local server, |
Windsurf and other local clients | ✅ | Local server, same JSON entry |
Claude.ai and ChatGPT | ❌ not yet | These need a remote server with sign-in. This server's HTTP transports have no sign-in, so don't expose them publicly. Use a local client. |
Setup
1. Install uv
The server runs with uvx from uv
(brew install uv on macOS) and needs Python 3.11 or later. It installs straight
from this repository:
uvx --from git+https://github.com/AI-Shopping-Feeds/apple-ads-mcp.git apple-ads-mcpPin a release by adding @vX.Y.Z to the URL.
2. Get credentials
API user: in Apple Ads, an account administrator invites a user under Account Settings > User Management with the API Account Read Only or API Account Manager (read and write) role.
Key pair: make one on your computer. The private key stays in
~/.apple-ads-mcp/secrets/; the command prints the public key:uvx --from git+https://github.com/AI-Shopping-Feeds/apple-ads-mcp.git apple-ads-mcp keygenUpload and copy your IDs: signed in as the API user, paste the public key into Account Settings > API and copy the
clientId,teamIdandkeyIdApple shows.
Step by step, including how to find your ad account ID and the rules for working on clients' accounts: docs/setup-apple-ads-api.md.
3. Add it to your client
Replace the placeholders. Keep your other servers in each file. Start with
APPLE_ADS_DRY_RUN=true so nothing changes until you're happy.
Claude Code
claude mcp add --scope user apple-ads \
--env APPLE_ADS_CLIENT_ID=SEARCHADS.your-client-id \
--env APPLE_ADS_TEAM_ID=SEARCHADS.your-team-id \
--env APPLE_ADS_KEY_ID=your-key-id \
--env APPLE_ADS_PRIVATE_KEY_PATH=/abs/path/private-key.pem \
--env APPLE_ADS_DRY_RUN=true \
-- uvx --from git+https://github.com/AI-Shopping-Feeds/apple-ads-mcp.git apple-ads-mcpClaude Desktop, Cursor, Gemini CLI, Windsurf (and VS Code under servers)
{
"mcpServers": {
"apple-ads": {
"command": "uvx",
"args": ["--from", "git+https://github.com/AI-Shopping-Feeds/apple-ads-mcp.git", "apple-ads-mcp"],
"env": {
"APPLE_ADS_CLIENT_ID": "SEARCHADS.your-client-id",
"APPLE_ADS_TEAM_ID": "SEARCHADS.your-team-id",
"APPLE_ADS_KEY_ID": "your-key-id",
"APPLE_ADS_PRIVATE_KEY_PATH": "/abs/path/private-key.pem",
"APPLE_ADS_DRY_RUN": "true"
}
}
}
}Desktop apps often can't find uvx on the PATH; if the server doesn't start, use
the full path from which uvx as the command.
Codex (~/.codex/config.toml)
[mcp_servers.apple-ads]
command = "uvx"
args = ["--from", "git+https://github.com/AI-Shopping-Feeds/apple-ads-mcp.git", "apple-ads-mcp"]
env = { APPLE_ADS_CLIENT_ID = "SEARCHADS.your-client-id", APPLE_ADS_TEAM_ID = "SEARCHADS.your-team-id", APPLE_ADS_KEY_ID = "your-key-id", APPLE_ADS_PRIVATE_KEY_PATH = "/abs/path/private-key.pem", APPLE_ADS_DRY_RUN = "true" }4. Check it works
Restart or reload the client, then ask it to "run the Apple Ads health check". It should
call apple_ads_health_check and list the ad accounts your API user can see. Add the one
you want as APPLE_ADS_AD_ACCOUNT_ID, and set APPLE_ADS_DRY_RUN=false when you're ready
to make real changes.
Configuration
Variable | Required | What it does |
| yes |
|
| yes |
|
| yes |
|
| yes | Path to the private key from |
| recommended | Default ad account (sent as |
| no |
|
| no |
|
| no | Comma-separated groups to register (default all): |
| no | Budget and bid rises above this % need |
| no | Audit log path (default |
| no | Audit entries older than this are deleted at startup (default 30) |
| no |
|
| no |
|
| no |
|
Settings can also go in ~/.apple-ads-mcp/.env, ./.env or a file passed with --env.
See docs/mcp-client-config.md for the order, file locations
and the command line (run, keygen, purge, describe, version).
Example prompts
How did my App Store campaigns do over the last 7 days? Which one has the worst cost per install?Show last month's search terms for my US campaign and suggest negative keywords for the ones with spend and no installs.Raise the daily budget of my UK campaign to £30. Use dry-run first and show me the change.Which keywords in my main campaign have impression share under 30%?More docs
Apple Ads API setup: API user, key pair, IDs, ad account and third-party rules
Agent skill: setup and usage guide for agents
Contributing and licence
Issues and pull requests are welcome on this repository. See CONTRIBUTING.md.
Licensed under the MIT License.
Try out AI Shopping Feeds, our shopping feed management tool (including Google Shopping feeds).
This server cannot be deployed
Maintenance
Related MCP Connectors
Apple Search Ads MCP: campaign analytics, bid management, and attribution tracking.
Create App Store screenshots, icons, ASO copy, localization, and revisions via hosted MCP.
Google Ads MCP: reports, search terms, negatives, budgets, campaigns. Approval on every write.
Google Ads MCP with 20,000+ account peer context and staged approve-then-execute writes.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for Apple Search Ads API v5 that enables natural language management of campaigns, keywords, budgets, creatives, and performance reporting. Supports 54 tools for campaign management, keyword optimization, search term analysis, and more.76 npm7MIT
- AlicenseCqualityAmaintenanceProvides MCP clients typed tools for Apple Ads Platform research, reporting, auditing, and receipt-gated campaign management with a local-first, read-only-by-default safety model.1107MIT

AppDrift MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables MCP clients such as Claude Desktop and Cursor to read tracked app keywords, opportunities, account apps, and action plans; generate or translate listing copy; review results; and apply accepted title, subtitle, keywords, or short-description fields to an editable draft without publishing to Apple or Google.40 npmMIT- AlicenseNot gradedqualityCmaintenanceEnables MCP clients to read App Store campaign and performance data and to prepare preview-first, opt-in changes for explicitly allowlisted ad accounts.312 npm1Apache 2.0