Skip to main content
Glama
ZLeventer

linkedin-campaign-manager-mcp

LinkedIn Campaign Manager MCP

npm version npm downloads Node.js MCP License: MIT

MCP-Server für die LinkedIn Marketing API – fragen Sie Kampagnen, Performance und Lead-Gen-Formulare von Claude in einfachem Englisch ab.

19 schreibgeschützte Tools für Werbekonten, Kampagnen, Creatives, Performance-Analysen, demografische Daten, Video-Analysen, Budget-Pacing, Periodenvergleiche, Conversions, Lead-Gen-Formulare, Zielgruppen und Targeting-Facetten. Entwickelt für B2B-Paid-Social-Teams, die Sponsored Content, Lead-Gen-Formulare und accountbasierte Kampagnen auf LinkedIn schalten.


Warum existiert dieses Tool?

Die Arbeit mit der LinkedIn Marketing API ist bekanntermaßen mühsam: monatliche Rosetta-Versionierung, undokumentierte Feldzuordnungen, verschachtelte Abfrageparameter im Rest.li-Stil für Analysen und 60-Tage-Zugriffstoken, die stillschweigend ablaufen. Dieser Server erledigt all das im Hintergrund, sodass Sie Fragen in einfachem Englisch stellen können, anstatt dateRange=(start:(year:...)) manuell schreiben zu müssen.

Kein anderer Open-Source-MCP-Server für LinkedIn Ads bietet diese Tiefe. Die meisten hören bei „Kampagnen auflisten“ auf. Dieser Server umfasst demografische Daten, Video-Completion-Funnel, Budget-Pacing, Periodenvergleiche und Lead-Gen-Formularantworten inklusive PII, damit Sie Leads mit Marketo oder Salesforce abgleichen können.


Beispiel-Prompts

Nach der Installation können Sie Claude Dinge fragen wie:

  • „Wie ist der Trend unserer LinkedIn Ads-Ausgaben der letzten 28 Tage, aufgeschlüsselt nach Kampagnengruppe?“

  • „Vergleiche den CPL der Wettbewerbs-Kampagnen diesen Monat mit dem letzten – welche Creatives haben das Ergebnis beeinflusst?“

  • „Rufe demografische Daten für unsere Kampagne mit den höchsten Ausgaben ab – welche Seniorität und Branche konvertieren?“

  • „Welche Lead-Gen-Formulare hatten letzten Monat die höchste Absenderate und wie hoch waren die Kosten pro Lead?“

  • „Zeige den Video-Completion-Funnel für unsere Awareness-Kampagne – wo steigen die Leute aus?“

  • „Sind Kampagnen gefährdet, das Budget zu überschreiten? Zeige das Budget-Pacing für alle aktiven Kampagnen.“

  • „Rufe die Lead-Gen-Formularantworten von gestern ab, damit ich sie stichprobenartig mit Marketo abgleichen kann.“


Demo

🎥 Walkthrough-Video folgt in Kürze – Abfrage der LinkedIn-Kampagnen-Performance von Claude Code in unter 60 Sekunden.


Tools

Tool

Was es tut

li_list_ad_accounts

Alle Werbekonten, auf die der Benutzer zugreifen kann, mit Status + Währung.

li_get_account

Details zu einem einzelnen Konto: Währung, Status, Typ, Abrechnungsinformationen.

li_list_campaigns

Kampagnen in einem Konto; Filterung nach Status oder Kampagnengruppe.

li_get_campaign

Vollständige Kampagnendetails: Targeting-Kriterien, Gebot, Budget, Zielsetzung.

li_list_campaign_groups

Kampagnengruppen (Container für geteiltes Budget/Zielsetzung).

li_list_creatives

Werbe-Creatives; Filterung nach Kampagne oder Status.

li_get_creative

Vollständige Creative-Details: Überschrift, Text, URL, Bild-/Video-URNs.

li_get_campaign_performance

Impressionen/Klicks/Ausgaben/Conversions/Leads über einen Datumsbereich. Granularität: DAILY/MONTHLY/YEARLY/ALL.

li_get_demographics_report

Performance nach Unternehmen / Unternehmensgröße / Branche / Jobfunktion / Berufsbezeichnung / Seniorität / Region / Land.

li_compare_periods

WoW/MoM/YoY mit serverseitig berechneten Spalten für _current/_prior/_delta/_pct_change pro Entität.

li_get_video_analytics

Video-Completion-Funnel pro Creative: Starts → 25% → 50% → 75% → Abschlüsse + Abschlussrate.

li_get_budget_pacing

Ausgaben vs. Budgetauslastung in % für aktive Kampagnen über einen konfigurierbaren Zeitraum.

li_get_conversion_events

Definitionen von Insight-Tag-Conversion-Events: Typ, Attributionsfenster, Aktivierungsstatus.

li_get_conversion_performance

