Skip to main content
Glama
meta-ads-mcp-server

meta-ads-mcp-server

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

get_campaigns

List campaigns with status, objective, and budget info

get_campaign_performance

Core KPIs: spend, impressions, CTR, CPC, CPM, CPA, ROAS

get_creative_performance

Creative-level metrics including video hook rate and thruplay rate

get_ad_creatives

Inline-render ad creative images (full-resolution by default, image_size: "thumbnail" for 64×64 previews)

get_audience_breakdown

Performance broken down by age and/or gender

get_budget_status

Budget pacing and daily spend status for active campaigns

get_ad_accounts

List all ad accounts the token has access to

get_adsets / get_ads

List ad sets / ads with optional filtering

debug_*

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 build

2. Configure Environment

cp .env.example .env

Edit .env with your credentials:

META_ACCESS_TOKEN=your_meta_api_token
META_AD_ACCOUNT_ID=act_123456789

Getting 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_read permission. Short-lived tokens (~2h) can be exchanged for 60-day long-lived tokens via GET /oauth/access_token?grant_type=fb_exchange_token&client_id={APP_ID}&client_secret={APP_SECRET}&fb_exchange_token={SHORT_TOKEN}.

The .env file takes precedence over environment variables passed by Claude Desktop. If Claude Desktop's claude_desktop_config.json contains a stale META_ACCESS_TOKEN, the value in .env wins. Update .env to 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/node as 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 helpers

Meta API Notes

  • Budgets are in cents. daily_budget: "5000" = €50.00

  • Actions are arrays. Always parsed with extractAction(), never accessed directly

  • Breakdowns multiply rows. age,gender gives ~14 rows per campaign (7 age groups × 2 genders)

  • Video fields may be missing. Non-video ads won't have video_thruplay_watched_actions

  • date_preset vs time_range: Never send both — Meta throws an error

License

MIT

Available Tools

10 tools
get_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

    A3.9/5.0

    Scored across 10 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      A comprehensive MCP server for managing and analyzing Meta Ads (Facebook/Instagram) with over 80 natural-language tools for AI agents like Claude Desktop.
      -
    • A
      license
      A
      quality
      D
      maintenance
      MCP server to manage Meta Ads (Facebook/Instagram) campaigns, ad sets, insights, and audiences from Claude Code using natural language.
      9
      8 npm
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      MCP 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.
      31
      1
      MIT
    • F
      license
      B
      quality
      D
      maintenance
      A 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
      -