meta-ads-mcp-server
Gives Claude Desktop direct access to your Meta ad account data — campaign performance, creative analysis, audience breakdowns, and budget pacing.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@meta-ads-mcp-server Show me my active campaigns"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Meta Ads MCP Server
MCP Server for the Meta Marketing API. Gives Claude Desktop direct access to your ad account data — campaign performance, creative analysis, audience breakdowns, and budget pacing.
Tools
Tool | Description |
| List campaigns with status, objective, and budget info |
| Core KPIs: spend, impressions, CTR, CPC, CPM, CPA, ROAS |
| Creative-level metrics including video hook rate and thruplay rate |
| Inline-render ad creative images (full-resolution by default, |
| Performance broken down by age and/or gender |
| Budget pacing and daily spend status for active campaigns |
| List all ad accounts the token has access to |
| List ad sets / ads with optional filtering |
| Diagnostic helpers for troubleshooting field/breakdown issues |
Related MCP server: meta-ads-mcp
Setup
1. Install & Build
git clone https://github.com/YOUR_USERNAME/meta-ads-mcp-server.git
cd meta-ads-mcp-server
npm install
npm run build2. Configure Environment
cp .env.example .envEdit .env with your credentials:
META_ACCESS_TOKEN=your_meta_api_token
META_AD_ACCOUNT_ID=act_123456789Getting your credentials:
Ad Account ID: Found in Meta Ads Manager URL or account dropdown. Prefix with
act_.Access Token: Generate at Meta Graph API Explorer with
ads_readpermission. Short-lived tokens (~2h) can be exchanged for 60-day long-lived tokens viaGET /oauth/access_token?grant_type=fb_exchange_token&client_id={APP_ID}&client_secret={APP_SECRET}&fb_exchange_token={SHORT_TOKEN}.
The
.envfile takes precedence over environment variables passed by Claude Desktop. If Claude Desktop'sclaude_desktop_config.jsoncontains a staleMETA_ACCESS_TOKEN, the value in.envwins. Update.envto rotate the token without touching Claude Desktop config.
3. Add to Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"meta-ads": {
"command": "node",
"args": ["/absolute/path/to/meta-ads-mcp-server/dist/index.js"]
}
}
}On macOS with Homebrew Node, use
/opt/homebrew/bin/nodeas the command.
Restart Claude Desktop. The tools will be available automatically.
Usage Examples
Ask Claude things like:
"Show me my active campaigns"
"How did campaign 120210001 perform last 7 days?"
"Compare creative performance for my Summer Sale campaign"
"Break down my campaign audience by age and gender"
"Are any campaigns overspending today?"
Architecture
src/
├── index.ts → MCP server setup, tool registration
├── types.ts → Shared interfaces (MetaInsight, MetaAction, etc.)
├── fields.ts → Reusable Meta API field selections
├── formatters.ts → KPI calculations, number formatting
├── meta-client.ts → Meta API client (loads .env with override:true)
└── tools/
├── campaigns.ts → get_campaigns
├── performance.ts → get_campaign_performance
├── creatives.ts → get_creative_performance
├── ad-creatives.ts → get_ad_creatives (inline image rendering)
├── audience.ts → get_audience_breakdown
├── budget.ts → get_budget_status
├── accounts.ts → get_ad_accounts
├── adsets.ts → get_adsets
├── ads.ts → get_ads
└── debug.ts → debug helpersMeta API Notes
Budgets are in cents.
daily_budget: "5000"= €50.00Actions are arrays. Always parsed with
extractAction(), never accessed directlyBreakdowns multiply rows.
age,gendergives ~14 rows per campaign (7 age groups × 2 genders)Video fields may be missing. Non-video ads won't have
video_thruplay_watched_actionsdate_preset vs time_range: Never send both — Meta throws an error
License
MIT
Available Tools
10 toolsget_ad_accountsA
List all ad accounts accessible with the current token. Use this first to find the right account ID.
Inputs: limit.
get_ad_creativesA
Fetch ad creative images and display them inline. Shows the actual ad thumbnails/images alongside ad metadata (name, status, creative ID). Defaults to full-resolution images; set image_size='thumbnail' for the small 64x64 preview.
Inputs: campaign_ids (required), ad_account_id (required), limit, ad_ids, +3 more.
get_adsA
List ads with their actual delivery status (ACTIVE, PAUSED, etc.), name, and creative info. Unlike insights-based tools, this shows ALL ads regardless of spend.
Inputs: campaign_ids (required), ad_account_id (required), adset_ids, status_filter.
get_adsetsA
List ad sets for a campaign with ID, name, status, budget, and optimization goal. Use this to find specific ad set IDs and see what each ad set optimizes for.
Inputs: campaign_ids (required), ad_account_id (required), status_filter.
get_audience_breakdownB
Get performance broken down by demographics, platform, placement, device, or geography. Results match the Ads Manager optimization event.
Inputs: campaign_ids (required), ad_account_id (required), breakdown_type (required), time_range, +1 more.
get_budget_statusB
Get budget pacing and spend status for active campaigns.
Inputs: ad_account_id (required), campaign_ids.
get_campaign_performanceB
Get performance KPIs for campaigns. Results match the Ads Manager — only the optimization event of each ad set counts as a 'Result'.
Inputs: campaign_ids (required), ad_account_id (required), level, adset_ids, +2 more.
get_campaignsA
List all campaigns for an ad account with status, objective, and budget info.
Inputs: ad_account_id (required), status_filter.
get_creative_performanceA
Get creative-level performance including video metrics (hook rate, thruplay rate). Results match the Ads Manager optimization event.
Inputs: campaign_id (required), ad_account_id (required), limit, sort_by, +2 more.
get_debug_insightsA
Debug tool: returns raw action types from the API response. Use this to see exactly what conversion/action types Meta returns for a campaign.
Inputs: campaign_ids (required), ad_account_id (required), level, time_range, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct data view: account listing, campaign list, campaign performance, creative performance, audience breakdown, budget, ad sets, ads, creatives, and debug insights. The parallel performance tools are clearly separated by level or dimension.
All tools follow a consistent get_ prefix with a readable resource or metric descriptor. Plural nouns are used for list endpoints and entity_metric patterns for analytics endpoints, with only get_debug_insights as a mild outlier.
Ten tools is well within the ideal range and each one serves a clear purpose in a read-only Meta Ads workflow. There is no obvious redundancy or unnecessary bloat.
The read-only surface covers the full account → campaign → ad set → ad → creative hierarchy plus performance, budget, audience breakdown, and debug insights. Minor gaps exist such as no ad-set-level or ad-level performance endpoint and no write/management operations, but the tool set appears intentionally observational.
Maintenance
Related MCP Connectors
Hosted MCP server for marketing agencies: connect Google Ads, GA4, Search Console, Meta, LinkedIn and more to Claude or ChatGPT. Pull reports and make changes via OAuth login, no setup.
Hosted Meta Ads MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Meta Ads and Google Ads MCP server: 250+ tools for Claude, ChatGPT, Cursor and Codex.
Meta Ads MCP server: run Facebook and Instagram campaigns, ad sets, ads and reports from AI.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for managing and analyzing Meta Ads (Facebook/Instagram) with over 80 natural-language tools for AI agents like Claude Desktop.-
- AlicenseAqualityDmaintenanceMCP server to manage Meta Ads (Facebook/Instagram) campaigns, ad sets, insights, and audiences from Claude Code using natural language.98 npmMIT
- AlicenseBqualityDmaintenanceMCP server for Meta Ads providing 30 tools for account discovery, campaign management, targeting research, and insights. Designed with LLM-friendly outputs and productivity features like cloning and bulk operations.311MIT
- FlicenseBqualityDmaintenanceA platform-agnostic MCP server that connects Claude to campaign data, institutional knowledge, and historical performance for paid media teams, enabling automated analysis, reporting, and debugging.73-