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.
README
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 |
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_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 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,gendergives ~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
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.