Meta Ads Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Meta Ads Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
| 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 |
git clone https://github.com/YOUR_USERNAME/meta-ads-mcp-server.git
cd meta-ads-mcp-server
npm install
npm run buildcp .env.example .envEdit .env with your credentials:
META_ACCESS_TOKEN=your_meta_api_token
META_AD_ACCOUNT_ID=act_123456789Getting your credentials:
act_.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.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.
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.
Ask Claude things like:
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 helpersdaily_budget: "5000" = €50.00extractAction(), never accessed directlyage,gender gives ~14 rows per campaign (7 age groups × 2 genders)video_thruplay_watched_actionsMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.