Key takeaways
  • Meta ships a first-party, Meta-hosted ads MCP at mcp.facebook.com/ads covering seven tool categories — check it before defaulting to a community server.
  • pipeboard's meta-ads-mcp registers 43 tools in source, but 6 are dark by default behind three undocumented environment flags (META_ADS_ENABLE_DUPLICATION, META_ADS_ENABLE_REPORTS, META_ADS_ENABLE_SAVE_AD_IMAGE_LOCALLY), so a stock handshake advertises 37.
  • Tool names at runtime are bare Python function names (get_ad_accounts, create_campaign) — not the mcp_meta_ads_* names the README documents.
  • Auth bootstraps in-server via get_login_link, which returns an OAuth link for a Meta Marketing API access_token rather than requiring a pre-provisioned token.

01 What meta-ads-mcp is and who ships it

The meta ads mcp server search actually has two answers: Meta's own Meta-hosted server at mcp.facebook.com/ads, and the community package this page is about, pipeboard's meta-ads-mcp — and reading its source shows it registers 43 tools in code but ships only 37 by default, with 6 more sitting dark behind three environment flags the README never mentions. Pick pipeboard for self-hosted, bring-your-own-Meta-app access and its targeting-research tool family; keep Meta's own connector as the safer single-platform option, and don't trust pipeboard's README tool count or tool names without checking what the source actually registers.

i
Who this is for: teams wiring an AI agent into Meta/Facebook & Instagram ads who need to decide between Meta's first-party hosted MCP and a community alternative, and who want to know exactly which tools a live handshake will expose — not just what a README claims.

Meta ships its own first-party server: the Meta developer documentation (page marked "Updated: Jul 14, 2026") describes a Meta-hosted Model Context Protocol server, remote-hosted at https://mcp.facebook.com/ads and compatible with any MCP-compatible AI agent, grouped into seven tool categories — comprehensive reporting, ad creation and management, catalog creation and management, signals and datasets, help and troubleshooting, A/B tests and conversion lift studies, and activity logs.

pipeboard's meta-ads-mcp is a community project, not affiliated with Meta, maintained by Pipeboard at github.com/pipeboard-co/meta-ads-mcp. Public record and source read on 2026-09-02: the GitHub API reports 1,225 stars, 271 forks, and 16 open issues, with the licence field showing NOASSERTION. The default-branch HEAD commit is dated 2026-08-11, and the latest tagged release is 1.0.120 (2026-08-10).

02 Tools it exposes

Every row below is a tool pipeboard's package registers in meta_ads_mcp/core/*.py, read on 2026-07-25. The README documents these under mcp_meta_ads_* names, but the source shows they run as bare Python function names — for example the accounts group at accounts.py:44 — because no registration in the package passes a name= argument to @mcp_server.tool().

Tool group (README name)What it doesRead/writeRegistered at
get_ad_accounts, get_account_info, get_account_pagesList/inspect ad accounts and connected PagesReadaccounts.py:44
get_campaigns, get_campaign_details, create_campaignList, inspect and create campaignsRead / Writecampaigns.py:12
get_adsets, get_adset_details, create_adset, update_adsetList, inspect, create and update ad setsRead / Writeadsets.py:12
get_ads, create_ad, update_ad, get_ad_details, get_ad_creatives, create_ad_creative, update_ad_creative, upload_ad_image, get_ad_imageManage ads, creatives and imagesRead / Writeads.py:446-3324
get_insightsPull performance/reporting dataReadinsights.py:58
get_login_linkReturns an OAuth login link to bootstrap the Meta access tokenReadauthentication.py:207
create_budget_scheduleCreate a scheduled budget changeWritebudget_schedules.py:13
search_interests, get_interest_suggestions, validate_interests, search_behaviors, search_demographics, search_geo_locationsTargeting-research suite: interest/behavior/demographic/geo search and validationReadtargeting.py:12-515
search, fetchRegistered unconditionally for OpenAI Deep Research compatibilityReadopenai_deep_research.py:310
duplicate_* (4 tools)Duplicate campaigns/ad sets/ads/creatives — not exposed on a default installWrite (gated)duplication.py:27-29, 32-179
generate_reportGenerate a report — not exposed on a default installRead (gated)reports.py:11-15
save_ad_image_locallySave an ad image to local disk — not exposed on a default installWrite (gated)ads.py:441, 1100-1103

03 Install and auth

Transport is HTTP. The install string, verbatim from the record: Hosted: https://meta-ads.mcp.pipeboard.co/ — also self-hostable from the repo.

Auth method is OAuth: the recorded auth scope is a Meta Marketing API access_token, obtained via mcp_meta_ads_get_login_link rather than requiring a pre-provisioned token — the tool returns a clickable login link that bootstraps the credential from inside the server.

04 What the source shows

