Meta Ads Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Meta Ads Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server that lets AI assistants run your Meta Ads end to end — launch campaigns, upload creatives, update budgets, and dig into performance through natural conversation. Works across Facebook, Instagram, and other Meta surfaces.
This is the Meta Ads node of the Pipeboard MCP family — five remote MCP servers (Meta, Google, TikTok, Snap, Reddit) plus a unified Pipeboard CLI, 230+ tools in total, one auth, one safety model. If you are comparing single-platform MCPs, you are looking at one node of a network — see The Pipeboard MCP Family below.
Note: This is an independent open-source project that uses Meta's public APIs. If you're looking for an officially approved Meta app, check out Pipeboard. Meta, Facebook, Instagram, and other Meta brand names are trademarks of their respective owners.
mcp-name: co.pipeboard/meta-ads-mcp
Pipeboard ships a remote MCP server for every major ad platform — plus a single-binary CLI that wraps all of them. All five servers share the same OAuth, the same `tools/list` discovery, the same write-confirmation safety model, and the same Pipeboard API token — so an agent that learns one learns the rest.
| Platform | Remote MCP URL | Surface |
|---|---|---|
| Meta Ads MCP (Facebook + Instagram) | https://meta-ads.mcp.pipeboard.co/ | 42 tools — campaigns, ad sets, ads, creatives (incl. dynamic creative testing), image upload, insights, interest / behavior / demographic / geo targeting, page management |
| Google Ads MCP | https://google-ads.mcp.pipeboard.co/ | 59 tools — campaigns, ad groups, responsive search ads, Performance Max, keywords, GAQL queries, extensions (sitelinks, callouts, structured snippets), audiences, asset uploads, generic mutate |
| TikTok Ads MCP | https://tiktok-ads.mcp.pipeboard.co/ | 59 tools — campaigns, ad groups, ads, identities, image and video upload, audience and creative management, insights |
| Snap Ads MCP | https://snap-ads.mcp.pipeboard.co/ | 37 tools — ad accounts, campaigns, ad squads, ads, creatives, media upload, insights |
| Reddit Ads MCP | https://reddit-ads.mcp.pipeboard.co/ | 33 tools — accounts, campaigns, ad groups, ads, performance reports |
That is 230+ tools across five ad platforms behind one auth. Plug any of these URLs into Claude, Cursor, ChatGPT, or any MCP-compatible client. Connect your ad accounts once at pipeboard.co and every client gets access.
Pipeboard CLI is a single Go binary that exposes every MCP tool above as a typed shell command — built for AI coding agents (Claude Code, Cline, OpenClaw, Codex) and automation scripts that prefer subprocess calls over JSON-RPC:
brew install pipeboard-co/tap/pipeboard
export PIPEBOARD_API_TOKEN=<your-token>
pipeboard meta-ads get-campaigns --account-id act_123
pipeboard google-ads execute-gaql-query --customer-id 1234567890 --query "..."
pipeboard tiktok-ads get-campaigns --advertiser-id 7605685552884596737Sub-50ms startup, no MCP handshake per call, all five platforms in one binary. Full docs in the pipeboard-cli repo.
Single-platform MCP benchmarks miss the point. The value is the network, not the node.
The fastest and most reliable way to get started is to [🚀 Get started with our Meta Ads Remote MCP](https://pipeboard.co). Our cloud service uses streamable HTTP transport for reliable, scalable access to your Meta Ads account. No technical setup required — just connect and start launching, updating, and analyzing campaigns with AI!
https://meta-ads.mcp.pipeboard.co/That's it! You can now ask Claude to analyze your Meta ad campaigns, get performance insights, and manage your advertising.
#### Advanced: Direct Token Authentication (Claude)
For direct token-based authentication without the interactive flow, use this URL format when adding the integration:
https://meta-ads.mcp.pipeboard.co/?token=YOUR_PIPEBOARD_TOKENGet your token at pipeboard.co/api-tokens.
Add the following to your ~/.cursor/mcp.json. Once you enable the remote MCP, click on "Needs login" to finish the login process.
{
"mcpServers": {
"meta-ads-remote": {
"url": "https://meta-ads.mcp.pipeboard.co/"
}
}
}#### Advanced: Direct Token Authentication (Cursor)
If you prefer to authenticate without the interactive login flow, you can include your Pipeboard API token directly in the URL:
{
"mcpServers": {
"meta-ads-remote": {
"url": "https://meta-ads.mcp.pipeboard.co/?token=YOUR_PIPEBOARD_TOKEN"
}
}
}Get your token at pipeboard.co/api-tokens.
Use the Remote MCP URL: https://meta-ads.mcp.pipeboard.co/
[📖 Get detailed setup instructions for your AI client here](https://pipeboard.co)
#### Advanced: Direct Token Authentication (OpenClaw and other clients)
For MCP clients that support token-based authentication, you can append your Pipeboard API token to the URL:
https://meta-ads.mcp.pipeboard.co/?token=YOUR_PIPEBOARD_TOKENThis bypasses the interactive login flow and authenticates immediately. Get your token at pipeboard.co/api-tokens.
Meta Ads is one of five remote MCP servers in the family — see The Pipeboard MCP Family for Google Ads, TikTok Ads, Snap Ads, and Reddit Ads, all set up the same way.
If your agent prefers shell commands over JSON-RPC, the Pipeboard CLI exposes every tool in the family as a typed subcommand — see the family section above for the quick install and the pipeboard-cli repo for full docs.
🚀 We strongly recommend using [Remote MCP](https://pipeboard.co) instead - it's faster, more reliable, and requires no technical setup.
Meta Ads MCP also supports a local streamable HTTP transport, allowing you to run it as a standalone HTTP API for web applications and custom integrations. See [Streamable HTTP Setup Guide](STREAMABLE_HTTP_SETUP.md) for complete instructions.
[✨ Get started with Remote MCP here](https://pipeboard.co) - no technical setup required! Just connect your Facebook Ads account and start asking AI to analyze your campaigns.
For advanced users who need to self-host, the package can be installed from source. Local installations require creating your own Meta Developer App. We recommend using [Remote MCP](https://pipeboard.co) for a simpler experience.
mcp_meta_ads_get_ad_accountsaccess_token (optional): Meta API access token (will use cached token if not provided)user_id: Meta user ID or "me" for the current userlimit: Maximum number of accounts to return (default: 200)mcp_meta_ads_get_account_infoaccess_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)mcp_meta_ads_get_account_pagesaccess_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX) or "me" for the current user's pagesmcp_meta_ads_get_campaignsaccess_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)limit: Maximum number of campaigns to return (default: 10)status_filter: Filter by status (empty for all, or 'ACTIVE', 'PAUSED', etc.)mcp_meta_ads_get_campaign_detailsaccess_token (optional): Meta API access token (will use cached token if not provided)campaign_id: Meta Ads campaign IDmcp_meta_ads_create_campaignaccess_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)name: Campaign nameobjective: Campaign objective (ODAX, outcome-based). Must be one of:OUTCOME_AWARENESSOUTCOME_TRAFFICOUTCOME_ENGAGEMENTOUTCOME_LEADSOUTCOME_SALESOUTCOME_APP_PROMOTIONNote: Legacy objectives such as BRAND_AWARENESS, LINK_CLICKS, CONVERSIONS, APP_INSTALLS, etc. are no longer valid for new campaigns and will cause a 400 error. Use the outcome-based values above. Common mappings:
BRAND_AWARENESS → OUTCOME_AWARENESSREACH → OUTCOME_AWARENESSLINK_CLICKS, TRAFFIC → OUTCOME_TRAFFICPOST_ENGAGEMENT, PAGE_LIKES, EVENT_RESPONSES, VIDEO_VIEWS → OUTCOME_ENGAGEMENTLEAD_GENERATION → OUTCOME_LEADSCONVERSIONS, CATALOG_SALES, MESSAGES (sales-focused flows) → OUTCOME_SALESAPP_INSTALLS → OUTCOME_APP_PROMOTIONstatus: Initial campaign status (default: PAUSED)special_ad_categories: List of special ad categories if applicabledaily_budget: Daily budget in account currency (in cents)lifetime_budget: Lifetime budget in account currency (in cents)bid_strategy: Bid strategy. Must be one of: LOWEST_COST_WITHOUT_CAP, LOWEST_COST_WITH_BID_CAP, COST_CAP, LOWEST_COST_WITH_MIN_ROAS. {
"name": "2025 - Bedroom Furniture - Awareness",
"account_id": "act_123456789012345",
"objective": "OUTCOME_AWARENESS",
"special_ad_categories": [],
"status": "PAUSED",
"buying_type": "AUCTION",
"bid_strategy": "LOWEST_COST_WITHOUT_CAP",
"daily_budget": 10000
}mcp_meta_ads_get_adsetsaccess_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)limit: Maximum number of ad sets to return (default: 10)campaign_id: Optional campaign ID to filter bymcp_meta_ads_get_adset_detailsaccess_token (optional): Meta API access token (will use cached token if not provided)adset_id: Meta Ads ad set IDmcp_meta_ads_create_adsetaccount_id: Meta Ads account ID (format: act_XXXXXXXXX)campaign_id: Meta Ads campaign ID this ad set belongs toname: Ad set namestatus: Initial ad set status (default: PAUSED)daily_budget: Daily budget in account currency (in cents) as a stringlifetime_budget: Lifetime budget in account currency (in cents) as a stringtargeting: Targeting specifications (e.g., age, location, interests)optimization_goal: Conversion optimization goal (e.g., 'LINK_CLICKS')billing_event: How you're charged (e.g., 'IMPRESSIONS')bid_amount: Bid amount in cents. Required for LOWEST_COST_WITH_BID_CAP, COST_CAP, TARGET_COST.bid_strategy: Bid strategy (e.g., 'LOWEST_COST_WITHOUT_CAP', 'LOWEST_COST_WITH_MIN_ROAS')bid_constraints: Bid constraints dict. Required for LOWEST_COST_WITH_MIN_ROAS (e.g., {"roas_average_floor": 20000})start_time, end_time: Optional start/end times (ISO 8601)access_token (optional): Meta API access tokenmcp_meta_ads_get_adsaccess_token (optional): Meta API access token (will use cached token if not provided)account_id: Meta Ads account ID (format: act_XXXXXXXXX)limit: Maximum number of ads to return (default: 10)campaign_id: Optional campaign ID to filter byadset_id: Optional ad set ID to filter bymcp_meta_ads_create_adaccount_id: Meta Ads account ID (format: act_XXXXXXXXX)name: Ad nameadset_id: Ad set ID where this ad will be placedcreative_id: ID of an existing creative to usestatus: Initial ad status (default: PAUSED)bid_amount: Optional bid amount (in cents)tracking_specs: Optional tracking specificationsaccess_token (optional): Meta API access tokenmcp_meta_ads_get_ad_detailsaccess_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_get_ad_creativesaccess_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_create_ad_creativeaccount_id: Meta Ads account ID (format: act_XXXXXXXXX)name: Creative nameimage_hash: Hash of the uploaded imagepage_id: Facebook Page ID for the adlink_url: Destination URLmessage: Ad copy/textheadline: Single headline for simple ads (cannot be used with headlines)headlines: List of headlines for dynamic creative testing (cannot be used with headline)description: Single description for simple ads (cannot be used with descriptions)descriptions: List of descriptions for dynamic creative testing (cannot be used with description)dynamic_creative_spec: Dynamic creative optimization settingscall_to_action_type: CTA button type (e.g., 'LEARN_MORE')instagram_actor_id: Optional Instagram account IDaccess_token (optional): Meta API access tokenmcp_meta_ads_update_ad_creativecreative_id: Meta Ads creative ID to updatename: New creative namemessage: New ad copy/textheadline: Single headline for simple ads (cannot be used with headlines)headlines: New list of headlines for dynamic creative testing (cannot be used with headline)description: Single description for simple ads (cannot be used with descriptions)descriptions: New list of descriptions for dynamic creative testing (cannot be used with description)dynamic_creative_spec: New dynamic creative optimization settingscall_to_action_type: New call to action button typeaccess_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_upload_ad_imageaccount_id: Meta Ads account ID (format: act_XXXXXXXXX)image_path: Path to the image file to uploadname: Optional name for the imageaccess_token (optional): Meta API access tokenmcp_meta_ads_get_ad_imageaccess_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_update_adad_id: Meta Ads ad IDstatus: Update ad status (ACTIVE, PAUSED, etc.)bid_amount: Bid amount in account currency (in cents for USD)access_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_update_adsetadset_id: Meta Ads ad set IDfrequency_control_specs: List of frequency control specificationsbid_strategy: Bid strategy (e.g., 'LOWEST_COST_WITH_BID_CAP', 'LOWEST_COST_WITH_MIN_ROAS')bid_amount: Bid amount in cents. Required for LOWEST_COST_WITH_BID_CAP, COST_CAP, TARGET_COST.bid_constraints: Bid constraints dict. Required for LOWEST_COST_WITH_MIN_ROAS (e.g., {"roas_average_floor": 20000})status: Update ad set status (ACTIVE, PAUSED, etc.)targeting: Targeting specifications including targeting_automationaccess_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_get_insightsaccess_token (optional): Meta API access token (will use cached token if not provided)object_id: ID of the campaign, ad set, ad or accounttime_range: Time range for insights (default: maximum)breakdown: Optional breakdown dimension (e.g., age, gender, country)level: Level of aggregation (ad, adset, campaign, account)action_attribution_windows (optional): List of attribution windows for conversion data (e.g., ["1d_click", "1d_view", "7d_click", "7d_view"]). When specified, actions and cost_per_action_type include additional fields for each window. The 'value' field always shows 7d_click attribution.mcp_meta_ads_get_login_linkaccess_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_create_budget_schedulecampaign_id: Meta Ads campaign IDbudget_value: Amount of budget increasebudget_value_type: Type of budget value ("ABSOLUTE" or "MULTIPLIER")time_start: Unix timestamp for when the high demand period should starttime_end: Unix timestamp for when the high demand period should endaccess_token (optional): Meta API access tokenmcp_meta_ads_search_interestsaccess_token (optional): Meta API access token (will use cached token if not provided)query: Search term for interests (e.g., "baseball", "cooking", "travel")limit: Maximum number of results to return (default: 25)mcp_meta_ads_get_interest_suggestionsaccess_token (optional): Meta API access token (will use cached token if not provided)interest_list: List of interest names to get suggestions for (e.g., ["Basketball", "Soccer"])limit: Maximum number of suggestions to return (default: 25)mcp_meta_ads_validate_interestsaccess_token (optional): Meta API access token (will use cached token if not provided)interest_list: List of interest names to validate (e.g., ["Japan", "Basketball"])interest_fbid_list: List of interest IDs to validate (e.g., ["6003700426513"])mcp_meta_ads_search_behaviorsaccess_token (optional): Meta API access token (will use cached token if not provided)limit: Maximum number of results to return (default: 50)mcp_meta_ads_search_demographicsaccess_token (optional): Meta API access token (will use cached token if not provided)demographic_class: Type of demographics ('demographics', 'life_events', 'industries', 'income', 'family_statuses', 'user_device', 'user_os')limit: Maximum number of results to return (default: 50)mcp_meta_ads_search_geo_locationsaccess_token (optional): Meta API access token (will use cached token if not provided)query: Search term for locations (e.g., "New York", "California", "Japan")location_types: Types of locations to search (['country', 'region', 'city', 'zip', 'geo_market', 'electoral_district'])limit: Maximum number of results to return (default: 25)mcp_meta_ads_search (Enhanced)access_token (optional): Meta API access token (will use cached token if not provided)query: Search query string (e.g., "Injury Payouts pages", "active campaigns")Meta Ads MCP is licensed under the Business Source License 1.1, which means:
The only restriction is that you cannot offer this as a competing hosted service. For questions about commercial licensing, please contact us.
Meta Ads MCP follows security best practices with secure token management and automatic authentication handling.
Test your Meta Ads MCP connection with any MCP client:
mcp_meta_ads_get_ad_accountsmcp_meta_ads_get_account_info with your account IDmcp_meta_ads_get_campaigns to see your ad campaignsFor detailed local installation testing, see the source repository.
The easiest way to avoid any setup issues is to [🎯 use our Remote MCP instead](https://pipeboard.co). No downloads, no configuration - just connect your ads account and start getting AI insights on your campaigns immediately!
For local installation issues, refer to the source repository. For the easiest experience, we recommend using [Remote MCP](https://pipeboard.co) instead.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.