What an MCP Server Actually Is
Model Context Protocol is an open standard for connecting AI assistants to external systems. Anthropic published it in late 2024, and it has since been adopted by OpenAI and others. The idea is simple: instead of an AI model guessing, or you copying data into a prompt, the model calls a tool that returns real data from a real system.
An MCP server is the thing on the other end of that connection. It exposes a set of tools — each one a specific, named operation like "get campaign metrics" or "list accounts" — and the assistant decides which to call based on what you asked. You never see the tool names. You ask a question in English and the assistant works out which calls to make.
The practical difference is the difference between asking someone to guess your Q3 spend and handing them the ledger. One produces a plausible sentence. The other produces the number.
Why LinkedIn Ads Needed One
LinkedIn Campaign Manager is a reporting tool built for people who already know what they are looking for. It shows you what you asked for, in the shape it wants to show it, and hides the rest behind exports.
Four things make it particularly painful for B2B.
The data you need is spread across screens. Campaign performance is one view. Demographics are another. Company engagement is a third. Creative-level data is a fourth. Answering "which job titles are burning budget without converting?" means exporting three reports and reconciling them in a spreadsheet. It is a twenty-minute job to answer a question that should take ten seconds.
The default metrics are misleading. LinkedIn's headline click figure counts likes, comments, shares and profile clicks alongside actual landing page visits. Most reporting treats it as traffic. It is not, and the gap is not small.
Cross-account work is manual. If you manage more than one account, there is no way to ask a question across all of them at once. Agencies end up rebuilding the same spreadsheet every month, per client.
Nothing tells you what good looks like. Campaign Manager will happily report a £180 cost per lead without mentioning that comparable accounts in your vertical run at £95. Absolute numbers without benchmarks are hard to act on.
An MCP server collapses the first three. The fourth depends entirely on whether whoever built the server has real benchmark data behind it.
What the Kiin LinkedIn Ads MCP Does
The server exposes 69 tools. They fall into eight groups.
| Group | What it covers | Example tools |
|---|---|---|
| Account & setup | Account snapshots, hygiene checks, ICP definition, token health | get_account_snapshot, get_account_hygiene, get_icp |
| Campaigns | Structure, metrics, budgets, setup and automatic classification | get_campaign_metrics, get_campaign_setup, classify_campaigns |
| Creatives | Creative-level performance, fatigue detection, top performers | get_creative_health_report, get_top_creatives |
| Format reporting | Per-format reports that respect each format's real metrics | get_tla_report, get_conversation_ads_report, get_lead_gen_report |
| Audience & waste | Demographic breakdowns, wasted spend, company engagement, reach and frequency | get_demographic_waste, get_company_engagement |
| Funnel & conversion | Full-funnel views, conversion breakdowns, time series | get_funnel, get_conversion_breakdown |
| Pipeline & CRM | Deal and pipeline data joined to ad spend via HubSpot or Pipedrive | get_pipeline_report, get_deals |
| Audit & monitoring | Automated diagnostics, flags, bid recommendations, alerting | run_audit, get_flags_and_actions |
Most are read operations. A smaller set can write: create campaigns and campaign groups, update or pause them, create creatives and saved audiences. Those exist because agency work involves acting on findings, not just reading them — but they are the tools to think hardest about before granting access, and the security section below covers that properly.
get_demographic_waste quantifies spend going to job titles outside your ICP — not "here is a demographic breakdown", but "£4,200 of last month's £18,000 went to titles you told us you do not sell to". get_company_engagement surfaces companies engaging repeatedly without ever clicking through: the accounts your SDRs should be calling, which by definition never appear in a click report. Neither exists in Campaign Manager in a usable form.
The Metric Layer: Why Most LinkedIn Reporting Is Wrong
This matters more than the tool count, and it is the reason we built our own server instead of wrapping the raw API.
LinkedIn's API returns a field called clicks. It counts every click type: likes, comments, shares, profile clicks, company page clicks, and clicks through to your landing page. Almost every reporting tool, dashboard and agency report treats that number as traffic.
It is not traffic. The field for traffic is landingPageClicks.
On a Thought Leader Ad, where social engagement is the entire point of the format, the gap between the two is routinely 3–10×. Work through what that does to a report:
| Metric | Reported the common way | Reported correctly | Effect |
|---|---|---|---|
| Spend | £5,000 | £5,000 | Same |
| Impressions | 250,000 | 250,000 | Same |
| Clicks used | 2,500 (all types) | 500 (landing page only) | 5× gap |
| CTR | 1.00% "CTR" | 0.20% LP CTR | Inflated 5× |
| CPC | £2.00 "CPC" | £10.00 LP CPC | Understated 5× |
Both errors point the same direction: the campaign looks better than it is. Budget decisions get made on the left-hand column all the time.
The Kiin MCP reports LP CTR (landingPageClicks ÷ impressions) and LP CPC (spend ÷ landingPageClicks) as the primary metrics for feed ads, and shows total CTR only as secondary context. The same discipline applies across formats:
- Lead gen forms: form opens are not leads. CPL is calculated on submissions only.
- Conversation ads: judged on opens and open rate, not clicks, because clicks are close to meaningless in that format.
- Video: view rate and completion rate, not clicks.
clicks field through as "clicks" is handing your assistant a loaded gun.
What the Audit Actually Checks
run_audit is the tool most people end up using first. It runs the Kiin Brain diagnostic — the same engine we run across managed accounts — and returns a prioritised list rather than a wall of metrics. It evaluates eight layers in order:
- Thought Leader Ads — presence, volume, author diversity, LP CTR, engagement rate
- Conversation Ads — open rate, click-to-open rate, CPL, send volume
- Lead Gen Forms — submit rate, CPL, form friction signals
- Single Image / Company Ads — LP CTR, CPM, true LP CPC
- Video Ads — view rate, completion rate, cost per view
- Full-Funnel Structure — TOFU/MOFU/BOFU coverage and budget allocation across them
- GTM & Outbound Alignment — ICP targeting quality, company targeting
- Content Strategy — creative diversity, message variation, format mix
Each layer produces a score and a prioritised action. The health score is a weighted average across all eight. The value is not the score — it is that the output is ordered by what would move the needle, rather than by what happens to look worst.
Most accounts fail on layer 6 before they fail on layer 1. Teams obsess over creative while running no mid-funnel at all.
What You Can Actually Ask It
Once connected, you ask questions in plain English. These come up constantly:
Diagnosis
- "Give me an account snapshot for last month."
- "Which campaigns have the worst LP CPC, and why?"
- "Run an audit and give me the three things to fix this week."
- "Are any creatives showing fatigue?"
Finding waste
- "How much budget went to job titles outside our ICP?"
- "Break down spend by seniority and flag anything below director level."
- "Which campaigns are delivering to the Audience Network rather than the LinkedIn feed?"
Finding opportunity
- "Which companies engaged more than three times but never clicked through?"
- "Compare our thought leader ads against our single image ads on cost per landing page visit."
- "What is our reach and frequency against the target account list?"
Proving value
- "Which campaigns influenced closed-won deals last quarter?" (requires a CRM connection)
- "Show me the full funnel from impression to opportunity."
The pattern that works best is a question followed by two follow-ups. The first answer tells you what happened. The follow-ups are where you find out why, because the assistant re-queries rather than re-summarising.
Every LinkedIn Ads MCP, Compared
Kiin's is not the only option, and pretending otherwise would be useless to you. As of September 2026 there are at least eight. LinkedIn has not published an official one.
| Server | Built by | Approx. tools | Write actions | Best for |
|---|---|---|---|---|
| Kiin | B2B LinkedIn Ads agency | 69 | Yes | Diagnosis, waste analysis, benchmarking against real accounts |
| Markifact | Marketing ops platform | 8–10 | Yes, with approval | Campaign and creative building inside chat |
| AdKit | Product company | ~5 | Drafts only | Teams who want a hard safety buffer |
| Radiate B2B | SaaS product | ~4 | No | Lightweight campaign and creative analysis |
| Two Minute Reports | Reporting tool | Reporting only | No | Straight reporting without building dashboards |
| CData | Data connectivity vendor | Query-based | No | SQL-style access via JDBC |
| Zapier / Pipedream | Integration platforms | Action-based | Yes | Wiring LinkedIn Ads into wider automations |
Being straight about where others win:
AdKit has the best safety model. Every change is a draft by default and nothing reaches LinkedIn until a human approves it. If your main worry is an agent touching live campaigns, that design is stronger than ours and you should weigh it seriously.
Markifact is better for building. If what you want is to construct campaigns, audiences and creatives conversationally, that is what they have optimised for.
Zapier and Pipedream are better for plumbing. If LinkedIn Ads is one step in a longer automation, use the platform built for automations.
CData is better if you think in SQL. Read-only, query-shaped, and it fits an existing data stack.
Where Kiin genuinely differs: it is the only one of these operated by a company that runs LinkedIn Ads for a living. Everyone else is a software company. That shows up in what the tools are for — get_demographic_waste and the eight-layer audit exist because they are the questions we ask on client accounts every week, not because they demo well.
MCP vs Dashboard vs Export vs Raw API
| Campaign Manager | CSV export | Raw API | Kiin MCP | |
|---|---|---|---|---|
| Ask a follow-up question | Re-navigate | Re-export | Write more code | Just ask |
| Join data across views | Manual | Spreadsheet work | Yes, if you build it | Built in |
| Correct click metrics | No | No | You must know to | Enforced |
| Cross-account questions | No | Manual merge | Yes, if you build it | Built in |
| Setup effort | None | None | Weeks | Minutes |
| Benchmarks to compare against | None | None | None | 1,000+ accounts |
The raw API is a real option if you have engineering time, and for some teams it is the right one. It is also where you inherit every quirk yourself. Three that catch almost everybody:
- Monetary values arrive as strings, not numbers. Sum them without parsing and you get concatenation.
- Timestamps are Unix epoch milliseconds, not seconds. Off by a factor of 1,000 is a popular bug.
- The analytics endpoint returns only impressions and clicks unless you explicitly name every other field you want. Most people discover this after building a dashboard on two metrics.
What Goes Wrong
Patterns we see when people first connect an assistant to an ad account.
Asking one question and stopping. The first answer is a summary. The value is in the follow-up, because that is when the assistant queries again with the context of what you just learned.
Trusting a number that contradicts the account. If something looks wrong, it might be. Ask the assistant which tool it used and what date range it applied. A good session is auditable.
Asking questions the data cannot answer. "Why did our CPL go up?" has no answer inside LinkedIn if the cause was a landing page change. The server knows about ads, not your website.
Forgetting the token expired. A silently expired LinkedIn token is the single most common reason ad data quietly stops updating. get_token_health exists for exactly this. Ask it before you trust a number that looks odd.
Treating output as a decision. Covered below, but it is the one that costs money.
Security, Permissions, and What It Cannot Do
Connecting an AI assistant to a live ad account deserves a straight answer about boundaries.
It reads what you authorise, and nothing else. Access is scoped to the LinkedIn ad accounts you connect. It cannot see accounts you have not granted, and it cannot see anything outside LinkedIn Ads and any CRM you explicitly connect.
Write actions exist and should be treated carefully. Creating, updating and pausing campaigns are real tools on the server. They are useful when you are acting on findings during a working session. They are also the reason to think about who has access. If you only want reporting, the read tools stand alone perfectly well — and if a hard approval buffer matters more to you than breadth, AdKit's drafts-only model is a legitimate reason to choose them instead.
It cannot spend money on its own. There is no tool that raises a budget without an explicit instruction, and no autonomous process making changes in the background.
Tokens expire and that is visible. You can ask whether your connection is healthy and get a real answer rather than discovering three weeks of stale data later.
How to Connect It
The server runs as a Cloudflare Worker over SSE, so there is nothing to install and nothing running on your machine. It works with any MCP-compatible client — Claude and ChatGPT today, more as the standard spreads.
Step-by-step setup with screenshots and a set of starter prompts is covered in how to use LinkedIn Ads with Claude.
Glossary
MCP (Model Context Protocol) — an open standard for connecting AI assistants to external systems, published by Anthropic in late 2024 and since adopted more widely.
MCP server — the service exposing tools an assistant can call. Kiin's is a remote server; some others run locally on your machine.
Tool — one named operation the assistant can call, such as get_campaign_metrics.
SSE (Server-Sent Events) — the transport Kiin's server uses. Practically, it means remote and nothing to install.
LP CTR — landing page clicks ÷ impressions. The real click-through rate for feed ads.
LP CPC — spend ÷ landing page clicks. The true cost per landing page visit.
Total CTR — all clicks ÷ impressions, including social engagement. Context only, not a traffic measure.
Penetration rate — the share of your target account list that has seen your ads at least once.
Who This Is Actually For
In-house B2B marketers running LinkedIn themselves, who want to stop exporting three reports to answer one question.
Agencies and consultants managing multiple accounts, who want to ask a question across a portfolio rather than account by account.
Heads of demand gen who need to connect ad spend to pipeline and are tired of last-click attribution being the only available story.
It is less useful if you are spending under about £2,000 a month. At that level there is not enough data for the diagnostic and benchmark layers to say anything you could not see by looking at the account directly.
Kiin manages 200+ B2B ad accounts and benchmarks against 1,000+ accounts connected to Kiin Intelligence. The MCP is the same tooling we use internally, not a separate product built for the outside. That is the whole argument for using ours over a software company's: the tools exist because we needed them on real accounts, not because they made a good demo.