Open SourceApple Ads MCP Server
MCP Server · TypeScript · MIT

Apple Ads, fully scriptable.

102 tools covering 100% of the Apple Ads Platform API (v1) — App Store Search Ads and Apple Maps Ads campaigns, ad groups, keywords, creatives, budgets, and performance reporting — built on Apple's own official SDK and usable from Claude, Cursor, Windsurf, or any MCP-compatible AI agent.

$npx -y @nerdsnipe-inc/apple-ads-mcp-server
102
Tools
100%
SDK coverage
MIT
License
What's inside

100% SDK coverage

102 tools = 99 Apple Ads Platform API operations, one tool per operation in Apple's official @apple/apple-ads-platform SDK, plus 3 meta tools.

Escape hatch for new endpoints

apple_ads_request is a raw authenticated tool that can call any /v1 path directly, so an endpoint Apple adds before the SDK catches up is still usable.

Automatic OAuth

Handles the ES256 client-secret JWT flow, caches the access token, and refreshes it on a 401. You supply clientId, teamId, keyId, and a private key; the server does the rest.

Retry-aware

Respects Retry-After on 429s and retries 5xx errors with capped backoff, instead of failing a long-running agent task on a transient error.

Read-only mode and group filters

APPLE_ADS_READ_ONLY hides every tool that can write. APPLE_ADS_ENABLED_GROUPS / APPLE_ADS_DISABLED_GROUPS scope an agent to just the tool groups it needs.

Starts without credentials

The server starts and lists every tool even with no credentials configured — calls just return an actionable error until you set them.

Quick install
npx (no install required)
$npx -y @nerdsnipe-inc/apple-ads-mcp-server
Verify without credentials
$npx -y @nerdsnipe-inc/apple-ads-mcp-server --list-tools

Requires Node.js 20+ and Apple Ads API credentials (clientId, teamId, keyId, and an EC private key) generated from Account Settings > API in Apple Ads.

Tool coverage

Accounts & orgs

7 tools
  • apple_ads_get_me
  • apple_ads_get_user_acls
  • apple_ads_get_ad_account
  • apple_ads_create_ad_account

Campaigns

6 tools
  • apple_ads_create_campaign
  • apple_ads_query_campaigns
  • apple_ads_update_campaign
  • apple_ads_delete_campaign

Ad groups & ads

10 tools
  • apple_ads_create_ad_group
  • apple_ads_update_ad_group
  • apple_ads_create_ad
  • apple_ads_query_ads

Keywords & negatives

10 tools
  • apple_ads_create_keyword
  • apple_ads_query_keywords
  • apple_ads_create_negative_keyword
  • apple_ads_query_negative_keywords

Bulk operations

4 tools
  • apple_ads_bulk_create_keywords
  • apple_ads_bulk_update_keywords
  • apple_ads_bulk_create_negative_keywords
  • apple_ads_bulk_update_negative_keywords

Apple Maps setup

16 tools
  • apple_ads_query_brands
  • apple_ads_create_location_group
  • apple_ads_upload_asset
  • apple_ads_query_locations

Reporting & insights

12 tools
  • apple_ads_report_apps_campaigns
  • apple_ads_report_brands_campaigns
  • apple_ads_query_impression_share
  • apple_ads_report_apps_search_terms

Recommendations & suggestions

10 tools
  • apple_ads_query_target_cpa_recommendations
  • apple_ads_apply_daily_budget_recommendations
  • apple_ads_query_keyword_suggestions
  • apple_ads_query_category_suggestions

Meta & escape hatch

3 tools
  • apple_ads_request
  • apple_ads_list_operations
  • apple_ads_server_status
Two safety switches

Read-only mode and tool-group allow/deny lists.

Set APPLE_ADS_READ_ONLY=true to hide every tool that can create, update, or delete anything, leaving only queries and reports visible to the agent.

APPLE_ADS_ENABLED_GROUPS and APPLE_ADS_DISABLED_GROUPS scope an agent to just the groups it needs (for example accounts,campaigns,reports_apps) — useful since listing every tool costs roughly 55k tokens.

Frequently asked

Does this cover the old Campaign Management API v5?

No. It targets the newer Apple Ads Platform API (api.ads.apple.com/v1), not the older Campaign Management API v5.

What happens if I don't have credentials configured yet?

The server starts and lists every tool even without credentials — calls just return an actionable error until you set APPLE_ADS_CLIENT_ID, APPLE_ADS_TEAM_ID, APPLE_ADS_KEY_ID, and a private key. Run it with --list-tools to verify the install itself.

Does it cover both App Store ads and Apple Maps ads?

Yes. Campaigns, ad groups, ads, and creatives all branch on promotedObjectType (APPSTORE_APP or BUSINESS_BRAND), and a dedicated set of tools covers Apple Maps-specific setup: business brands, locations, location groups, and image assets.

What if Apple adds an endpoint the SDK doesn't support yet?

Use apple_ads_request, a raw authenticated escape-hatch tool that can call any /v1 path with a method, query, and body — so a new endpoint is usable before the SDK or server catches up.

How do I keep the tool list from eating my context budget?

Listing every tool costs roughly 55k tokens. Set APPLE_ADS_ENABLED_GROUPS to just the groups you need, for example accounts,campaigns,ad_groups,keywords,reports_apps.

Script your Apple Ads account end to end.

102 tools, 100% SDK coverage, and an escape hatch for whatever Apple adds next. Point your AI agent at App Store and Apple Maps advertising instead of the dashboard.