This is the page's reason to exist: the README and the running server disagree, and only reading the source catches it. Across meta_ads_mcp/core/*.py there are 42 @mcp_server.tool() decorators plus a 43rd functional registration at meta_ads_mcp/core/authentication.py:207 (get_login_link = mcp_server.tool()(get_login_link)) — 43 tools total in source, against the README's stated "42 tools."

Six of those 43 are dark on a default install. Three environment flags gate them, and none is documented in the README: META_ADS_ENABLE_DUPLICATION gates the four duplicate_* tools (duplication.py:27-29), META_ADS_ENABLE_REPORTS gates generate_report (reports.py:11-15), and META_ADS_ENABLE_SAVE_AD_IMAGE_LOCALLY gates save_ad_image_locally (ads.py:441, 1100-1103). Two further flags run the opposite way — opt-out, not opt-in: META_ADS_DISABLE_ADS_LIBRARY (ads_library.py:11-16) and META_ADS_DISABLE_LOGIN_LINK (authentication.py:38-39). Net effect: a default tools/list handshake advertises 37 tools, not the 42 the README documents.

The names don't match either. FastMCP infers each tool's name from the decorated Python function, and no registration passes a name= argument — so a client sees bare names like get_ad_accounts (accounts.py:44), get_campaigns (campaigns.py:12), get_adsets (adsets.py:12) and create_ad (within ads.py:446-3324), while the README's "Available MCP Tools" section documents the entire surface as mcp_meta_ads_get_ad_accounts, mcp_meta_ads_get_campaigns, and so on. A config or agent prompt copied straight from the README's tool names will not match what the server actually returns.

One more source-only finding: two tools named plainly search and fetch are registered unconditionally, added for OpenAI Deep Research compatibility (meta_ads_mcp/core/openai_deep_research.py:310, imported eagerly by meta_ads_mcp/core/__init__.py:17). In any multi-server MCP client configuration, search and fetch are about the most collision-prone tool names available — a second server exposing the same bare names will clash.

05 Quirks, gaps and the honest verdict

  • Long tool prefix — every documented tool carries the mcp_meta_ads_ prefix, which eats context budget across roughly 30 tool schemas once a client loads the full set.
  • Multi-channel, not Meta-only — Pipeboard ships sibling hosted endpoints for Google, TikTok, Reddit and Snap ads on the same *.mcp.pipeboard.co domain.
  • Unmatched targeting-research suitesearch_interests, validate_interests, search_behaviors, search_demographics and search_geo_locations (targeting.py:12-515) are not among the seven categories Meta's own documentation lists.

Verdict: use pipeboard's meta-ads-mcp for self-hosted, bring-your-own-Meta-app access and its targeting-research tool family — not as a substitute for Meta's own hosted server at mcp.facebook.com/ads, and not by trusting its README's tool count or tool names without checking the 6 tools gated behind undocumented environment flags. Unless you want a single-platform, Meta-hosted connector with no self-hosting and no env-flag surprises — then Meta's own server at mcp.facebook.com/ads is the better default.

07 Frequently asked questions

Does Meta have its own first-party ads MCP server?
Yes. Meta's developer documentation describes a Meta-hosted MCP server remote-hosted at mcp.facebook.com/ads, covering seven tool categories: comprehensive reporting, ad creation and management, catalog creation and management, signals and datasets, help and troubleshooting, A/B tests and conversion lift studies, and activity logs.
How many tools does pipeboard's meta-ads-mcp actually expose?
Source registers 43 tools across meta_ads_mcp/core/*.py, but 6 are gated behind undocumented environment flags (META_ADS_ENABLE_DUPLICATION, META_ADS_ENABLE_REPORTS, META_ADS_ENABLE_SAVE_AD_IMAGE_LOCALLY), so a default install's tools/list advertises 37, not the 42 the README states.
Do the tool names match the README?
No. The README documents tools as mcp_meta_ads_get_ad_accounts, mcp_meta_ads_create_campaign, etc., but FastMCP infers each name from the undecorated Python function, so a live handshake returns bare names like get_ad_accounts (accounts.py:44) and create_campaign (campaigns.py:12).
How does auth work?
Auth is OAuth-based: the mcp_meta_ads_get_login_link tool returns a clickable login link that bootstraps a Meta Marketing API access_token, rather than requiring a pre-provisioned token up front.
What's the licence, and is pipeboard actively maintained?
GitHub's licence field reports NOASSERTION. As of 2026-09-02 the repo has 1,225 stars and 271 forks, with a default-branch commit dated 2026-08-11 and latest release 1.0.120 (2026-08-10).
i
Sources & verification. Setup performed and every number on this page verified 2026-09-02 against: pipeboard-co/meta-ads-mcp on GitHub · Meta-hosted ads MCP server · pipeboard hosted meta-ads-mcp endpoint
AM
Alex Mashkovtsev
Founder · Eng Lead at INSO

Alex leads engineering at INSO, an AI-native product & commerce studio. He's shipped custom Shopify apps, checkout redesigns, and theme architecture for brands across the US and EU.