Armavita Meta Ads Mcp

by EfrainTorres

208 downloads
Not rated
GitHub

Description

# Meta, Instagram, Facebook Ads MCP <p align="center"> <img src="docs/assets/armavita-meta-ads-mcp-hero-1080.jpg" alt="ArmaVita Meta Ads MCP hero image" width="100%" /> </p> <p align="center"><strong>Brought to you by <a href="https://armavita.com">ArmaVita.com</a></strong></p>…

About

# Meta, Instagram, Facebook Ads MCP <p align="center"> <img src="docs/assets/armavita-meta-ads-mcp-hero-1080.jpg" alt="ArmaVita Meta Ads MCP hero image" width="100%" /> </p> <p align="center"><strong>Brought to you by <a href="https://armavita.com">ArmaVita.com</a></strong></p> <p align="center">Need a custom…

Details

Author
EfrainTorres
Downloads
208
Categories
Other

- Supports both Meta access token and local OAuth authentication.
- Provides tools for accounts, campaigns, ad sets, ads, and creatives.
- Includes insights and reporting with date range or presets.
- Offers targeting tools: interest/behavior/demographic search and audience estimation.
- Supports duplication of campaigns, ad sets, and ads.
- Uses cursor-based pagination on list endpoints.
- Redacts access tokens from returned URL fields for security.
- Only supports stdio MCP transport (no HTTP).

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Armavita Meta Ads Mcp
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install the package via pip (pip install armavita-meta-ads-mcp) or from source (uv sync). Configure authentication by setting either a META_ACCESS_TOKEN environment variable (access token mode) or both META_APP_ID and META_APP_SECRET (OAuth mode). Run the server with armavita-meta-ads-mcp and optionally --login for OAuth flow. Register the server in your MCP client using the provided JSON configuration.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "armavita meta ads mcp": {
            "meta-ads-armavita": {
                "command": "bash",
                "args": [
                    "/absolute/path/to/armavita-meta-ads-mcp/run.sh"
                ],
                "env": {
                    "META_ACCESS_TOKEN": "<YOUR_META_ACCESS_TOKEN>"
                }
            }
        }
    }
}

McpServers

{
    "meta-ads-armavita": {
        "command": "bash",
        "args": [
            "/absolute/path/to/armavita-meta-ads-mcp/run.sh"
        ],
        "env": {
            "META_ACCESS_TOKEN": "<YOUR_META_ACCESS_TOKEN>"
        }
    }
}

Meta, Instagram, Facebook Ads MCP

<p align="center">
ArmaVita Meta Ads MCP hero image
</p>

<p align="center"><strong>Brought to you by <a href="https://armavita.com">ArmaVita.com</a></strong></p>
<p align="center">Need a custom implementation? <a href="https://armavita.com">Contact us</a>.</p>

armavita-meta-ads-mcp is a local Model Context Protocol server for Meta Ads.
It is built for local MCP clients (Claude Code, Cursor, Codex) and supports:

- Meta access token auth (META_ACCESS_TOKEN)
- Local OAuth flow (META_APP_ID + META_APP_SECRET)
- stdio MCP transport only
- Python 3.11+
- mcp[cli]==1.26.0
- Meta Marketing API v25.0 by default (META_GRAPH_API_VERSION override supported)

Current contract version: 1.1.0.

Install

From PyPI (once published):

pip install armavita-meta-ads-mcp

From source (recommended during development):

uv sync

Run

armavita-meta-ads-mcp

Module entrypoint:

python -m armavita_meta_ads_mcp

Login flow:

armavita-meta-ads-mcp --login

Quick MCP Client Config

Minimal MCP server registration (JSON format used by many clients):

{
  "mcpServers": {
    "meta-ads-armavita": {
      "command": "armavita-meta-ads-mcp",
      "env": {
        "META_ACCESS_TOKEN": "EA...",
        "META_GRAPH_API_VERSION": "v25.0"
      }
    }
  }
}

OAuth mode (no direct token in config):

{
  "mcpServers": {
    "meta-ads-armavita": {
      "command": "armavita-meta-ads-mcp",
      "env": {
        "META_APP_ID": "YOUR_APP_ID",
        "META_APP_SECRET": "YOUR_APP_SECRET"
      }
    }
  }
}

Then run once to complete login:

armavita-meta-ads-mcp --login

Tool Coverage

- Accounts: list_ad_accounts, read_ad_account
- Campaigns: list_campaigns, read_campaign, create_campaign, update_campaign
- Budget schedules: create_campaign_budget_schedule
- Ad sets: list_ad_sets, read_ad_set, create_ad_set, update_ad_set
- Ads/creatives/media: list_ads, read_ad, list_ad_previews, create_ad, update_ad, list_ad_creatives, read_ad_creative, create_ad_creative, update_ad_creative, upload_ad_image_asset, read_ad_image, export_ad_image_file, search_pages, list_account_pages
- Insights/reporting: list_insights, create_report
- Targeting: search_interests, suggest_interests, estimate_audience_size, search_behaviors, search_demographics, search_geo_locations
- Duplication: clone_campaign, clone_ad_set, clone_ad, clone_ad_creative
- Ads Library: search_ads_archive
- Research helpers: search_web_content, read_web_content

Pagination

Cursor-based pagination is supported on core list/read streams:

- list_ad_accounts, list_campaigns, list_ad_sets, list_ads, list_insights
- list_ad_creatives, search_interests, suggest_interests, search_behaviors, search_demographics, search_geo_locations, search_ads_archive
- Use page_cursor with the paging.cursors.after value from the previous response.
- Responses preserve Meta's native paging object.

Insights Query Notes

- list_insights and create_report support either:
- date_range as { "since": "YYYY-MM-DD", "until": "YYYY-MM-DD" }, or
- date_range as a preset (for example last_30d, maximum).
- create_report.comparison_period uses the same format and validation as date_range.
- previous_30d is normalized to last_30d.
- For action metrics, use action_breakdowns (and optional summary_action_breakdowns) instead of mixing action keys into breakdowns.

Security

- Access tokens are redacted from URL fields returned by the server (including nested paging.next URLs).

Docs

- Authentication Setup Guide
- Local Client Guide
- Security Policy

Scope

- This repository is an OSS local MCP server.
- Transport mode is local stdio only.
- Tool aliases are intentionally not exposed.

License

GNU Affero General Public License v3.0 (AGPLv3). See LICENSE.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.