linkedin-campaign-manager-mcp
LinkedIn Campaign Manager MCP
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 |
| Alle Werbekonten, auf die der Benutzer zugreifen kann, mit Status + Währung. |
| Details zu einem einzelnen Konto: Währung, Status, Typ, Abrechnungsinformationen. |
| Kampagnen in einem Konto; Filterung nach Status oder Kampagnengruppe. |
| Vollständige Kampagnendetails: Targeting-Kriterien, Gebot, Budget, Zielsetzung. |
| Kampagnengruppen (Container für geteiltes Budget/Zielsetzung). |
| Werbe-Creatives; Filterung nach Kampagne oder Status. |
| Vollständige Creative-Details: Überschrift, Text, URL, Bild-/Video-URNs. |
| Impressionen/Klicks/Ausgaben/Conversions/Leads über einen Datumsbereich. Granularität: DAILY/MONTHLY/YEARLY/ALL. |
| Performance nach Unternehmen / Unternehmensgröße / Branche / Jobfunktion / Berufsbezeichnung / Seniorität / Region / Land. |
| WoW/MoM/YoY mit serverseitig berechneten Spalten für _current/_prior/_delta/_pct_change pro Entität. |
| Video-Completion-Funnel pro Creative: Starts → 25% → 50% → 75% → Abschlüsse + Abschlussrate. |
| Ausgaben vs. Budgetauslastung in % für aktive Kampagnen über einen konfigurierbaren Zeitraum. |
| Definitionen von Insight-Tag-Conversion-Events: Typ, Attributionsfenster, Aktivierungsstatus. |
| Performance nach Conversion-Event (CONVERSION-Pivot): Aufschlüsselung nach Post-Click vs. View-Through. |
| DMP-Segmente: Matched Audiences, Unternehmenslisten, kombinierte/Lookalike-Segmente + Größen. |
| Typeahead-Suche für Targeting-Werte (Berufsbezeichnungen, Fähigkeiten, Unternehmen, Branchen, Standorte, Senioritäten). |
| Lead-Gen-Formulare + Fragenkonfiguration + Status. |
| Tatsächliche Formularübermittlungen mit PII (Name, E-Mail, Unternehmen, Berufsbezeichnung). |
| LGF-Metriken pro Creative: Formular-Öffnungsrate, Absenderate, Kosten pro Lead. |
Einrichtung
1. Installation
npm install -g linkedin-campaign-manager-mcpOder lokal klonen + bauen:
git clone https://github.com/ZLeventer/linkedin-campaign-manager-mcp
cd linkedin-campaign-manager-mcp
npm install
npm run build2. LinkedIn Developer App erstellen
Die Marketing-API ist zugangsbeschränkt. Sie benötigen eine LinkedIn Developer App mit spezifischen Produktfreigaben:
Gehen Sie zu developer.linkedin.com → Create App (mit Ihrer Unternehmensseite verknüpfen).
Tab „Products“ – Zugriff anfordern für:
Marketing Developer Platform(decktr_ads,r_ads_reportingab)Lead Gen FormsoderCommunity Management API(decktr_ads_leadgen_automationab)
LinkedIn prüft den App-Zugriff manuell – normalerweise 2–6 Wochen.
Tab „Auth“ → Authorized Redirect URLs – hinzufügen:
http://127.0.0.1:53123(ändern Sie53123, falls Sie einen anderenLINKEDIN_OAUTH_PORTfestgelegt haben).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 authDies ö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 |
| Ja | — | OAuth App Client ID |
| Ja | — | OAuth App Client Secret |
| Nein |
| Pfad zum Lesen/Schreiben der Token-Datei |
| Empfohlen | — | Numerische Konto-ID; Tools greifen darauf zurück, wenn keine |
| Nein |
| Loopback-Port für OAuth-Redirect |
| Nein |
| 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 |
| Wörtliches ISO-Datum |
| Selbsterklärend |
| N Kalendertage vor heute |
Standardbereich: 28daysAgo → yesterday.
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_insightsgibt nur Größen von gespeicherten/hochgeladenen Segmenten zurück.
Lizenz
MIT © 2026 Zach Leventer
Maintenance
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
233 tools for Google, Microsoft, TikTok, LinkedIn Ads in Claude or ChatGPT. Writes need approval.
Search Meta, Google Ads, LinkedIn, and TikTok ad libraries plus creative analysis via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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