Meta MCP Connector
Enables querying and managing Facebook Ads data, offering capabilities to list ad accounts, campaigns, ad sets, and obtain daily trends and performance breakdowns across campaigns, ad sets, or placements.
Provides natural language access to Meta advertising data via the Facebook Marketing API, including tools to list ad accounts, campaigns, ad sets, and retrieve performance metrics such as spend, impressions, clicks, and purchases.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Meta MCP ConnectorShow me my ad spend for the last 7 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Meta MCP Connector
Plain-language MCP server for Meta / Facebook Ads via the Graph API.
Ask about ad accounts, campaigns, ad sets, spend, and performance in natural language — no table names or raw API paths required.
Features
Live data from the Facebook Marketing API (Graph API)
List ad accounts with parent Business Manager
Campaign / ad set / ad performance (spend, impressions, clicks, purchases)
Account-level spend dashboard (
account-spend.html)Claude.ai OAuth when deployed to Cloud Run (
MCP_PUBLIC_URL)
Related MCP server: Instagram Ads MCP Server
Project structure
meta-mcp-connector/
├── meta_mcp_server.py # MCP server + HTTP routes + tools
├── meta_graph.py # Facebook Graph API client
├── meta_oauth.py # Claude-compatible OAuth provider
├── account-spend.html # Spend-by-account dashboard
├── test-accounts.html # Ad account list test page
├── get-token.html # Helper to obtain FACEBOOK_ACCESS_TOKEN
├── requirements.txt
├── Dockerfile
├── deploy-cloudrun.ps1 # Deploy to Google Cloud Run
├── .env.example
└── .cursor/mcp.json # Local Cursor MCP config (example)Setup (local)
1. Clone and install
git clone https://github.com/YOUR_USERNAME/meta-mcp-connector.git
cd meta-mcp-connector
python -m venv .venv
# Windows
.venv\Scripts\activate
pip install -r requirements.txt
copy .env.example .env2. Configure .env
FACEBOOK_APP_ID=your_app_id
FACEBOOK_APP_SECRET=your_app_secret
FACEBOOK_ACCESS_TOKEN=your_user_token_with_ads_read
FACEBOOK_AD_ACCOUNT_ID=114810198697538Token requirements
Must be a User Token (
EAA…), not an App Token (app_id|secret)Generated in Graph API Explorer for your
FACEBOOK_APP_IDPermissions:
ads_read,ads_management,business_management
Use get-token.html or run the server and open http://127.0.0.1:8001/get-token.
3. Start the server
python meta_mcp_server.py --httpEndpoint | URL |
MCP |
|
Account spend UI |
|
Account list API |
|
Account spend API |
|
4. Cursor MCP config
.cursor/mcp.json:
{
"mcpServers": {
"meta": {
"url": "http://127.0.0.1:8001/mcp"
}
}
}Reload MCP in Cursor settings after starting the server.
MCP tools
Tool | Purpose |
| What you can ask |
| Ad accounts + parent Business Manager |
| Campaigns in an ad account |
| Ad sets in an ad account |
| Token / app health check |
| KPI totals for a date range |
| Day-by-day spend & metrics |
| Breakdown by campaign / ad set / placement |
| Top ads by spend or other metric |
Example prompts
"List my Meta ad accounts"
"Meta ads summary from 2026-08-01 to 2026-08-15"
"Daily spend last 7 days for WOW Ad Account"
"Top ads by spend yesterday"
"Break down spend by campaign last week"
Google Cloud Run
Host the same HTTP MCP endpoint on Cloud Run (same pattern as vdp-connector). The Docker image does not bake in .env or secrets.
Prerequisites
Google Cloud SDK (
gcloud) installed and logged in (gcloud auth login)A GCP project with billing enabled
Your GCP Project ID
Facebook credentials ready in local
.env(see.env.example)
Deploy
From this repo folder:
# App secret read from .env
.\deploy-cloudrun.ps1 -ProjectId "YOUR_GCP_PROJECT_ID"
# Optional overrides
.\deploy-cloudrun.ps1 -ProjectId "YOUR_GCP_PROJECT_ID" -Region "us-central1" -Service "meta-mcp"
# App secret from a one-line file (gitignored)
.\deploy-cloudrun.ps1 -ProjectId "YOUR_GCP_PROJECT_ID" -SecretFile ".\facebook-app-secret.key"What the script does:
Enables Cloud Run, Cloud Build, Secret Manager, Artifact Registry
Uploads
FACEBOOK_APP_SECRET→ Secret Manager (meta-facebook-app-secret)Uploads
FACEBOOK_ACCESS_TOKEN→ Secret Manager (meta-facebook-access-token) if set in.envDeploys with
--source .(Dockerfile), env vars, and secret injectionSets
MCP_PUBLIC_URLto the service URL (required for Claude OAuth)Prints the connector URL:
https://SERVICE-URL/mcp
Deploy flags:
--set-env-vars MCP_TRANSPORT=http,HOST=0.0.0.0,FACEBOOK_APP_ID=…,FACEBOOK_AD_ACCOUNT_ID=…--set-secrets FACEBOOK_APP_SECRET=meta-facebook-app-secret:latest,FACEBOOK_ACCESS_TOKEN=meta-facebook-access-token:latest--allow-unauthenticated(needed for a working MCP URL on first deploy)--session-affinity,--max-instances 1,--timeout 300,--port 8080
Cursor (Cloud Run)
After deploy, put the printed URL in .cursor/mcp.json:
"meta": {
"url": "https://YOUR-CLOUD-RUN-URL/mcp"
}You do not need a local python meta_mcp_server.py process when using Cloud Run.
Claude custom connector
Claude.ai requires OAuth for remote custom connectors. This server embeds a Claude-compatible OAuth provider (Dynamic Client Registration) when MCP_PUBLIC_URL is set (the deploy script sets it automatically).
Deploy with
.\deploy-cloudrun.ps1 -ProjectId "YOUR_GCP_PROJECT_ID"Remove any old broken connector
Settings → Connectors → Add custom connector
Paste exactly:
https://YOUR-CLOUD-RUN-URL/mcp(must include/mcp)Leave OAuth Client ID empty in Advanced settings (DCR is enabled)
Click Connect — Claude registers itself and authorizes briefly
If you see "Couldn't register with … sign-in service" (ofid_…):
Confirm the URL ends with
/mcp(not the bare Cloud Run host)Confirm the service is up: open
https://YOUR-CLOUD-RUN-URL/.well-known/oauth-authorization-server— you should see JSON withregistration_endpointConfirm
MCP_PUBLIC_URLmatches the service origin (redeploy if you changed the URL)Do not paste a random OAuth Client ID unless you set up an external IdP
Verify deployment
Check | URL |
MCP endpoint |
|
OAuth discovery |
|
Account spend UI |
|
Local vs Cloud
Local | Cloud Run | |
Start |
|
|
URL |
|
|
Secrets |
| Secret Manager → env injection |
Host / port |
|
|
Claude OAuth | Off (no | On ( |
Tools | Same | Same |
Security note
--allow-unauthenticated makes the Cloud Run URL publicly reachable. OAuth means Claude must complete registration/authorize before tools work; random callers without a token get 401. Still treat the URL as sensitive and add stronger auth before sharing widely.
Common pitfalls
Claude URL missing
/mcp→ "Couldn't connect to the server"MCP_PUBLIC_URLnot set → OAuth 404 → "Couldn't register with sign-in service"Committing
.envor secret filesForgetting to redeploy after OAuth code changes
Deploying without
FACEBOOK_ACCESS_TOKEN→ Graph API returns permission errors
Push to GitHub
# Sign in to your new GitHub account first
git credential-manager github login --force
# Create repo on GitHub (browser or gh), then:
git remote add origin https://github.com/YOUR_USERNAME/meta-mcp-connector.git
git add .
git commit -m "Initial commit: Meta MCP connector"
git push -u origin mainSecurity
Never commit
.env— it is gitignoredFACEBOOK_ACCESS_TOKENis a secret; rotate if exposedCloud Run deploy uses
--allow-unauthenticatedfor MCP URL reachability; OAuth protects tool access whenMCP_PUBLIC_URLis set
This server cannot be installed
Maintenance
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
- FlicenseNot gradedqualityDmaintenanceConnects AI assistants to Facebook's Ads API to enable natural language queries for campaign data, insights, and performance metrics. It allows users to manage ad accounts and retrieve detailed analytics like impressions, clicks, and spend through MCP-compatible interfaces.
- AlicenseNot gradedqualityCmaintenanceWraps the Meta Marketing API to enable creating, modifying, viewing, and deleting Instagram ads via natural language.15MIT
- AlicenseNot gradedqualityDmaintenanceEnables management and analysis of Meta (Facebook/Instagram) ads through natural language conversations, with 30 tools for reading and writing ad data.MIT
- AlicenseNot gradedqualityDmaintenanceEnables full read/write management of Facebook ad campaigns, ad sets, ads, and creatives via the Meta Marketing API through natural language, with AI creative generation, performance analytics, and PDF reporting.MIT
Related MCP Connectors
Ask AI about your ads — query Meta, TikTok, and Google Ads performance in natural language.
60+ Meta Ads tools for AI agents: audits, campaign management, audiences and CAPI tracking.
Run Google, Meta, Microsoft, TikTok and LinkedIn Ads from Claude or ChatGPT. Writes need approval.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/devopsbrandmirchi/meta-mcp-connector'
If you have feedback or need assistance with the MCP directory API, please join our Discord server