Skip the install. Get this working in under 2 minutes.
Start a free trial on cloud.anythingmcp.com, add the Meta Ads in one click, then point your AI client (Claude, ChatGPT, Copilot or Cursor) at the generated MCP endpoint. No Docker, no git clone, zero engineering experience required.
Summary
Let your AI analyse your Facebook and Instagram ads: spend, reach, clicks and conversions by campaign, ad set, ad, age, country or placement, plus campaigns, creatives, audiences and change history. Can pause or activate ads and change budgets after confirmation.
Try asking
Example prompts for Meta Ads
Click any prompt to copy it. Paste into Claude, ChatGPT, Cursor, Gemini, Copilot or OpenClaw to run it against this connector.
Claude is AI and can make mistakes. Please double-check responses.
💡 No install? Use cloud.anythingmcp.com directly. Sign in, click Connectors → Meta Ads, paste your credentials, mint an MCP API key and you're done. No Docker, no
git clone, no local server.
Meta Ads + Cursor
Let your AI analyse your Facebook and Instagram ads: spend, reach, clicks and conversions by campaign, ad set, ad, age, country or placement, plus campaigns, creatives, audiences and change history. Can pause or activate ads and change budgets after confirmation.
Prerequisites
See the full setup instructions baked into the connector (visible in the in-app store when you select the connector). The required environment variables for this connector are:
META_ADS_ACCESS_TOKEN, META_ADS_ACCOUNT_ID
Step 1 — Get credentials
- Open
https://developers.facebook.com/apps/creation/and create an app with the use case Create & manage ads with Marketing API, connected to your business portfolio. This adds the permissionsads_read,ads_managementandbusiness_management. - Recommended, a token that never expires: in Business Settings (
https://business.facebook.com/settings) open Users → System users and add a system user (role Admin, or Employee for read-only). Under Assign assets, give it your ad account (Manage campaigns, or View performance for read-only). Click Generate token, pick the app, choose Never as expiry and tickads_read, plusads_managementfor status and budget changes. Meta can ask you to verify the business portfolio first (Business Settings → Security Center); until that is done, use the token of step 3. - Quicker, for a test: in the Graph API Explorer (
https://developers.facebook.com/tools/explorer/) pick your app and a User Token withads_readandads_management. It lasts one or two hours, so open it in the Access Token Debugger (https://developers.facebook.com/tools/debug/accesstoken) and click Extend Access Token to get a 60-day token. - Paste the token into
META_ADS_ACCESS_TOKEN(it starts withEA; paste it without the word Bearer). Put the ad account id intoMETA_ADS_ACCOUNT_IDwith theact_prefix, for exampleact_1234567890. Ads Manager shows the number in the address bar (act=1234567890). - Install the connector and run
meta_ads_list_ad_accounts. It lists every ad account the token can reach, with its status, currency and time zone.
Access level: a new app has Limited access (formerly Standard). That is enough for the ad accounts of your own business, but heavily rate limited. Ad accounts of other businesses need Full access (formerly Advanced) through App Review. Leave Require App Secret (App settings → Advanced) switched off: with it on, Meta refuses the connector's calls.
Confirm first: meta_ads_update_status pauses or activates a campaign, ad set or ad, and meta_ads_update_budget changes a daily or lifetime budget. Both act at once and change what you spend: activating starts spending, pausing stops delivery. The AI names the object (name and id), the current and the new value, and waits for your yes. An ad only delivers when the ad, its ad set and its campaign are all ACTIVE. Budgets are whole numbers in the minor unit of the account currency (2000 means 20.00 EUR); currencies such as JPY or KRW have no minor unit.
What it reads: ad accounts, campaigns, ad sets with their targeting, ads with the reason one does not deliver, creatives, custom and lookalike audiences, the change history (who changed what and when) and performance. Insights give spend, reach, clicks and conversions for the account or for one campaign, ad set or ad, for a preset such as the last 7 days or last month or for any dates up to 37 months back, per day if you like, and split by age, gender, country, region or placement.
Common errors: 190: the token is invalid or expired, so create a new one. 10 or 200 to 299: a permission is missing (294 means ads_management) or the token has no access to this ad account. 100: a parameter is wrong; with subcode 1487534 the request is too large, so shorten the period or drop breakdowns. 4, 17, 613, 80000 and 80004 are rate limits: wait a few minutes.
The connector creates nothing: it does not create or edit campaigns, ad sets, ads, creatives or audiences, upload media, or handle lead forms, pixels or the Conversions API.
Step 2 — Install the adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Add the connector in Cursor
Your server URL: in AnythingMCP, open MCP Servers → the server this connector is on, and copy its URL (
https://cloud.anythingmcp.com/mcp/…). Use it wherever this guide showsYOUR_SERVER_ID.
Cursor reads MCP servers from ~/.cursor/mcp.json. Add this entry:
{
"mcpServers": {
"anythingmcp": {
"url": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Create an MCP API key in AnythingMCP under MCP Servers → your server → API keys, and paste it in place of
YOUR_MCP_API_KEY. - Save the file and restart Cursor.
- Open Cursor → Settings → MCP and check that
anythingmcpis listed and connected. - Start chatting: the agent can now call the
Meta Adstools.
Available tools
| Tool | What it does |
|---|---|
meta_ads_list_ad_accounts | List the ad accounts the token can reach, with id (act_...), name, account_status (1 active, 2 disabled, 3 unsettled, 7 pending risk… |
meta_ads_get_ad_account | Read the ad account in META_ADS_ACCOUNT_ID: name, status, currency, time zone, amount spent, balance, spend cap and minimum daily budget |
meta_ads_list_campaigns | List the campaigns of the ad account with name, status and effective_status, objective, daily or lifetime budget (minor currency unit), bid… |
meta_ads_get_campaign | Read one campaign by id: name, status, effective_status, objective, budgets, bid strategy, special ad categories and schedule |
meta_ads_list_ad_sets | List the ad sets of the ad account with campaign_id, status, budgets, bid strategy, billing event, optimization goal, targeting and schedule |
meta_ads_list_campaign_ad_sets | List the ad sets of one campaign with status, budgets, optimization goal, targeting and schedule |
meta_ads_get_ad_set | Read one ad set by id: campaign, status, budgets, bid strategy and amount, billing event, optimization goal, full targeting spec and… |
meta_ads_list_ads | List the ads of the ad account with ad set, campaign, status, effective_status, creative id and issues_info (why an ad does not deliver) |
meta_ads_list_ad_set_ads | List the ads of one ad set with status, effective_status, creative and issues_info |
meta_ads_get_ad | Read one ad by id: name, ad set, campaign, status, effective_status, creative and issues_info |
meta_ads_get_account_insights | Performance of the whole ad account for a period: impressions, reach, frequency, clicks, CTR, CPC, CPM, spend, actions (conversions by… |
meta_ads_get_insights | Performance of one campaign, ad set or ad for a period, with the same metrics, periods, breakdowns and levels as… |
meta_ads_list_ad_creatives | List the ad creatives of the ad account with name, title, body, call to action, link, image and thumbnail URLs, video id and the object… |
meta_ads_get_ad_creative | Read one ad creative by id (meta_ads_get_ad shows the creative id of an ad): texts, call to action, link, image and thumbnail, video and… |
meta_ads_list_custom_audiences | List the custom and lookalike audiences of the ad account with subtype (CUSTOM, WEBSITE, LOOKALIKE, ENGAGEMENT and others), approximate… |
meta_ads_list_account_activities | Change history of the ad account: who changed what and when (event_type such as update_campaign_run_status or update_ad_set_budget… |
meta_ads_update_status | Pause or activate a campaign, ad set or ad |
meta_ads_update_budget | Change the daily or lifetime budget of a campaign (with campaign budget) or of an ad set (with ad set budgets) |
Example prompts
- "How much did we spend on Facebook and Instagram last month, and which campaign had the lowest cost per purchase?"
- "Break down the last 30 days of spend and clicks by age, gender and placement."
- "Which of our ads are not delivering right now, and why?"
- "Raise the daily budget of our best performing campaign by 20 percent, but show me the current and the new budget before you change it."
FAQ
Does Cursor support custom MCP servers on the free tier? Yes, MCP is available on Hobby, Pro and Business plans.
Next steps
Was this guide helpful?