meta-ads-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Logging level: debug, info, warn, or error. Default is info. | info |
| META_API_VERSION | No | Graph API version to use. Default is v26.0. | v26.0 |
| META_ACCESS_TOKEN | Yes | Required. Your Meta access token with at least ads_read permission. | |
| META_ENABLE_WRITES | No | Set to '1' to enable the write tools. Default is unset (writes disabled). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| meta_health_checkA | Agent-ready read-only health check: validates token metadata, lists accessible ad accounts, and warns about missing read scopes without exposing the access token. |
| meta_get_business_assetsB | Discover accessible Meta Business assets read-only: businesses, pages, Instagram accounts, pixels, and datasets when permissions allow. |
| meta_get_pagesA | List accessible Facebook Pages with id, name, category, tasks, picture, and linked Instagram account references when available. |
| meta_get_instagram_accountsA | List Instagram accounts linked to accessible Pages, Business Manager assets, or an ad account when permissions allow. |
| meta_get_pixelsA | List pixels and datasets from an ad account or Business Manager when accessible, returning actionable warnings for permission-limited edges. |
| meta_get_ad_activityA | Read ad account activity logs from /{ad_account_id}/activities with object, event, actor, timestamp, and extra_data fields. |
| meta_get_delivery_diagnosticsB | Aggregate read-only delivery diagnostics across campaigns, ad sets, and ads using status/effective_status/issues_info where available plus simple delivery insights. |
| meta_get_creative_assetsA | Return normalized creative asset metadata for ads or creative IDs: thumbnail, object_story_spec, asset_feed_spec, video/image/link URL, CTA, and page/IG references. |
| meta_get_audience_detailsB | Read detailed custom, saved, and lookalike audiences with pagination and rich fields where permissions allow. |
| meta_get_catalog_productsA | Read Product Catalogs and Product Items when catalog access is available. Returns join-ready product metadata without creating or updating catalog assets. |
| meta_join_product_insightsC | Query product-breakdown insights and enrich rows with Product Catalog metadata when catalog access is available. |
| meta_get_brand_safety_controlsB | Read brand safety, suitability, placement, and context-control signals from ad account/ad set targeting and optional block-list edges. |
| meta_interpret_experiment_resultsC | Read and interpret A/B test or conversion lift study results with confidence guardrails, cells, objectives, and optional cell entities. |
| meta_get_organic_content_enrichmentC | Enrich Facebook Page posts and Instagram organic media with media URLs, permalinks, counts, attachments, and optional read-only insights. |
| meta_list_ad_accountsA | List all Meta ad accounts accessible with the current token. Returns account ID, name, currency, timezone, and status. |
| meta_get_account_detailsA | Get detailed information for a specific Meta ad account: name, currency, timezone, spend cap, status, business info. |
| meta_get_campaignsB | List campaigns for a Meta ad account. Returns campaign ID, name, status, objective, budget, and bid strategy. |
| meta_get_adsetsA | List ad sets for a Meta ad account, optionally filtered by campaign. Returns targeting, budget, optimization, and schedule info. |
| meta_get_adsA | List ads for a Meta ad account, optionally filtered by ad set. Returns ad ID, name, status, and creative reference. |
| meta_get_insightsB | Query Meta Ads performance insights. Supports 170+ metrics, 43+ breakdowns with intelligent query planning. Use meta://metrics resource to see available metrics. Use meta://breakdowns for available breakdowns. The query planner automatically splits incompatible metric/breakdown combinations into multiple API requests and merges results. |
| meta_get_campaign_structureA | Get hierarchical campaign structure: campaigns -> ad sets -> ads. Useful for understanding account organization. |
| meta_get_creativesC | Get ad creative content: text, images, videos, links, call-to-action. Returns creative details for specified ads. |
| meta_get_audiencesC | List custom, saved, and lookalike audiences for a Meta ad account. |
| meta_get_ad_studiesA | List conversion lift studies and A/B tests (Ad Studies) for an ad account. Includes study type, status, and cells. |
| meta_get_study_resultsB | Get detailed results for a conversion lift or A/B test study. Returns objectives, cells, and lift results. |
| meta_validate_queryA | Validate a metric/breakdown combination BEFORE executing. Returns errors and warnings. Use this to check if your query will work. |
| meta_get_page_postsC | Get recent posts from a connected Facebook/Instagram page. Requires page access. |
| meta_debug_tokenA | Check the current access token validity, expiration, and granted scopes. Useful for diagnosing auth issues. |
| meta_search_entitiesA | Search campaigns, ad sets, or ads by name within an ad account. Useful for finding specific entities. |
| meta_get_node_fieldsA | Read arbitrary flat fields from one Meta Graph node. This GET-only escape hatch covers newly released campaign, ad set, ad, creative, audience, catalog, Page, Instagram, pixel, and other accessible node fields without waiting for a fixed MCP schema update. |
| meta_list_edge_rawA | List an allowlisted read-only Meta Graph edge with caller-selected flat fields, filters, and cursor pagination. Use this for broad metadata/entity discovery when a specialized tool does not expose a newly added field. |
| meta_get_insights_rawA | Query the Meta Insights edge with validated native field names, breakdowns, action breakdowns, attribution windows, filters, sort, summary, and pagination. This complements meta_get_insights when Meta adds fields before the curated metric catalog is updated. |
| meta_search_targeting_optionsB | Search Meta's read-only targeting metadata for interests, validated interests, geographies, locales, countries, cities, regions, markets, or postal codes. |
| meta_get_ad_previewA | Get the read-only preview markup for an existing Meta ad in a requested placement format. The response may contain an iframe body but never creates or edits a creative. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| meta-metrics | |
| meta-breakdowns | |
| meta-compatibility | |
| meta-manifest | |
| meta-recipes | |
| meta-p2-readonly | |
| meta-app-review |
TDQS
Scored across 34 tools
Most tools target distinct resources, but several pairs blur together: meta_get_creative_assets vs meta_get_creatives, meta_get_audience_details vs meta_get_audiences, meta_health_check vs meta_debug_token, and meta_get_study_results vs meta_interpret_experiment_results. The raw escape-hatch tools also add ambiguity about when to use them instead of specialized getters.
All tools share the meta_ prefix and snake_case, and most follow a predictable verb_noun pattern using list_ or get_. Minor exceptions like meta_health_check and the variety of verbs (interpret, validate, debug, join) keep it from being perfectly consistent.
At 34 tools, the surface is well above the typical well-scoped range and feels heavy. Several tools could be consolidated—audience list/detail, creative getters, auth checks, and raw generic tools—so the high count is not fully justified.
As a read-only Meta Ads data-access surface, it is quite thorough: accounts, campaigns, ad sets, ads, creatives, audiences, insights, experiments, assets, catalogs, and organic content are all covered. Minor gaps exist if write/management workflows are expected, and there is no dedicated single-campaign/single-ad-set getter aside from the generic meta_get_node_fields.