Performance nach Conversion-Event (CONVERSION-Pivot): Aufschlüsselung nach Post-Click vs. View-Through.

li_get_audience_insights

DMP-Segmente: Matched Audiences, Unternehmenslisten, kombinierte/Lookalike-Segmente + Größen.

li_search_targeting_facets

Typeahead-Suche für Targeting-Werte (Berufsbezeichnungen, Fähigkeiten, Unternehmen, Branchen, Standorte, Senioritäten).

li_get_leadgen_forms

Lead-Gen-Formulare + Fragenkonfiguration + Status.

li_get_leadgen_responses

Tatsächliche Formularübermittlungen mit PII (Name, E-Mail, Unternehmen, Berufsbezeichnung).

li_get_leadgen_form_performance

LGF-Metriken pro Creative: Formular-Öffnungsrate, Absenderate, Kosten pro Lead.


Einrichtung

1. Installation

npm install -g linkedin-campaign-manager-mcp

Oder lokal klonen + bauen:

git clone https://github.com/ZLeventer/linkedin-campaign-manager-mcp
cd linkedin-campaign-manager-mcp
npm install
npm run build

2. LinkedIn Developer App erstellen

Die Marketing-API ist zugangsbeschränkt. Sie benötigen eine LinkedIn Developer App mit spezifischen Produktfreigaben:

  1. Gehen Sie zu developer.linkedin.comCreate App (mit Ihrer Unternehmensseite verknüpfen).

  2. Tab „Products“ – Zugriff anfordern für:

    • Marketing Developer Platform (deckt r_ads, r_ads_reporting ab)

    • Lead Gen Forms oder Community Management API (deckt r_ads_leadgen_automation ab)

  3. LinkedIn prüft den App-Zugriff manuell – normalerweise 2–6 Wochen.

  4. Tab „Auth“Authorized Redirect URLs – hinzufügen: http://127.0.0.1:53123 (ändern Sie 53123, falls Sie einen anderen LINKEDIN_OAUTH_PORT festgelegt haben).

  5. Kopieren Sie Client ID und Client Secret aus dem Auth-Tab.

Ohne Produktfreigabe gibt jeder API-Aufruf einen 403-Fehler zurück. Der Server kompiliert und startet sauber – der 403 ist ein Berechtigungsproblem auf App-Ebene, kein Code-Problem.

3. Umgebung konfigurieren

cp .env.example .env
# edit .env with your LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET,
# LINKEDIN_DEFAULT_AD_ACCOUNT (numeric ID from Campaign Manager URL)

4. Autorisieren (einmaliger OAuth-Flow)

npm run auth

Dies öffnet einen lokalen HTTP-Server auf Port 53123 (oder LINKEDIN_OAUTH_PORT), gibt eine Auth-URL in Ihrem Terminal aus und wartet auf den OAuth-Callback. Nachdem Sie im Browser zugestimmt haben, tauscht er den Code gegen ein Zugriffstoken + 365-Tage-Refresh-Token aus und speichert diese in token.json (Modus 0600).

Sie müssen npm run auth nur erneut ausführen, wenn das Refresh-Token abläuft (nach 365 Tagen).

5. In Claude Code (oder einen beliebigen MCP-Client) einbinden

Fügen Sie dies in ~/.claude.json unter mcpServers hinzu:

{
  "mcpServers": {
    "linkedin": {
      "command": "linkedin-campaign-manager-mcp",
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret",
        "LINKEDIN_TOKEN_PATH": "/absolute/path/to/token.json",
        "LINKEDIN_DEFAULT_AD_ACCOUNT": "123456789",
        "LINKEDIN_API_VERSION": "202504"
      }
    }
  }
}

Oder bei Ausführung aus dem Quellcode:

{
  "mcpServers": {
    "linkedin": {
      "command": "node",
      "args": ["/path/to/linkedin-campaign-manager-mcp/dist/index.js"],
      "env": {
        "LINKEDIN_CLIENT_ID": "...",
        "LINKEDIN_CLIENT_SECRET": "...",
        "LINKEDIN_TOKEN_PATH": "/path/to/token.json",
        "LINKEDIN_DEFAULT_AD_ACCOUNT": "123456789"
      }
    }
  }
}

Starten Sie Claude Code neu. Die 19 Tools erscheinen unter dem linkedin-Server.


Umgebungsvariablen

Variable

Erforderlich

Standard

Beschreibung

LINKEDIN_CLIENT_ID

Ja

OAuth App Client ID

LINKEDIN_CLIENT_SECRET

Ja

OAuth App Client Secret

LINKEDIN_TOKEN_PATH

Nein

./token.json

Pfad zum Lesen/Schreiben der Token-Datei

LINKEDIN_DEFAULT_AD_ACCOUNT

Empfohlen

Numerische Konto-ID; Tools greifen darauf zurück, wenn keine ad_account_id übergeben wird

