mlg-meta-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | Yes | Logging level (default info) | |
| META_API_VERSION | Yes | Meta API version (default v22.0) | |
| META_SYSTEM_USER_TOKEN | Yes | Your Meta System User Token for authentication |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| discoverAdAccountsA | Discover all ad accounts accessible via the System User Token. Returns account IDs, names, and business information. Results are cached for 5 minutes to improve performance. |
| getCampaignsB | Get campaigns from an ad account. Supports filtering by status (ACTIVE, PAUSED, ALL). Account can be specified by ID (act_XXX) or by name. |
| updateCampaignB | Update an existing campaign. Only provided fields will be updated. |
| pauseCampaignC | Pause an active campaign |
| activateCampaignC | Activate a paused campaign |
| getAdSetsB | Get ad sets from a campaign or account. Supports filtering by status. |
| updateAdSetB | Update an existing ad set. Only provided fields will be updated. |
| pauseAdSetB | Pause an active ad set |
| activateAdSetB | Activate a paused ad set |
| getAdsB | Get ads from an ad set or campaign. Supports filtering by status. |
| getInsightsA | Get performance metrics for accounts, campaigns, adsets, or ads. Supports date presets (yesterday, last_7d, etc) or custom date ranges. Account level returns an aggregated summary; campaign/adset/ad levels also return structured per-item metrics with normalized ids/names plus spend, results, and CPR so consumers can filter and interpret the full signal. |
| compareTwoPeriodsA | Compare performance metrics between two explicit periods for an account, campaign, adset, or ad. Each side accepts either a preset or a custom timeRange. Result selection can follow the primary action inferred from insights, a specific Meta action_type, or all actions. Optional metrics let callers compare spend, results, cpr, impressions, clicks, and/or ctr; omitting metrics keeps the backward-compatible spend/results/cpr default. For campaigns, the response also explains whether the baseline came from the same campaign, a similar campaign, or the account campaign average. |
| cloneCampaignB | Clone an existing campaign with a new name. Optionally clone all ad sets within the campaign. Useful for duplicating successful campaign structures. |
| cloneAdSetA | Clone an existing ad set to the same or different campaign. Copies targeting, budget, and all configuration. |
| bulkPauseCampaignsB | Pause multiple campaigns in a single operation. Supports dry-run mode to preview changes. |
| bulkActivateCampaignsA | Activate multiple campaigns in a single operation. Supports dry-run mode to preview changes. |
| checkAlertsB | Check campaigns for performance alerts based on configurable thresholds. Identifies high CPR, low CTR, and other performance issues. |
| getAccountInfoB | Get detailed information about an ad account including currency, timezone, status, and linked business. |
| getCampaignDetailsA | Get extended campaign details including bid strategy, buying type, special ad categories, and issues. |
| getAdSetDetailsA | Get extended ad set details including bid amount, effective status, and issues. |
| getAdDetailsA | Get full ad details including effective status, creative ID, and issues. |
| updateAdB | Update an existing ad status or bid amount. |
| getBillingInfoA | Get billing and financial information for an ad account including pending balance (bill amount due), total spend, spend cap, payment method details, and tax info. All monetary values are in the smallest currency unit (e.g. cents for USD). |
| createBudgetScheduleC | Create a budget schedule for a campaign with a specific time window. |
| searchInterestsC | Search for Facebook interest targeting options by keyword. |
| getInterestSuggestionsB | Get interest suggestions based on a list of seed interests. |
| validateInterestsB | Validate a list of interests by name or Facebook ID. At least one of interestList or interestFbidList must be provided. |
| searchBehaviorsC | Search for Facebook behavior targeting categories. |
| searchDemographicsA | Search for Facebook demographic targeting categories by class. |
| searchGeoLocationsB | Search for geographic locations for targeting (countries, cities, regions, etc.). |
| getAdCreativesA | Get all creatives associated with an ad. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 31 tools
Most tools are clearly separated by resource and action, but some pairs like getCampaigns/getCampaignDetails and getAds/getAdDetails could confuse an agent because the names do not clearly signal list versus detail. The interest-related tools also overlap somewhat, though their descriptions distinguish keyword search from suggestions and validation.
Tool names consistently use camelCase and generally follow a verb-noun pattern. Minor deviations exist, such as discoverAdAccounts versus getAccountInfo, and compareTwoPeriods not following the same noun-object shape, but overall the naming is predictable.
With 31 tools, the surface exceeds the 25+ threshold and feels heavy for an MCP server. While Meta Ads has a broad domain, many tools could be consolidated, such as single and bulk campaign state changes or list-versus-detail retrieval pairs.
The server covers reading, updating, pausing, activating, cloning, insights, targeting, billing, and alerts, which is substantial. However, direct creation of campaigns, ad sets, and ads is missing except through cloning, and there are no delete operations, leaving notable lifecycle gaps.