claude-meta-mcp
Self-hosted Meta connector for Claude — Ads CRUD, Pages, Instagram and Product Catalogs, no SaaS middleman.
claude-meta-mcp is a Streamable-HTTP server following the Model Context Protocol standard. It connects Claude.ai (and any other MCP client) directly to the Meta Graph API. You install it on your own server, store your System User token, and then run the full advertising workflow through Claude — upload images and videos, create campaigns / ad sets / ads, publish to Pages and Instagram, inspect Product Catalogs for Dynamic Product Ads — without your advertising data ever flowing through a third-party SaaS.
47 tools across Meta
Meta Ads read + write (campaigns, ad sets, ads, creatives, image and video upload, ad preview), Facebook Pages read + write, Instagram Business publishing (image / video / reel / story / carousel) plus comment moderation and insights, plus Product Catalog inspection (businesses, catalogs, feeds, products, diagnostics) for Dynamic Product Ads.
Safe defaults
Every create-tool for campaigns / ad sets / ads defaults to status=PAUSED. Going live requires an explicit ACTIVE — no cent gets spent by accident.
Self-hosted
Runs behind nginx + pm2 cluster mode. No SaaS subscription, no proxy server between you and Meta. Your data, your server, your System User token.
MIT-licensed
Fork, modify, commercial use — all allowed. Pull requests welcome, continuous releases via GitHub Actions.
Why this exists
If you want to analyze Meta Ads data in Claude, you had two options so far: use a SaaS connector like Windsor.ai or Pipeboard — or export spreadsheets by hand. Both paths take ad data outside your own system: to the SaaS, to spreadsheets, ultimately into Claude's context. For agencies with NDAs or companies with data-protection requirements, that's often a non-starter.
claude-meta-mcp closes that gap: you keep your System User token at home, the server runs on your infrastructure, and Claude only sees the data you explicitly release via tool calls.
Architecture
Express 5 as the HTTP layer, the official @modelcontextprotocol/sdk for tool registration, and a DCR shim that emulates the OAuth discovery endpoints Meta does not provide. Streamable-HTTP transport (no WebSocket needed), compatible with Claude Web, Claude Desktop, and any other MCP client that supports this transport.
Authentication against Meta uses a long-lived System User token stored once in an .env file. On each tool call, the Graph API is invoked with that token; the result is filtered and rounded before return (PII stripping for Page insights).
What you need
A Meta Developer App in Business mode with the five use cases »Measure ad performance«, »Create and manage ads«, »Manage everything on your Page«, »Manage messaging and content on Instagram« and »Manage products with Catalog API«. A System User token with scopes ads_read, ads_management, business_management, pages_show_list / pages_manage_posts / pages_manage_metadata / pages_read_engagement, instagram_basic / instagram_content_publish / instagram_manage_comments / instagram_manage_insights and catalog_management. Plus a Linux VPS with Node 20 + nginx and a TLS certificate for the connector domain. The full setup including Meta Developer portal screenshots is covered in the Meta-app-setup guide.
Compared with SaaS alternatives
Windsor.ai and Pipeboard are maintenance-free and offer additional data sources, but charge ongoing fees and export your data to their cloud. claude-meta-mcp is free and self-hosted, but covers only Meta, and you handle updates and uptime yourself. The choice depends on whether data privacy or convenience comes first.
Do I need programming skills to install it?
Basic Linux knowledge is enough. The deployment guide is written as a step-by-step walkthrough. Setting up the Meta Developer App requires a one-time click-through in the Business Manager — there's a dedicated guide for that too.
Does this work with Claude's free plan?
Custom MCP connectors require a paid Claude plan (Pro or higher) — that's an Anthropic restriction, unrelated to this repo.
Are all Meta products supported?
Currently Meta Ads (read + write incl. asset upload), Facebook Pages (read + write), Instagram Business (read + write incl. reels / stories / carousel and comment moderation) and Product Catalogs (read — businesses, catalogs, feeds, products, diagnostics for Dynamic Product Ads). WhatsApp Cloud API and Instagram DMs are intentionally out of scope — DMs require App Review even for own accounts. Catalog writes (create / update / delete) ship in v0.5.