LINKEDIN_OAUTH_PORT

Nein

53123

Loopback-Port für OAuth-Redirect

LINKEDIN_API_VERSION

Nein

202504

LinkedIn Rosetta API-Version (JJJJMM)


URN-Handhabung

LinkedIn-Ressourcen werden durch URNs identifiziert: urn:li:sponsoredAccount:123, urn:li:sponsoredCampaign:456 usw.

Alle Tool-Eingaben akzeptieren entweder die reine numerische ID oder die vollständige URN – der Client umschließt reine IDs automatisch. Numerische IDs erscheinen in den URLs des Campaign Managers (/accounts/<id>/, /campaigns/<id>/).


Datumseingaben

Alle Datumsparameter akzeptieren:

Eingabe

Bedeutung

2024-10-01

Wörtliches ISO-Datum

today / yesterday

Selbsterklärend

7daysAgo, 28daysAgo, 90daysAgo

N Kalendertage vor heute

Standardbereich: 28daysAgoyesterday.


LinkedIn-spezifische Fallstricke

API-Versionswechsel

LinkedIn Rosetta verwendet monatliche Versionen (202504 = April 2025). Versionen werden ca. 12 Monate nach Veröffentlichung eingestellt – Sie erhalten dann 410 Gone-Fehler. Aktualisieren Sie LINKEDIN_API_VERSION vierteljährlich. Siehe die Versionierungs-Dokumentation.

Analyse-Abfrageform

/adAnalytics verwendet verschachtelte Parameter im Rest.li-Stil, keine einfachen ISO-Strings:

dateRange=(start:(year:2024,month:10,day:1),end:(year:2024,month:10,day:31))
campaigns=List(urn:li:sponsoredCampaign:123,urn:li:sponsoredCampaign:456)

Dies wird intern durch dateRangeParam() und liGetRaw() gehandhabt. Wenn Sie den Server erweitern, leiten Sie Analyse-Aufrufe über liGetRaw() mit einer manuell erstellten URL – verwenden Sie nicht liGet() für Analyse-Endpunkte, da URLSearchParams die verschachtelten Klammern beschädigen würde.

Verzögerung der Analysedaten

LinkedIn-Analysen haben bei den meisten Metriken eine Verzögerung von 2–6 Stunden und bei Conversion-Daten von bis zu 24 Stunden. Die Zahlen von gestern sind normalerweise vollständig; die von heute sind unvollständig.

60-Tage-Zugriffstoken, 365-Tage-Refresh-Token

Zugriffstoken laufen in 60 Tagen ab; Refresh-Token in 365 Tagen. Der Client aktualisiert das Zugriffstoken bei Bedarf automatisch bei jeder Anfrage. Wenn das Refresh-Token abläuft, führen Sie npm run auth erneut aus.

Lead-Gen-Antworten PII

li_get_leadgen_responses gibt tatsächliche Lead-PII zurück – Name, E-Mail, Unternehmen, Berufsbezeichnung. Behandeln Sie die Ausgabe als vertraulich: Schreiben Sie sie nicht in freigegebene Protokolle, unverschlüsselten Speicher oder öffentliche Kanäle. Die Datennutzungsrichtlinie von LinkedIn erfordert das Löschen von Lead-Antworten innerhalb von 90 Tagen nach Erhalt, es sei denn, der Lead hat aktiv zugestimmt. Dieses Tool ist für den autorisierten CRM-Abgleich (Marketo/SFDC) gedacht.

Ratenbegrenzungen

LinkedIn veröffentlicht keine harten Ratenbegrenzungen. In der Praxis ist mit einer Drosselung bei etwa 100 Analyse-Aufrufen/Minute pro App zu rechnen. Es ist kein Retry-on-429 integriert – wenn Sie Limits erreichen, reduzieren Sie die Aufrufhäufigkeit oder cachen Sie Ergebnisse clientseitig.


Wann Sie diesen Server NICHT verwenden sollten

  • Erstellen oder Bearbeiten von Kampagnen, Budgets oder Creatives – konzipiert als schreibgeschützt. Die Kampagnenerstellung hat zu viele Fehlerquellen, um sie sicher zu automatisieren; verwenden Sie die Campaign Manager UI.

  • Echtzeit-Impression-Daten – verwenden Sie das LinkedIn Insight Tag + GA4 für nahezu Echtzeit.

  • Schätzung der Zielgruppengröße für beliebige Targeting-Kriterien – verwenden Sie die Audience Builder UI des Campaign Managers für Ad-hoc-Größenbestimmungen. li_get_audience_insights gibt nur Größen von gespeicherten/hochgeladenen Segmenten zurück.


Lizenz

MIT © 2026 Zach Leventer

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
2hResponse time
0dRelease cycle
2Releases (12mo)

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZLeventer/linkedin-campaign-manager-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server