MCP

LinkedIn Ads MCP server: B2B campaigns and reporting from Claude or Codex

TL;DR

LinkedIn Ads has a mature Marketing API and, as of September 2026, no official MCP server. This guide covers what the community options give you, what a hosted server adds, the exact configuration for Claude Code, Claude Desktop and Codex, and the three LinkedIn rules that decide whether a create succeeds.

What already exists for this platform

LinkedIn publishes the Marketing API with a versioned REST surface, and had not shipped an official MCP server at the time of writing (September 2026). What exists is community-built: local wrappers around the REST API, usually read-focused.

  • No official server, and no hosted endpoint from LinkedIn.
  • Your own app, and its review. A local wrapper needs a LinkedIn developer app with the Marketing Developer Platform product approved — which is a review, not a checkbox.
  • Three products sit behind further review. The Conversions API, Matched Audiences and Lead Sync each need their own approval, so a wrapper that calls them may simply fail for you.

What a full MCP server adds

Typical option todayAgent Planners MCP
LinkedIn Ads toolsCommunity wrappers, varying26 reads, 41 writes
ReportingUsuallyCampaign, creative, demographic and conversion reporting, in the account's own currency
CreatesRareCampaign groups, campaigns and creatives — creatives land as drafts, which is LinkedIn's own rule
Account bindingYour own disciplineEvery write reads its object first and is bound to the ad account URN you picked
Deletes, organic posts, conversionsWhatever the wrapper doesHeld for a person on every key mode
Lead form answersReturned rawRedacted on every lane; test submissions excluded unless asked for
Other platforms in the same sessionNo28 more platforms on one endpoint
Counted from the tool registry. LinkedIn returns money as { amount, currencyCode } already, so nothing here divides or multiplies a figure on the way through.

How to configure it

  1. 1Create a key in API & MCP. tools:read for reporting; add tools:write for changes. Tools mode needs a paid plan and fails closed.
  2. 2Connect LinkedIn Ads under Integrations, signing in with a member who holds a role on the ad accounts you want. One row is created per ad account.
  3. 3Add the server to Claude Code, Claude Desktop or Codex with the snippet below.
  4. 4Run describe_permissions, then list_accounts for the ad account ids, and scope every call with one.
bash
claude mcp add --transport http agentplanners https://www.agentplanners.com/api/mcp \
  --header "Authorization: Bearer ap_live_…"

Three LinkedIn rules that decide whether a create works

These were measured against a live ad account rather than read off the documentation, which is why they are stated this precisely.

  • politicalIntent is required on a campaign create — LinkedIn answers 422 without it. The tool sends NOT_DECLARED unless you pass a value, because an EU political declaration belongs to the advertiser.
  • A new creative is a draft, and cannot be set to paused until its review is approved.
  • A draft creative cannot be archived — nor can a campaign under a draft group. They have to be deleted, and LinkedIn's own error hint says so.
A bid sent as 0 stops delivery, so it is refused whatever the optimization mode, and a cost type LinkedIn forbids for that mode is refused rather than sent and rejected.

What waits for a person, whatever the key allows

  • The three deletes, and archiving a post — which cannot be undone.
  • Publishing an organic post or sharing as a member.
  • Sending conversion events. LinkedIn has no test mode, so every send is real.
  • Account user writes and blocking an Insight Tag domain.
Held on every key mode, including a key with tools:write, and never bulk-approved. The token clock is worth knowing too: the refresh token lives 365 days from the first authorization, fixed, and never rotates.

Three products still pending LinkedIn's review

The Conversions API, Matched Audiences and Lead Sync each need LinkedIn's own approval for this app, on top of the Advertising API. Until LinkedIn grants a product, its tools are listed like any other, and a call answers "pending LinkedIn review" from the grant before anything is sent — a clear refusal, never a half-made request.

Frequently asked questions

Is there an official LinkedIn Ads MCP server?
Not as of September 2026 — LinkedIn publishes the Marketing API but has shipped no MCP server, official or hosted. The options are community wrappers you run locally, or a hosted server like this one.
Why does a LinkedIn campaign create fail with 422?
Most often because politicalIntent is missing — LinkedIn requires the field. This server sends NOT_DECLARED unless you pass NOT_POLITICAL or POLITICAL, because the EU political declaration is the advertiser's to make.
Can an MCP client read LinkedIn lead form answers?
Not in full. Lead form responses are redacted on every lane because they are answers a person typed, and test submissions are excluded unless you ask for them specifically.
Can it publish to a LinkedIn company page?
Only with a person's approval. Publishing an organic post, sharing as a member and archiving a post are all held for a person on every key mode, including a key carrying tools:write.
Put a human-approved agent on your ad ops

Start free — 2,500 credits a month, no credit card. Reads are free; every write waits for you.

Related reading