Meta Ads automation that just works. Trusted by 10,000+ businesses to analyze performance, test creatives, optimize spend, and scale results — simply and reliably.
Add to Claude Desktop config.json
{
"mcpServers": {
"pipeboard-co-meta-ads-mcp": {
"command": "python",
"args": [
"-m",
"meta_ads_mcp"
]
}
}
} Get the source and run locally
git clone https://github.com/pipeboard-co/meta-ads-mcp.git ~/.mcp/meta-ads-mcp
cd ~/.mcp/meta-ads-mcp 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 7605685552884596737
Sub-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. 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.
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_TOKEN
Get 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/"
}
}
}
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
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_TOKEN
This 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 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 for complete instructions.
✨ Get started with Remote MCP here - 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 for a simpler experience.
mcp_meta_ads_get_ad_accounts
access_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_info
access_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_pages
access_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_campaigns
access_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_details
access_token (optional): Meta API access token (will use cached token if not provided)campaign_id: Meta Ads campaign IDmcp_meta_ads_create_campaign
Create a new campaign in a Meta Ads account
Inputs:
access_token (optional): Meta API access token (will use cached token if not provided)
account_id: Meta Ads account ID (format: act_XXXXXXXXX)
name: Campaign name
objective: 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 applicable
daily_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.
Returns: Confirmation with new campaign details
Example:
{
"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_adsets
access_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_details
access_token (optional): Meta API access token (will use cached token if not provided)adset_id: Meta Ads ad set IDmcp_meta_ads_create_adset
account_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_ads
access_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_ad
account_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_details
access_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_get_ad_creatives
access_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_create_ad_creative
account_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_creative
creative_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_image
account_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_image
access_token (optional): Meta API access token (will use cached token if not provided)ad_id: Meta Ads ad IDmcp_meta_ads_update_ad
ad_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_adset
adset_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_insights
access_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_link
access_token (optional): Meta API access token (will use cached token if not provided)mcp_meta_ads_create_budget_schedule
campaign_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_interests
access_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_suggestions
access_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_interests
access_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_behaviors
access_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_demographics
access_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_locations
access_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. 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 instead.
MCP server acting as an interface to the Facebook Ads, enabling programmatic access to Facebook Ads data and management features.
A suite of marketing tools from Open Strategy Partners including writing style, editing codes, and product marketing value map creation.
This server supports remote MCP connections, includes built-in Google OAuth, and provide an interface to the Google Tag Manager API.
MCP server acting as an interface to the Google Ads, enabling programmatic access to Google Ads data and management features.