Skip to main content
Glama
jonathanposovatz

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 Server

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

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    C
    quality
    C
    maintenance
    A local Model Context Protocol server that enables interaction with the Meta Marketing API to manage ad accounts, campaigns, and creatives. It provides tools for targeting research, insight reporting, and campaign management through local MCP clients like Claude Code and Cursor.
    Last updated
    40
    51
    AGPL 3.0
  • F
    license
    -
    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.
    Last updated
  • 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.
    Last updated
    9
    9
    MIT
  • A
    license
    -
    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.
    Last updated
    1
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

  • OpenAI Ads MCP for ChatGPT Ads campaigns, creatives, audiences, insights, and conversions.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jonathanposovatz/meta-ads-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server