Skip to main content
Glama
ArmaVita Meta Ads MCP

ArmaVita Meta Ads MCP

by EfrainTorres

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 --login

Browser 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 tools
clone_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

    C2.4/5.0

    Scored across 40 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count2/5

    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.

    Completeness5/5

    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

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      A 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.
      35
      1,356
      Business Source 1.1
    • A
      license
      A
      quality
      D
      maintenance
      MCP server to manage Meta Ads (Facebook/Instagram) campaigns, ad sets, insights, and audiences from Claude Code using natural language.
      9
      8 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Python MCP server that exposes Meta Marketing API data, providing tools to manage ad accounts, campaigns, and analytics through natural language interfaces.
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      MCP 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.
      31
      1
      MIT