ArmaVita Meta Ads MCP
Manage Facebook, Instagram, and Threads ads via Meta Marketing API with 125 tools covering campaigns, reporting, leads, audiences, catalogs, creative assets, engagement, and measurement.
Ads management: Create, read, update, list, and clone campaigns, ad sets, ads, and ad creatives; manage budgets, schedules, statuses, and previews.
Reporting & analytics: Fetch insights with breakdowns, attribution windows, and filters; generate OSS-local performance reports (PDF or other formats).
Lead generation: Create and archive Instant Forms, retrieve submissions, test leads, and manage webhook subscriptions.
Audience targeting: Search interests, behaviors, demographics, geo-locations; estimate audience sizes; suggest related interests; manage custom and lookalike audiences.
Catalog & product ads: Manage products, sets, feeds, batch updates, diagnostics, and catalog advertising settings.
Creative assets: Upload and manage ad images, videos, playables, labels, and Instant Experiences; export ad image files.
Engagement: View and manage Facebook/Instagram ad comments and supported Threads ad replies.
Measurement & access: Manage pixels, datasets, CAPI, custom conversions, business assets, permissions, and publisher block lists.
Ad library search: Query Meta's public Ads Library for ad transparency data.
Automation: Use rules, A/B studies, value rules, and recommendations (per README capabilities).
Account & page tools: List and read ad accounts, search and list Facebook pages, and access account-level metadata.
Provides comprehensive tools for managing Meta Ads via the Marketing API, including managing ad accounts, campaigns, ad sets, and creatives, as well as generating insights reports and searching the Meta Ads Library.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ArmaVita Meta Ads MCP List my active campaigns and show performance insights for the last 30 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ArmaVita Meta Ads MCP
Manage Facebook, Instagram, and Threads ads from Claude Code, Codex, or another MCP-compatible assistant.
We built this for fast startup, low memory use, and broad advertising coverage in one local server. 125 tools cover campaigns, reporting, lead forms, catalogs, audiences, and more, with compact responses and safeguards for sensitive changes. Related actions share tools to keep the list manageable.
It runs as a single executable with no Python environment to maintain and uses Meta Marketing API v26.
Rust 2.0 release candidate: smoke tested and heavily used internally. Please report any issues you run into.
What you can do
Area | Capabilities |
Ads | Campaigns, ad sets, creatives, previews, budgets, schedules, and delivery checks |
Reporting | Insights, filters, attribution settings, breakdowns, async reports, and change history |
Leads | Create and archive Instant Forms, retrieve submissions, test leads, and manage webhook subscriptions |
Audiences | Custom and lookalike audiences, saved-audience lookup, targeting, uploads, and sharing |
Automation | Rules, A/B studies, value rules, and recommendations |
Catalogs | Products, sets, feeds, batch updates, diagnostics, and catalog advertising settings |
Creative assets | Account and Page media, playables, labels, and Instant Experiences |
Engagement | Facebook/Instagram ad comments and supported Threads ad replies |
Measurement and access | Pixels, datasets, CAPI, custom conversions, business assets, permissions, and publisher block lists |
Meta permissions and account eligibility still apply. Setup and limitations.
Related MCP server: meta-ads-mcp
Why we rebuilt it in Rust
We rebuilt our Python server for faster startup, lower memory use, and a single executable with no Python environment to maintain.
Metric | Python | Rust | Improvement |
Startup | 512 ms | 8.17 ms | ~63× faster |
Idle memory | 77.84 MiB | 16.30 MiB | ~79% less |
Runtime disk space | 45.7 MiB | 7.97 MiB | ~83% smaller |
Original rewrite baseline, measured on macOS arm64 on August 20, 2026. Startup uses warm-run medians; loading tool definitions was slower in this benchmark. Full results and methodology.
The rebuild also keeps credentials out of tool calls and adds write plans you can review before applying. See what changed from Python.
Get started
1. Install
Source builds require Rust 1.98.0, a C/C++ compiler, and CMake. From a checkout of the rust branch
or an extracted source release:
cargo install --locked --path .2. Authenticate
Set META_ACCESS_TOKEN in the environment used to launch your MCP client. Your token needs the
appropriate Meta permissions and access to the ad accounts you want to manage.
For browser login instead, set META_APP_ID and META_APP_SECRET, then run:
armavita-meta-ads-mcp --loginBrowser login saves a private local token cache on macOS/Linux. On Windows, use META_ACCESS_TOKEN.
Never put credentials in prompts or committed configuration files.
3. Connect your assistant
For clients that use JSON MCP configuration, add:
{
"mcpServers": {
"meta-ads-armavita": {
"command": "armavita-meta-ads-mcp",
"args": ["--transport=stdio"]
}
}
}Claude Code can use the included .mcp.json. For Codex, use the
TOML configuration example.
Full setup guide: permissions, authentication, client settings, and media uploads.
Before changing live ads
Keep write approvals enabled in your MCP client. Review mutation plans before applying them; deletes require an explicit acknowledgement. The server never automatically retries a write.
Local uploads are off by default. Set META_MEDIA_ROOT to a folder you control to enable them.
See security guidance for details.
Coming from the Python version? Some tool names, inputs, and results have changed. Read the migration guide before switching.
License
Copyright (c) ArmaVita LLC. GNU AGPLv3 only (AGPL-3.0-only). Distributed without warranty.
Available Tools
40 toolsclone_adC
Duplicate an ad using Meta's local Graph copy edge.
Inputs: ad_id (required), meta_access_token, target_ad_set_id, name_suffix, +3 more. Returns: result
clone_ad_creativeC
Duplicate a creative using Meta's local Graph copy edge.
Inputs: ad_creative_id (required), meta_access_token, name_suffix, new_primary_text, +4 more. Returns: result
clone_ad_setC
Duplicate an ad set using Meta's local Graph copy edge.
Inputs: ad_set_id (required), meta_access_token, target_campaign_id, name_suffix, +5 more. Returns: result
clone_campaignC
Duplicate a campaign using Meta's local Graph copy edge.
Inputs: campaign_id (required), meta_access_token, name_suffix, include_ad_sets, +5 more. Returns: result
create_adD
Inputs: ad_account_id (required), name (required), ad_set_id (required), ad_creative_id (required), +4 more. Returns: result
create_ad_creativeD
Inputs: ad_account_id (required), ad_image_hash, meta_access_token, name, +18 more. Returns: result
create_ad_setC
Create an ad set under a campaign.
Inputs: ad_account_id (required), campaign_id (required), name (required), optimization_goal (required), +15 more. Returns: result
create_campaignC
Create a campaign with optional budgeting and bid controls.
Inputs: ad_account_id (required), name (required), objective (required), meta_access_token, +11 more. Returns: result
create_campaign_budget_scheduleC
Create a high-demand budget schedule for a campaign.
Inputs: campaign_id (required), budget_value (required), budget_value_type (required), time_start (required), +2 more. Returns: result
create_reportC
Generate OSS-local performance reports for Meta Ads accounts/campaigns.
Inputs: ad_account_id (required), meta_access_token, report_type, date_range, +8 more. Returns: result
estimate_audience_sizeB
Estimate audience size for targeting specs or validate deprecated interest-list mode.
Inputs: meta_access_token, ad_account_id, targeting, optimization_goal, +2 more. Returns: result
export_ad_image_fileD
Inputs: ad_id (required), meta_access_token, output_dir. Returns: result
list_account_pagesD
Inputs: ad_account_id (required), meta_access_token. Returns: result
list_ad_accountsC
List ad accounts visible to a user context.
Inputs: meta_access_token, meta_user_id, page_size, page_cursor. Returns: result
list_ad_creativesD
Inputs: ad_id (required), meta_access_token, page_cursor. Returns: result
list_ad_previewsD
Inputs: ad_id (required), meta_access_token, ad_format, locale, +3 more. Returns: result
list_adsD
Inputs: ad_account_id (required), meta_access_token, page_size, campaign_id, +2 more. Returns: result
list_ad_setsC
List ad sets under an account or campaign.
Inputs: ad_account_id (required), meta_access_token, page_size, campaign_id, +1 more. Returns: result
list_campaignsC
List campaigns for an ad account with optional filters.
Inputs: ad_account_id (required), meta_access_token, page_size, status_filter, +2 more. Returns: result
list_insightsC
Fetch insights for an account, campaign, ad set, or ad.
Inputs: object_id (required), meta_access_token, date_range, breakdown, +8 more. Returns: result
read_adD
Inputs: ad_id (required), meta_access_token. Returns: result
read_ad_accountC
Return account metadata for a single ad account.
Inputs: ad_account_id (required), meta_access_token. Returns: result
read_ad_creativeD
Inputs: ad_creative_id (required), meta_access_token. Returns: result
read_ad_imageD
Inputs: ad_id (required), meta_access_token.
read_ad_setC
Fetch full details for one ad set.
Inputs: ad_set_id (required), meta_access_token. Returns: result
read_campaignC
Fetch detailed campaign metadata.
Inputs: campaign_id (required), meta_access_token. Returns: result
read_web_contentC
Fetch complete record data by ID using cache-first + API fallback behavior.
Inputs: resource_id (required). Returns: result
search_ads_archiveC
Search ads in Meta's public Ads Library endpoint.
Inputs: search_terms (required), ad_reached_countries (required), meta_access_token, ad_type, +3 more. Returns: result
search_behaviorsC
Search behavior-based targeting categories.
Inputs: meta_access_token, page_size, page_cursor. Returns: result
search_demographicsC
Search demographic targeting classes.
Inputs: meta_access_token, demographic_class, page_size, page_cursor. Returns: result
search_geo_locationsC
Search geo-location entities for targeting.
Inputs: query (required), meta_access_token, location_types, page_size, +1 more. Returns: result
search_interestsC
Find audience interests by keyword.
Inputs: query (required), meta_access_token, page_size, page_cursor. Returns: result
search_pagesD
Inputs: ad_account_id (required), meta_access_token, query. Returns: result
search_web_contentC
Search through Meta Ads data and return matching record IDs.
Inputs: query (required), meta_access_token. Returns: result
suggest_interestsC
Fetch related interests from a base list of interests.
Inputs: interest_list (required), meta_access_token, page_size, page_cursor. Returns: result
update_adD
Inputs: ad_id (required), status, bid_amount, tracking_specs, +2 more. Returns: result
update_ad_creativeD
Inputs: ad_creative_id (required), meta_access_token, name, primary_text, +10 more. Returns: result
update_ad_setC
Update an ad set's delivery, budgeting, and targeting configuration.
Inputs: ad_set_id (required), frequency_control_specs, bid_strategy, bid_amount, +8 more. Returns: result
update_campaignC
Update campaign settings for an existing campaign.
Inputs: campaign_id (required), meta_access_token, name, status, +9 more. Returns: result
upload_ad_image_assetD
Inputs: ad_account_id (required), meta_access_token, image_file_path, image_source_url, +1 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 40 tools
Most tools are clearly distinct, targeting specific resources like ads, creatives, ad sets, campaigns, and targeting categories. However, some tools like 'search_web_content' and 'read_web_content' have ambiguous boundaries with other search/read tools, and 'create_report' overlaps in purpose with 'list_insights' for performance data, which could cause mild confusion.
Tool names follow a highly consistent verb_noun pattern throughout, such as 'create_ad', 'list_campaigns', 'read_ad_account', 'update_ad_set', 'search_interests', and 'clone_ad_creative'. There are no deviations in naming conventions, making the set predictable and easy to parse.
With 40 tools, the count is excessive for the apparent scope of Meta Ads management. This many tools can overwhelm agents and increase complexity, as typical well-scoped servers have 3-15 tools. It suggests over-fragmentation of operations that could be consolidated.
The tool surface provides comprehensive coverage for the Meta Ads domain, including full CRUD operations for ads, creatives, ad sets, and campaigns, along with reporting, audience estimation, targeting searches, and asset management. There are no obvious gaps, enabling agents to handle complete workflows without dead ends.
Maintenance
Related MCP Connectors
Meta Ads MCP server: run Facebook and Instagram campaigns, ad sets, ads and reports from AI.
1Hosted Meta Ads MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Meta Ads and Google Ads MCP server: 250+ tools for Claude, ChatGPT, Cursor and Codex.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
- AlicenseAqualityBmaintenanceA Model Context Protocol server that allows AI models to access, analyze, and manage Meta advertising campaigns, enabling LLMs to retrieve performance data, visualize ad creatives, and provide strategic insights for Facebook and Instagram platforms.351,356Business Source 1.1
- AlicenseAqualityDmaintenanceMCP server to manage Meta Ads (Facebook/Instagram) campaigns, ad sets, insights, and audiences from Claude Code using natural language.98 npmMIT
- AlicenseNot gradedqualityDmaintenancePython MCP server that exposes Meta Marketing API data, providing tools to manage ad accounts, campaigns, and analytics through natural language interfaces.MIT
- AlicenseBqualityDmaintenanceMCP server for Meta Ads providing 30 tools for account discovery, campaign management, targeting research, and insights. Designed with LLM-friendly outputs and productivity features like cloning and bulk operations.311MIT