# Ads MCP servers compared: LinkedIn, Google, Meta and Amazon

The servers that exist for each platform, which are official, what each can change, how it signs in and what it costs, checked on 2026-11-07.

*By Stan Rymkiewicz, maintainer of adwarp. Updated November 7, 2026.*

An ads MCP (Model Context Protocol) server lets an AI assistant like Claude or ChatGPT read and change an ad account through tools. Meta ([mcp.facebook.com/ads](https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-mcp-server/ads-mcp-server-overview), open beta since April 29, 2026), Google ([googleads/google-ads-mcp](https://github.com/googleads/google-ads-mcp)) and Amazon ([open beta for API partners](https://advertising.amazon.com/library/news/amazon-ads-mcp-server-open-beta)) now run official ones, and LinkedIn doesn't. We checked every server we could find against the same 3 tasks on 2026-11-07, and the tables below give each one's install command, sign-in, what it can change, its guardrail and its price. Adwarp is our project. It's labeled in every row and sorted by the same rules as the others.

## The comparison table

The 2 tables below cover the 19 servers we checked. Official servers come first, then everything else alphabetically, Adwarp included. The first one covers what each server can change in an account, and install, sign-in and price are in the second.

*Fig. 01: Third-party servers in the tables for each platform, 4 for Meta, 9 for Google, 9 for LinkedIn and 3 for Amazon, with the official server on top where there is one, and LinkedIn's slot empty.*

**What each server can change (checked 2026-11-07)**

| Server | Platforms | Official | Writes | A new campaign lands | Confirm step |
| --- | --- | --- | --- | --- | --- |
| Meta Ads MCP server | Meta | Yes | Campaigns, ad sets, ads, audiences, catalogs, pixels, A/B tests | Paused | Your client asks before `ads_activate_entity`; admins can set rules |
| google-ads-mcp | Google | Yes | Assets and labels only | No campaign writes | Propose, then confirm with a checksum |
| Amazon Ads MCP server | Amazon | Yes | Create, update and delete campaigns | Not stated | Not stated |
| AdKit | Meta, Google, LinkedIn and 4 more | No | Create, edit, publish | Draft | Your approval |
| Adspirer | Google, Meta, LinkedIn, Amazon, TikTok, ChatGPT Ads | No | Campaigns of most types, budgets, targeting, pausing | Paused | Your approval; can't delete existing campaigns |
| Adwarp (ours) | LinkedIn, Google | No | LinkedIn campaigns, ads, audiences, budgets, status; Google Search campaigns | Draft on LinkedIn, paused on Google | Google validateOnly dry run; dryRun preview on LinkedIn updates |
| BlueAlpha | Several, LinkedIn included | No | None listed | No campaign writes | None needed |
| Composio | Google | No | Campaigns and budgets through mutate tools | Not stated | Not stated |
| danielpopamd/linkedin-ads-mcp | LinkedIn | No | Campaign groups, campaigns, ads, deletes | Draft by default, ACTIVE accepted | None in the code |
| GoMarble | Google | No | Launches, budgets, pausing (Operator plan) | Not stated | Your approval |
| KuudoAI amazon_ads_mcp | Amazon | No | Campaigns, bids, deletes | Straight to the API | None in the open-source server |
| linkedin-ads-mcp | LinkedIn | No | Campaign groups, campaigns, status | Draft by default, ACTIVE accepted | None in the code |
| linkedin-campaign-manager-mcp | LinkedIn | No | Nothing, read-only | No campaign writes | None needed |
| Markifact | Meta, Google, LinkedIn | No | Campaigns, ads, budgets, pausing | Held until approved, then live | Approval inside Markifact |
| Marketplace Ad Pros | Amazon | No | Opt-in writes | Not stated | Each change asks you to confirm |
| Pipeboard | Meta, Google, TikTok, Snap, Reddit | No | Campaigns, ad sets, ads, budgets, targeting | Paused | Promised in the README; none in the open-source code |
| Ryze AI | Google | No | Recommendations, raw mutate and delete, audiences | Not stated | Your approval, validateOnly dry runs |
| Synter | LinkedIn and others | No | Campaigns, matched audiences | Paused | Held for review above your thresholds |
| Zapier | Google, plus other apps | No | Campaign status, offline conversions, customer lists | Can't create campaigns; status changes are live | Your client's approval prompt |

**How you connect it (checked 2026-11-07, prices as each vendor lists them)**

| Server | Address or install | Sign-in | Runs | License | Price |
| --- | --- | --- | --- | --- | --- |
| Meta Ads MCP server | `https://mcp.facebook.com/ads` | Facebook Login for Business | Hosted by Meta | Hosted service | Not listed |
| google-ads-mcp | `pipx run --spec "git+https://github.com/googleads/google-ads-mcp.git" google-ads-mcp` | Google Cloud project, then OAuth or `gcloud` credentials | Local, or self-hosted | Apache-2.0 | Free |
| Amazon Ads MCP server | `https://advertising-ai.amazon.com/mcp` | Login with Amazon, plus Amazon Ads API access | Hosted by Amazon | Hosted service | Not listed |
| AdKit | `https://mcp.adkit.so` | AdKit sign-in | Hosted | MIT for the client repo | $29 a month for 1 project, $49 for unlimited |
| Adspirer | `https://mcp.adspirer.com/mcp` | OAuth 2.1 | Hosted | Repo says MIT, README says proprietary | Free for 15 calls a month, then $49, $99, $199 a month |
| Adwarp (ours) | `npx -y adwarp mcp`, or `https://mcp.adwarp.dev/api/mcp` | Your own LinkedIn app and Google OAuth client | Local, or hosted for LinkedIn | MIT | Free |
| BlueAlpha | `https://mcp.bluealpha.ai/mcp` | BlueAlpha account | Hosted | Hosted service | Free install, paid tiers not listed |
| Composio | Composio's Google Ads toolkit | OAuth | Hosted | Hosted service | Free for 100,000 calls a month, Pro $29 a month |
| danielpopamd/linkedin-ads-mcp | `git clone`, then `npm run auth` | Your own LinkedIn app | Local | MIT | Free |
| GoMarble | `https://apps.gomarble.ai/mcp-api/mcp` | OAuth | Hosted | Hosted service | $139 a month read-only, $399 with writes |
| KuudoAI amazon_ads_mcp | `docker compose up -d` from the repo | Your own Login with Amazon app, or a managed login | Local | MIT | Free, managed logins billed by Kuudo |
| linkedin-ads-mcp | `pip install linkedin-ads-mcp` | Your own LinkedIn app | Local | MIT | Free |
| linkedin-campaign-manager-mcp | `npm install -g linkedin-campaign-manager-mcp` | Your own LinkedIn app | Local | MIT | Free |
| Markifact | `https://api.markifact.com/mcp` | OAuth | Hosted | Hosted service | $79 or $249 a month |
| Marketplace Ad Pros | `https://app.marketplaceadpros.com/mcp` | OAuth | Hosted | MIT for the repo | From $10 a week |
| Pipeboard | `https://meta-ads.mcp.pipeboard.co/` | Pipeboard login, then Facebook | Hosted, or local from source | Business Source License 1.1 | Free for 2 ad accounts, then $29.90, $99, $199 a month |
| Ryze AI | `https://connector.get-ryze.ai/mcp` | Sign in with Google | Hosted | Hosted service | $89 a month |
| Synter | `https://mcp.synterai.com/mcp` | OAuth in the browser | Hosted | MIT for the client | Free to read, $20 a month to write, $5 per campaign |
| Zapier | `mcp.zapier.com` | Zapier account | Hosted | Hosted service | 2 tasks per call, free for 100 tasks a month |

## How we checked

We checked every server against the same 3 tasks, the kind you'd ask from Claude Code:

1. Report spend, clicks and conversions for the last 30 days, by campaign.
2. Find the ads to pause under 1 stated rule: 500 USD or more spent and 0 conversions in the last 30 days.
3. Draft a new campaign, then check where it landed: live, paused or draft.

*Fig. 02: The 3 tasks drawn as 1 report, where the pause rule flags only rows with 500 USD or more spent and 0 conversions and the dashed bottom row is the new campaign whose status we check.*

For this edition we answered the 3 tasks from what each server ships on 2026-11-07: the tool list, the source code where it's open, the docs, the license file and the price page. For every hosted server with a public address we also sent 1 request without a token and wrote down the sign-in it asked for. That is how we know Meta's endpoint answers with an OAuth challenge that lists its scopes, `ads_management` among them, and that Amazon's points at Login with Amazon.

*Fig. 03: A request with no token got a 401 from both endpoints, and each reply named the sign-in it wants, Meta's with its list of scopes.*

We didn't connect any server to a live ad account for this edition, ours included. Where the docs say a new campaign starts paused, the table says paused and the card names the page it came from. For the open-source servers we read the code that sets the status, since a README and the code don't always agree. Twice they didn't, and both cases are in the cards below.

We build Adwarp. It sits in the same tables under the same rules, official servers first and then alphabetical order, and nobody gets a score. Where another server does something better than ours, its card says so.

*Fig. 04: The same 3 tasks are checked in this edition and again every quarter, so a server that adds write tools or changes its sign-in shows up in the next table.*

*Changelog. 2026-11-07: first edition, 19 servers checked against their own repos, docs and endpoints. Next check: 2027-02-07, with the new date in the title.*

## Meta Ads and Facebook Ads MCP servers

Meta has the busiest field and the most complete official server of the 3. Every server here, Meta's included, sends its calls through the same Marketing API, so the limits on edits and budget changes in the last part of this section apply whichever one you pick.

*Fig. 05: Every Meta server in this post calls the same Marketing API, so the per-object limits on edits and budget changes follow you from 1 server to the next.*

### Meta's official Ads MCP server

Meta announced its ads AI connectors on [April 29, 2026](https://www.facebook.com/business/news/meta-ads-ai-connectors), "in open beta", as an MCP server plus a command line interface (CLI). An update on July 16, 2026 added connecting through your own developer app and "ads MCP server rules". The developer pages we read on 2026-11-07 don't carry a beta label, and none of Meta's pages list a price.

- **Address:** `https://mcp.facebook.com/ads`, hosted by Meta ([overview](https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-mcp-server/ads-mcp-server-overview)).
- **Sign-in:** your client opens Facebook Login for Business. A request without a token got a 401 naming the scopes it wants, from `ads_read` and `ads_management` to `ads_mcp_management`. User tokens and Employee-role system user tokens work, and the [setup page](https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-mcp-server/ads-mcp-server-get-started) says "Admin-role system user access tokens can't access the ads MCP server."
- **Claude Code, with your own app:** `claude mcp add --transport http --client-id <META_APP_ID> meta-ads https://mcp.facebook.com/ads`. Owning an app is optional, and Meta's help center covers the setup without one.
- **Tools:** Meta doesn't give a total. Its 7 tool pages list 88 different tools by our count, and [Jon Loomer](https://www.jonloomer.com/meta-ads-ai-connectors-security-controls/) puts it at "nearly 100".
- **Task 1:** `ads_get_ad_entities` returns campaigns, ad sets and ads with spend, impressions, click-through rate, cost per click and conversions.
- **Task 2:** the same read finds the ads. The tools page lists no pause tool, and `ads_update_entity` ("Update fields on an existing campaign, ad set, or ad") doesn't say whether status is 1 of those fields, so the docs alone don't confirm a pause.
- **Task 3:** `ads_create_campaign`, `ads_create_ad_set` and `ads_create_ad`. From the [tools page](https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-mcp-server/ads-mcp-server-tools-ad-creation-and-management): "Write tools create entities in a paused state; your AI client asks for confirmation before activation." The tool that switches things on is `ads_activate_entity`, which "starts spending budget".

Look at those rules before anything else. A person with full control of a business portfolio uses them to limit what agents do in an ad account, budget changes and catalog updates included. Loomer checked his accounts in August 2026 and found all "7 of 7" actions allowed until he changed them: budgets, campaigns, ad sets, ads, targeting, creative and status. Until someone sets them, the paused default is the only brake. Agencies that connect client accounts through their own app also need App Review for Advanced Access.

*Fig. 06: Jon Loomer found all 7 agent actions allowed in the ads MCP server rules on his accounts in August 2026, and they stayed that way until he changed them.*

Meta's CLI sits beside the server. It installs with `brew tap facebook/fb` then `brew install facebook/fb/meta-ads`, or `pip install meta-ads` on Python 3.12 or later, and it signs in with a system user access token ([CLI setup](https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-cli/setup/get-started.md)).

It also reads Meta's own benchmarks, anomaly signals and opportunity score, which no third-party server can reach. If you run Meta Ads, start here. Adwarp doesn't cover Meta at all.

### Pipeboard

[Pipeboard's repo](https://github.com/pipeboard-co/meta-ads-mcp) had 1,356 stars on 2026-11-07, more than any other ads server we checked. Its license is the Business Source License 1.1. You can read and run the code, but you can't offer it as a competing hosted service, and it converts to Apache-2.0 on January 1, 2029.

- **Hosted:** `https://meta-ads.mcp.pipeboard.co/` with 42 tools. The same login also covers Pipeboard's Google Ads (59 tools), TikTok, Snap and Reddit servers.
- **Local:** run it from source with your own Meta app or a `META_ACCESS_TOKEN`.
- **Tasks 1 and 2:** insights by campaign, ad set or ad, and pausing or resuming.
- **Task 3:** in the code, campaigns, ad sets and ads all default to `PAUSED`. The README promises "explicit confirmation on every write". We found no confirm step in the open-source code, so on a local install the only check is your client's own permission prompt.
- **Price:** free for 2 ad accounts and 30 tool runs a week, then $29.90, $99 or $199 a month ([pricing](https://pipeboard.co/pricing)).

If you run ads on 3 or 4 of those platforms and want 1 login for all of them, Pipeboard does that and Adwarp doesn't.

### Markifact, Adspirer and other hosted Meta servers

These sign you in with OAuth and keep the ad platform tokens on their side. You skip the developer setup, and in exchange your account data passes through the vendor.

- **AdKit** (`https://mcp.adkit.so`) covers Meta, Google, TikTok, LinkedIn, Microsoft, Reddit and X. Its [repo](https://github.com/adkit/ads-mcp) says every change starts as a draft and nothing goes live without your approval. $29 a month for 1 project, $49 for unlimited, with a 7-day trial ([pricing](https://adkit.so/pricing)).
- **Adspirer** (`https://mcp.adspirer.com/mcp`) lists 58 Meta tools in its [README](https://github.com/amekala/ads-mcp), for image, video, carousel, catalog and lead campaigns. "New campaigns are always created paused." Free for 15 tool calls a month, then $49, $99 or $199.
- **Markifact** (`https://api.markifact.com/mcp`) gives "Full read and write access" to campaigns, ad sets, creatives, audiences and budgets, and writes "always stop for your approval" inside Markifact ([Meta page](https://www.markifact.com/meta-ads-mcp)). $79 or $249 a month after trial credits.

### Is "Facebook Ads MCP" the same thing?

Yes. Facebook and Instagram ads run in the same Meta ad account, through the same Marketing API, so a "Facebook Ads MCP" and a "Meta Ads MCP" are the same servers. Meta's endpoint even asks for Instagram scopes next to the ads ones, and Pipeboard labels its server "Facebook + Instagram".

*Fig. 07: Facebook and Instagram ads come out of 1 Meta ad account, so a server sold as a Facebook Ads MCP reaches the same campaigns as a Meta one.*

So "MCP in Facebook ads" means a server your assistant connects to so it can pull reports and build campaigns in your ad account, and "a Meta MCP" usually means Meta's own at `mcp.facebook.com/ads`. It works with Claude. The setup page gives the Claude Code command above, and any client that can add a remote server with OAuth can connect.

### Rate limits and account restrictions on Meta

Meta's [rate limiting page](https://developers.facebook.com/documentation/ads-commerce/marketing-api/overview/rate-limiting.md) sets the Ads Management limit per ad account per hour at 100,000 calls for an app with full Marketing API access, or 300 in the development tier, plus 40 for each active ad. Go over it and calls fail with error 80004 and "There have been too many calls from this ad-account." Some limits sit on the object instead of the app: "one edit per object every 30 seconds", about 4 budget changes per ad set per hour before budget changes on that ad set are blocked for an hour, and 10 spend limit changes a day. An agent that retries a budget change in a loop hits that wall fast.

The account restrictions are reports, and we couldn't confirm any of them with Meta. Loomer wrote that weeks before the launch "Meta was shutting down ad accounts that advertisers were connecting to their favorite LLMs." [Common Thread](https://commonthreadco.com/blogs/coachs-corner/meta-ai-mcp-cli-ads-connectors-ecommerce) mentions advertisers "getting accounts restricted for using third-party AI tools", and [The Keyword](https://www.thekeyword.co/news/meta-ads-ai-connectors) quotes a warning about "real risk of account bans if automation makes changes too aggressively without human oversight". We couldn't find the X post about random bans that shows up in search, and Reddit refused our requests. Meta's own connector pages say nothing about bans.

If that worries you, use Meta's official server or 1 on an app you own, and set the rules before the first write.

## Google Ads MCP servers

Google's official server changed on 2026-11-02. Version 0.0.6 added 4 write tools, so the comparisons that call it read-only are out of date. Google's own [developer page](https://developers.google.com/google-ads/api/docs/developer-toolkit/mcp-server), last updated 2026-10-30, still says it "is strictly read-only".

*Fig. 08: Google's server writes in 2 calls: the proposal returns a checksum, the confirm call has to match it, and only assets and labels can be written.*

### Google's official server

[googleads/google-ads-mcp](https://github.com/googleads/google-ads-mcp) is Apache-2.0, free, and had 1,128 stars on 2026-11-07. It has 7 tools. `search` runs Google Ads Query Language (GAQL), and `get_resource_metadata` and `list_accessible_customers` read too. The 4 writes are `create_asset`, `upload_video_asset`, `manage_labels` and `manage_label_associations`.

- **Install:** `pipx run --spec "git+https://github.com/googleads/google-ads-mcp.git" google-ads-mcp`, or pin a version from PyPI. It runs locally, or you host it yourself over HTTP.
- **Sign-in:** a Google Cloud project with the Google Ads API turned on, then credentials from `gcloud auth application-default login` with the `adwords` scope, an OAuth client, or a `google-ads.yaml` file.
- **Task 1:** 1 `search` call with a GAQL query does it.
- **Task 2:** `search` finds the ads. Nothing can pause them, because no tool touches status.
- **Task 3:** no tool creates a campaign, changes a budget or edits a bid. `create_asset` adds to the asset library without linking anything to a campaign. Labels can be attached to campaigns, and a confirmed write takes effect at once.

Every write goes through what the README calls "Propose & Confirm". The first call runs with `validate_only=True` and returns the changes plus "a cryptographic `checksum` bound to the customer ID and parameters". The second call has to send the same parameters with that checksum "after explicit user approval", and "any missing or mismatched checksum is rejected before mutating the account." In the source the checksum is a SHA-256 hash of the customer ID and the operations, with no secret key. So it stops an agent from confirming a different change than the one it proposed, and it can't tell whether a person approved. Your client's permission prompt does that part. For a read-only install, set `labels: false` and `assets: false` in `tools_config.yaml`.

Setup is simpler than older guides say. Google's [access levels page](https://developers.google.com/google-ads/api/docs/api-policy/access-levels) (updated 2026-10-30): "Developer tokens were sunset on September 9, 2026, and API access levels are now managed per Google Cloud project." Explorer allows 2,880 operations a day on production accounts, Basic 15,000, and Standard has no cap. The [announcement](https://ads-developers.googleblog.com/2026/09/new-onboarding-experience-for-google-ads-api.html) went out on September 10. The [Google Ads API access](https://adwarp.dev/blog/google-ads-api-access) post walks through the new flow.

### Hosted Google servers

With a hosted server you sign in with Google and skip the Cloud project, and the vendor holds the token. Prices below were checked on 2026-11-07.

*Fig. 09: A hosted server skips the Cloud project and signs you in with Google, and in exchange the token sits with the vendor instead of on your machine.*

| Server | Changes | A write lands as | Price |
| --- | --- | --- | --- |
| [Adspirer](https://github.com/amekala/ads-mcp) | 151 Google tools; Search, Performance Max, Display, Demand Gen, YouTube, Shopping and App campaigns | Paused | Free for 15 calls a month, then $49 to $199 |
| [AdKit](https://adkit.so/pricing) | Create, edit and publish across 7 platforms | Draft | $29 or $49 a month |
| [Composio](https://composio.dev/toolkits/googleads) | 78 tools, mutate tools for campaigns and budgets included | Not stated | Free tier, Pro $29 a month |
| [GoMarble](https://www.gomarble.ai/pricing) | Launches, budgets, pausing, on Operator and above | Approval first, landing not stated | $139 read-only, $399 with writes |
| [Markifact](https://www.markifact.com/google-ads-mcp) | 60+ tools, campaigns, budgets, negatives, a generic mutate | Held until approved, then live | $79 or $249 a month |
| [Pipeboard](https://github.com/pipeboard-co/meta-ads-mcp) | 59 tools, Search ads, Performance Max, keywords, generic mutate | Paused where the platform allows | Free tier, then from $29.90 |
| [Ryze AI](https://www.get-ryze.ai/google-ads-mcp) | 14 tools, 6 of them writes: recommendations, raw mutate and delete, audiences | Approval first, landing not stated | $89 a month |
| [Zapier](https://zapier.com/mcp/google-ads) | Campaign status, offline conversions, customer lists | Live | 2 tasks per call, 100 tasks free a month |

GoMarble also publishes an [open-source server](https://github.com/gomarble-ai/google-ads-mcp-server) (MIT, 147 stars) with 3 read-only tools, and it still asks for a developer token. Adspirer covers far more Google campaign types than ours, and Zapier also reaches the other apps you use, like your CRM.

### Adwarp's Google tools (ours)

Adwarp's Google Ads tools cover Search campaigns only. `gads_launch_search_campaign` builds the budget, campaign, targeting, ad groups, keywords and responsive search ads in 1 atomic request. Its first call is Google's validateOnly dry run, which checks the whole batch and saves nothing, and the tool's description tells the assistant to show you that plan and wait for a yes. The real call creates everything paused. No Adwarp tool can enable a Google campaign: you switch it on in the Google Ads UI.

*Fig. 10: Adwarp's Google launch runs first as a validateOnly dry run that saves nothing, and only after you say yes does the real call create the campaign, paused.*

- **Task 1:** `gads_performance` at campaign level, with totals and derived figures.
- **Task 2:** `gads_performance` at ad level finds them. Adwarp can't pause a Google ad, so you'd do that in Google Ads.
- **Task 3:** lands paused, after the dry run.

The other tools read accounts, manager accounts, campaigns, ads, conversion actions and keyword ideas, and `gads_search` runs read-only GAQL. 3 house rules are fixed in every launch: Search network only, people physically in the target location, and manual cost per click to start.

Gaps: no Performance Max, Display, Shopping or video, no edits to an existing campaign, and none of the asset or label writes Google's own server has. The Google tools also run only on the local server. The hosted endpoint at mcp.adwarp.dev never registers them, because it serves many callers and Google credentials would come from shared server settings. Setup is on [/docs/google-ads-setup](https://adwarp.dev/docs/google-ads-setup), and the product page is [/google-ads](https://adwarp.dev/google-ads).

## LinkedIn Ads MCP servers

LinkedIn has no official server, so every LinkedIn option is a third-party one. They all go through LinkedIn's Advertising API, either on a developer app you own or on an app a vendor owns for you.

*Fig. 11: Every LinkedIn Ads server goes through a LinkedIn developer app with Advertising API access, yours or a vendor's, because there's no official server to skip it.*

### LinkedIn has no official server

We checked on 2026-11-07. LinkedIn's marketing docs on Microsoft Learn, including the [recent changes page](https://learn.microsoft.com/en-us/linkedin/marketing/integrations/recent-changes) updated 2026-11-04, don't mention MCP, and a search of LinkedIn's developer docs returns no MCP page.

What LinkedIn requires of any server is spelled out in its [quick start](https://learn.microsoft.com/en-us/linkedin/marketing/quick-start). You need a LinkedIn Page and a developer application, then you request the Advertising API under the app's Products tab and complete the access form. "All applications start with Development tier" ([access tiers](https://learn.microsoft.com/en-us/linkedin/marketing/increasing-access)), which allows unlimited reads but edits on up to 5 ad accounts. Standard tier lifts that, and you request it through a support ticket with "a video demonstrating how your platform creates, edits, or optimizes LinkedIn campaigns." The scopes are `r_ads`, `r_ads_reporting` and `rw_ads`, and matched audiences need a separate product. The [LinkedIn Ads API](https://adwarp.dev/blog/linkedin-ads-api) post covers the application.

*Fig. 12: A new LinkedIn app starts in Development tier, with unlimited reads but edits on only 5 ad accounts, until Standard tier lifts the cap.*

Hosted vendors went through this once, for their own app, which is how Markifact can tell you to "Skip the developer application". Your account data and tokens then sit with them.

### Adwarp (ours)

Adwarp creates LinkedIn campaign groups, campaigns and ads as drafts. Every ad set it creates has Audience Network and Audience Expansion turned off, and no Adwarp tool turns either back on ([/docs/safety](https://adwarp.dev/docs/safety)). A campaign or a single ad goes live only when you ask Adwarp to set it ACTIVE or when you switch it on in Campaign Manager. Around that sit audience sizing, matched audiences from a CSV file, a Salesforce query or a HubSpot list, any company's ads through LinkedIn's official [Ad Library](https://adwarp.dev/linkedin-ads/ad-library) API, reporting, and a change journal that records every write and compares the 14 days before a change with the 14 after.

*Fig. 13: An ad Adwarp creates on LinkedIn lands as a draft, in an ad set with Audience Network and Audience Expansion off and no tool to switch them back on.*

- **Local:** `claude mcp add adwarp -- npx -y adwarp mcp`. Sign in once with `npx -y adwarp auth login`, which runs LinkedIn's OAuth in your browser and keeps the tokens in `~/.adwarp`. The [Claude setup](https://adwarp.dev/linkedin-ads/claude) has the full steps.
- **Hosted:** `https://mcp.adwarp.dev/api/mcp`, with your own app's credentials sent as request headers. `npx -y adwarp auth export --mcp` prints the connect command. 6 tools need your machine and don't work there (CSV upload, Salesforce, HubSpot and the 3 journal tools), and it never serves the Google tools ([hosted docs](https://adwarp.dev/docs/hosted)).
- **Task 1:** `performance_summary` or `get_performance` at campaign level.
- **Task 2:** `get_performance` at ad level finds them, and `update_ad` pauses 1 named ad at a time, with a `dryRun` preview first.
- **Task 3:** `create_campaign_group` and `create_campaign` land as DRAFT.
- **Thought leader ads:** `create_post_ad` sponsors a post that already exists, a member's post included once the member approves in LinkedIn, and the ad lands as a draft. It shipped in Adwarp 0.5.0 on November 7, 2026.
- **License and price:** MIT, free, no account.

Downsides: you need your own LinkedIn app with the Advertising API approved before the first call. There's no 1-click sign-in. On the hosted endpoint your client secret and refresh token travel with every request. It doesn't read lead form responses, and linkedin-campaign-manager-mcp below does. The product page is [/linkedin-ads](https://adwarp.dev/linkedin-ads), and every tool is listed on [/docs/tools](https://adwarp.dev/docs/tools).

### Community LinkedIn servers

We read the source of each of these on 2026-11-07 rather than installing them, and counted the tools from the code.

- **[danielpopamd/linkedin-ads-mcp](https://github.com/danielpopamd/linkedin-ads-mcp)**: 25 tools, MIT, 42 stars, last updated 2026-09-02. It reads accounts, performance, demographics, reach, conversions and lead forms, and it creates and deletes campaign groups, campaigns and ads. New items default to DRAFT, but the tools accept ACTIVE and `update_campaign` can move a campaign from DRAFT to ACTIVE, with no confirm step in the code. Install is `git clone`, `npm install`, `npm run build`, then `npm run auth` with your own app.
- **[linkedin-ads-mcp](https://pypi.org/project/linkedin-ads-mcp/)** on PyPI, from Nuraveda Lab: 11 tools, 7 that read and 4 that write campaign groups, campaigns and their status. It can't create ads yet. The README says "All write tools default to `DRAFT`", which is true of the default, but the status tool accepts ACTIVE. MIT since 0.4.0, version 0.4.1 on 2026-10-01, `pip install linkedin-ads-mcp`.
- **[linkedin-campaign-manager-mcp](https://registry.npmjs.org/linkedin-campaign-manager-mcp)** on npm: 19 read-only tools. Its sign-in asks only for read scopes, so it can't change anything. It reads lead form responses "with PII", meaning names and emails. Version 1.1.1 on 2026-04-27, and its GitHub repo returned a 404 on the day we checked.

3 smaller projects showed recent activity: [get-mcp-ads](https://github.com/get-mcp-ads/linkedin-ads-mcp-server), with writes off until you turn them on, a preview, then `confirm: true` and a DRAFT; [mharnett/mcp-linkedin-ads](https://github.com/mharnett/mcp-linkedin-ads), read-only by default; and [cesteral](https://github.com/cesteral/mcp-open-advertising), whose LinkedIn package has 23 tools.

### Multi-platform servers with LinkedIn

- **Adspirer** lists 54 LinkedIn tools in its [README](https://github.com/amekala/ads-mcp). Its own pages also say 28, 55 and 56. It writes image, video, carousel and text campaigns, campaign groups and lead forms, and "New campaigns are always created paused." Its [LinkedIn page](https://www.adspirer.com/integrations/claude-code-linkedin-ads) says it "cannot delete existing campaigns" and that budget changes need confirmation, though `delete_linkedin_creative` removes an ad for good.
- **Synter** ([synterai.com/mcp](https://synterai.com/mcp)) marks LinkedIn as live, with tools that create campaigns and matched audiences. New campaigns start PAUSED, and changes above thresholds you set wait in `pending_review` for a person. Free to read, $20 a month to write, plus $5 per campaign.
- **Markifact** ([LinkedIn page](https://www.markifact.com/linkedin-ads-mcp)) is hosted in the EU and writes campaign groups, campaigns, image, video, carousel, text and Spotlight ads, and budgets. It doesn't create lead forms or matched audiences in chat, and it "holds every account change until someone approves it."
- **BlueAlpha** ([bluealpha.ai/mcp](https://bluealpha.ai/mcp)) reads and analyzes LinkedIn alongside other platforms: account health, audience overlap, creative fatigue, lead quality. We found no write tools. Installing is free.

All 4 beat ours on setup: you connect in a browser and never apply for the Advertising API. Pick 1 of them if you can't get your own app approved, or if you need Meta in the same chat.

## Amazon Ads MCP servers

Amazon has an official server too, and its announcement says it can create, update and delete campaigns. Access is the hard part: you need Amazon Ads API credentials first.

*Fig. 14: Amazon's official server sits inside 2 bigger circles, because you need Amazon Ads API access before you can join the open beta.*

### Amazon's official server

Amazon announced it on [February 2, 2026](https://advertising.amazon.com/library/news/amazon-ads-mcp-server-open-beta): "The Amazon Ads MCP Server and tools are available globally in open beta to Amazon Ads partners with active API credentials." Agents can use "individual Amazon Ads capabilities such as creating, updating, or deleting campaigns," and a separate tool creates "end-to-end Sponsored Products campaigns in a single workflow." The post names Claude, ChatGPT and Gemini. A closed beta had started on 2025-11-13, [according to PPC Land](https://ppc.land/amazon-launches-closed-beta-for-ai-agent-advertising-integration/).

*Fig. 15: Amazon's server can build a whole Sponsored Products campaign in 1 workflow, drawn here as the sponsored card in a row of product listings.*

- **Address:** `https://advertising-ai.amazon.com/mcp` for North America. We found the address in third-party guides, since Amazon's docs pages load with JavaScript and we couldn't read them. Our request without a token got a 401 pointing at Login with Amazon, with the scope `advertising::campaign_management`.
- **Getting access:** the [Amazon Ads API page](https://advertising.amazon.com/about-api) says access "requires an application and approval process." Partners apply through the Amazon Ads Partner Network, and direct advertisers use the "Request API access" form. If you only use a tool that already has API access, you don't apply.
- **Tasks:** reporting and campaign writes are both in scope. Where a new campaign lands and whether there's a confirm step weren't in anything we could read, so the table says "not stated".
- **What's next:** on 2026-09-30 Amazon put "expert tools" for Amazon Marketing Cloud into closed beta, with general availability planned for "early 2027" and pay-per-use billing through AWS Marketplace ([Amazon Ads](https://advertising.amazon.com/resources/whats-new/expert-tools-bring-amc-sql-generation-to-agent)). The core server has no general availability date.

### Third-party Amazon servers

- **[KuudoAI amazon_ads_mcp](https://github.com/KuudoAI/amazon_ads_mcp)**: MIT, 73 stars, version 0.3.33 on 2026-11-06, also on PyPI as `amazon-ads-mcp`. It runs locally with `docker compose up -d` and covers "711 Amazon Ads API operations across 53 services", from Sponsored Products to DSP and Amazon Marketing Cloud. Writes like `cm_CreateCampaign` and `sp_updateBids` go straight to the API, and the open-source server has no approval step. You sign in with your own Login with Amazon app, or through a login Openbridge or Kuudo manages. Note the repo name uses underscores: the hyphenated clone address in its README returned "Repository not found".
- **Adspirer**: 61 Amazon tools for Sponsored Products, Sponsored Brands and Sponsored Display, with Amazon's own bid and keyword recommendations. New campaigns land paused, and it "cannot delete existing campaigns by design" ([Amazon page](https://www.adspirer.com/integrations/claude-code-amazon-ads)).
- **Marketplace Ad Pros** ([repo](https://github.com/MarketplaceAdPros/amazon-ads-mcp-server)): hosted, "read-only by default", with opt-in writes where each change asks you to confirm. From $10 a week.
- **[get-mcp-ads](https://github.com/get-mcp-ads/amazon-ads-mcp-server)**: local, Apache-2.0, 31 read tools and 77 writes that are off until you turn them on and preview before they run.

Kuudo is the widest open-source option, reaching DSP and Amazon Marketing Cloud. For writes, Adspirer's paused default and its no-delete rule make it the safer of those 2.

## Before you give an agent write access

An MCP server with write tools can do whatever its token allows, and the assistant decides when to call them. Your client's permission prompt is 1 check, and these 6 questions cover most of the rest.

*Fig. 16: Check where a write lands before anything else, since drafts and paused campaigns wait for you and a live campaign starts spending.*

1. **Where does a new campaign land?** A draft or a paused campaign waits for you. Meta's server lands paused, Adwarp lands drafts on LinkedIn and paused campaigns on Google, and Zapier's status change takes effect at once. The table below has every server.
2. **Is there a confirm step outside the chat?** Google's checksum and Adwarp's validateOnly dry run are checked in code. Markifact and Synter hold changes in their own app until someone approves. A sentence in a tool description is weaker than either.
3. **Can 1 call change many things?** Generic mutate tools (Markifact, Pipeboard's Google server, Ryze AI) can touch anything the API allows in 1 call. Adwarp's `update_ad` changes 1 named ad, and its `update_campaign` replaces targeting only when you pass new targeting.
4. **Is there a change log you can read later?** Adwarp writes every change to a local journal ([/docs/journal](https://adwarp.dev/docs/journal)). Meta's server has activity log tools. For the rest, the platform's own history is what you have.
5. **Whose rate limits does it use?** Limits are counted per app or per Cloud project. Google's access levels cap operations a day per Cloud project, so on a vendor's project your agent shares that cap with every other customer. Meta's per-object limits apply whichever app you use.
6. **Where do the credentials live?** On your machine (Adwarp local, Google's server, the community servers), in request headers you control (Adwarp hosted), or with the vendor (every hosted vendor). Treat a token that can create campaigns like the ad account password.

**Where a new campaign lands, by server (checked 2026-11-07)**

| Lands as | Servers |
| --- | --- |
| Draft | Adwarp on LinkedIn, AdKit, get-mcp-ads; danielpopamd/linkedin-ads-mcp and linkedin-ads-mcp by default, though both accept ACTIVE |
| Paused | Meta's server, Adwarp on Google, Adspirer, Pipeboard, Synter |
| Held until approved, then live | Markifact |
| Live | Zapier (it can't create campaigns, and status changes apply at once) |
| Whatever the call asks for, with no approval step | KuudoAI amazon_ads_mcp |
| No campaign writes | Google's server, BlueAlpha, linkedin-campaign-manager-mcp |
| Not stated | Amazon's server, Composio, GoMarble, Marketplace Ad Pros, Ryze AI |

The full list of what Adwarp will and won't do on its own is on [/docs/safety](https://adwarp.dev/docs/safety).

## What "marketing MCP" covers beyond ads

MCP is "an open-source standard for connecting AI applications to external systems" ([modelcontextprotocol.io](https://modelcontextprotocol.io/docs/getting-started/intro)). Anthropic released it on [November 25, 2024](https://www.anthropic.com/news/model-context-protocol). For a marketer it means 1 assistant can read your analytics, your customer relationship management (CRM) system and your ad accounts in the same chat, with each connection added as a server.

*Fig. 17: Ads, analytics and CRM each get their own server, and the assistant reaches all of them over the same protocol.*

ChatGPT uses MCP too. OpenAI's [docs](https://developers.openai.com/api/docs/mcp/) have you go to ChatGPT Plugins, select the plus button and choose "Add custom MCP server", and they add that "ChatGPT currently requires manual confirmation in any conversation before write actions can be taken." Which ChatGPT plans can add custom servers wasn't on that page, and we couldn't load OpenAI's help article to check.

The official servers worth pairing with an ads server, checked on 2026-11-07:

- **Google Analytics:** [googleanalytics/google-analytics-mcp](https://github.com/googleanalytics/google-analytics-mcp), Apache-2.0, `pipx run analytics-mcp`. It reads reports, and version 1.1.0 (2026-11-06) adds a few writes, like annotations and key events, behind an `--allow-write` flag.
- **HubSpot:** a [remote server](https://developers.hubspot.com/changelog/remote-hubspot-mcp-server-is-now-generally-available) at `mcp.hubspot.com`, generally available to all HubSpot accounts since 2026-04-13. It reads and writes CRM records, and its write tools need explicit confirmation.
- **Salesforce:** [hosted MCP servers](https://developer.salesforce.com/blogs/2026/04/salesforce-hosted-mcp-servers-are-now-generally-available), generally available for Enterprise Edition orgs and above, signing in through an External Client App with your existing user permissions.
- **Google Search Console:** no official server. Google's [list of its own servers](https://github.com/google/mcp) doesn't include one.

### 1 weekly report from 2 servers

A team running Meta, LinkedIn Ads and Google Ads connects 2 servers in Claude Code: Meta's for Meta, and Adwarp for the other 2. 1 prompt pulls all 3. The LinkedIn and Google numbers below come from the made-up Quillmont Analytics data that ships with the [paid-media-weekly-report](https://adwarp.dev/docs/skills/paid-media-weekly-report) skill, and the Meta line is invented for this example.

```text
claude mcp add --transport http --client-id <META_APP_ID> meta-ads https://mcp.facebook.com/ads
claude mcp add adwarp -- npx -y adwarp mcp
```

```text
> Weekly paid report: Meta from meta-ads, LinkedIn and Google from Adwarp. Oct 12 to 18 against Oct 5 to 11.
adwarp.ads_get_ad_entities campaigns, Oct 5 to Oct 18, daily  3 campaigns
adwarp.get_performance ad sets, Oct 12 to Oct 18  6 ad sets
adwarp.get_performance ad sets, Oct 5 to Oct 11  5 ad sets
adwarp.gads_performance campaign, Oct 12 to Oct 18  4 campaigns
adwarp.gads_performance campaign, Oct 5 to Oct 11  4 campaigns
Spend        LinkedIn $6,919 (+18.0%)   Google $5,025 (+10.0%)   Meta $2,480 (+6.2%)
Conversions  LinkedIn 35 (-2.8%)        Google 59 (+22.9%)       Meta 41 (+5.1%)
Search - Competitor Terms: $1,050 spent, 0 conversions this week
LinkedIn and Google from the Quillmont example files; Meta numbers made up
Report written with 3 actions. Nothing was changed in any account.
```

The assistant joins the rows itself. Neither server sees the other's data, and the whole run is reads, so no account changed.

Put it to work: [LinkedIn Ads](https://adwarp.dev/linkedin-ads). Adwarp's LinkedIn Ads tools, run from your terminal: drafts first, audiences, reporting and a change journal.

## Questions

### What is MCP in Facebook ads?

MCP, the Model Context Protocol, is how an AI assistant connects to an outside system through tools. In Facebook ads it means a server that lets Claude, ChatGPT or another assistant pull reports and build campaigns in your Meta ad account. Meta runs its own at mcp.facebook.com/ads.

### What is a Meta MCP, and does Meta have an MCP for Claude?

A Meta MCP is a server that connects an AI assistant to Meta's Marketing API, and it usually means Meta's own, announced in open beta on April 29, 2026. It works with Claude: Meta's setup page gives a Claude Code command, and you sign in with Facebook Login for Business. Campaigns it creates start paused.

### Is there an MCP for Facebook?

Yes. Facebook and Instagram ads share a Meta ad account, so Meta's server at mcp.facebook.com/ads covers both. Third-party servers like Pipeboard, Adspirer, AdKit and Markifact do too.

### Is the Google Ads MCP server read-only?

Not anymore. Version 0.0.6 of googleads/google-ads-mcp, released on 2026-11-02, added 4 write tools for assets and labels behind a propose-and-confirm step with a checksum. It still can't create campaigns, change budgets or pause anything, and setting labels and assets to false in its config makes it read-only again.

### Do I still need a Google Ads developer token?

No. Google's access levels page says developer tokens were sunset on September 9, 2026, and access levels now belong to the Google Cloud project you use for OAuth. Google says tokens sent today are ignored, and a future API version will start rejecting them.

### Is there an official LinkedIn Ads MCP server?

No. On 2026-11-07 LinkedIn's marketing docs had no MCP server and no page about one. Every LinkedIn server, Adwarp included, runs on the Advertising API through a developer app, either your own or a vendor's.

### Is there an official Amazon Ads MCP server, and who can use it?

Yes. Amazon announced it on February 2, 2026, in open beta for Amazon Ads partners with active API credentials. You get those by applying for Amazon Ads API access as a partner or a direct advertiser, and the server signs you in with Login with Amazon.

### Can an ads MCP server spend money without asking?

Some can. Zapier's campaign status change applies at once, and 2 open-source LinkedIn servers accept an ACTIVE status with no confirm step in their code. Meta's server, Adspirer, Pipeboard and Adwarp on Google create campaigns paused, Adwarp on LinkedIn creates drafts, and Google's own server can't create campaigns at all.

### Can Meta restrict my ad account for using an MCP server?

There are reports of it, mostly from before Meta launched its own server, and we couldn't confirm any with Meta. Meta's connector docs say nothing about bans, but its rate limits do block an ad account that makes too many calls or too many budget changes. Meta's official server, with its rules set and few writes, is the low-risk path.

### What is MCP in marketing, and does ChatGPT use MCP?

MCP lets 1 AI assistant connect to your ad accounts, analytics and CRM as separate servers, so it can answer questions that span them. ChatGPT supports it: you add a custom MCP server from ChatGPT Plugins, and ChatGPT asks for manual confirmation before any write action.

## Related

- [Google Ads](https://adwarp.dev/google-ads): Adwarp's Google Ads tools: paused Search campaigns, keyword research and reporting.
- [LinkedIn Ads API access](https://adwarp.dev/blog/linkedin-ads-api): How to get the developer app that every LinkedIn Ads server runs on.
- [Google Ads API access](https://adwarp.dev/blog/google-ads-api-access): The Google Cloud project setup that replaced developer tokens.

Canonical page: https://adwarp.dev/blog/ads-mcp-servers
Last updated: 2026-11-07
