linkedin-mcp-server-ts
LinkedIn MCP Server (TypeScript / Bun)
Haftungsausschluss: Dies ist ein unabhängiges, von der Community betriebenes Open-Source-Projekt. Es ist nicht mit der LinkedIn Corporation oder der Microsoft Corporation verbunden, wird von diesen nicht gesponsert, autorisiert oder unterstützt. „LinkedIn“ ist eine eingetragene Marke der LinkedIn Corporation und wird rein beschreibend verwendet.
Ein extrem schneller, schlanker Model Context Protocol (MCP)-Server für LinkedIn-Automatisierung und -Scraping, neu geschrieben in TypeScript und betrieben mit der Bun-Laufzeit.
Er stellt KI-Assistenten (wie Claude Desktop, Cursor, OpenCode, VS Code und Windsurf/Antigravity) 19 produktionsreife MCP-Tools bereit, um Profile zu durchsuchen, Jobs und Unternehmen zu suchen, mit Nachrichten zu interagieren und Feeds mithilfe Ihrer eigenen authentifizierten Browsersitzung zu extrahieren.
⚡ Warum TypeScript + Bun?
linkedin-mcp-server-ts ist ein nativer TypeScript/Bun-Port von stickerdaniel/linkedin-mcp-server, der maximale Effizienz und einen minimalen Ressourcen-Fußabdruck bietet:
🚀 Sofortiger Start & nahezu null Overhead: Buns native JIT-Ausführung und schnelle Paketausführung eliminieren Verzögerungen beim Kaltstart.
🌐 Native WebView- und direkte CDP-Engine: Automatisiert Chromium über direktes Chrome DevTools Protocol (CDP) und
Bun.WebViewohne schwere externe Browser-Daemon-Schichten.🔄 100% Vertrags- und Schema-Parität: Vollständiger 1:1-Ersatz für die Python-MCP-Server-Tools, -Schemata und -Rückgabeformate.
🔑 Nahtloser Sitzungsaustausch: 100% kompatibel mit dem Standard-Sitzungsspeicher und Cookie-Format unter
~/.linkedin-mcp/profile.
Architekturvergleich
Funktion | Python Version ( | TypeScript / Bun Version ( |
Laufzeit | Python 3.10+ ( | Bun 1.2+ ( |
Sprache | Python ( | TypeScript 6 ( |
Browser-Engine | Patchright Chromium fork | Native |
Speicher / Fußabdruck | Mäßig (~150MB+ Laufzeit) | Ultra-leichtgewichtig (~30-60MB Basiswert) |
Transporte |
|
|
Sitzungsverzeichnis |
|
|
Validierung | Pydantic | Zod-Schemata |
Anzahl der Tools | 19 Tools | 19 Tools |
🛠️ MCP-Tools im Überblick (19 Tools)
Tool | Kategorie | Beschreibung | Zugriffstyp |
| Personen | Profileinzelheiten mit granularen Abschnitten extrahieren (Erfahrung, Ausbildung, Fähigkeiten, Projekte, Zertifizierungen, Beiträge usw.) | Nur Lesezugriff |
| Personen | Das eigene Profil des authentifizierten Benutzers extrahieren | Nur Lesezugriff |
| Personen | Personen nach Schlüsselwörtern, Standort, Verbindungsgrad ( | Nur Lesezugriff |
| Personen | Eine Kontaktanfrage senden oder eine Einladung mit einer optionalen personalisierten Notiz annehmen | Schreiben / Aktion |
| Personen | Empfohlene Profillinks in der Seitenleiste extrahieren („Personen, die Sie vielleicht kennen“, „Weitere Profile“) | Nur Lesezugriff |
| Unternehmen | Unternehmensdetails, Über-Informationen, Beiträge, Stellenangebote und numerische Unternehmens-URN-IDs extrahieren | Nur Lesezugriff |
| Unternehmen | Aktuelle Unternehmens-Feed-Beiträge abrufen | Nur Lesezugriff |
| Unternehmen | Unternehmen nach Schlüsselwort suchen | Nur Lesezugriff |
| Unternehmen | Unternehmensmitarbeiter aus dem Abschnitt | Nur Lesezugriff |
| Stellenangebote | Vollständige Details und Beschreibungen für eine bestimmte Stellenausschreibung abrufen | Nur Lesezugriff |
| Stellenangebote | Stellenangebote mit Filtern suchen: Schlüsselwörter, Standort, Veröffentlichungsdatum, Anstellungsart, Arbeitsmodell, Erfahrungsstufe, Easy Apply | Nur Lesezugriff |
| Stellenangebote | Die gespeicherten Stellenangebote des authentifizierten Benutzers abrufen | Nur Lesezugriff |
| Nachrichten | Aktuelle Unterhaltungsthreads aus dem Nachrichten-Posteingang auflisten | Nur Lesezugriff |
| Nachrichten | Nachrichten in einem Thread nach Benutzername oder | Nur Lesezugriff |
| Nachrichten | Nachrichten-Threads nach Schlüsselwort durchsuchen | Nur Lesezugriff |
| Nachrichten | Eine direkte LinkedIn-Nachricht senden (erfordert | Schreiben / Aktion |
| Feed | Aktuelle Beiträge aus Ihrer Startseiten-Timeline abrufen | Nur Lesezugriff |
| Feed | Globale Suche in LinkedIn-Beiträgen mit Aktualitätsfilter ( | Nur Lesezugriff |
| Sitzung | Die Browsersitzung ordnungsgemäß beenden und Hintergrundressourcen bereinigen | Schreiben / Aktion |
🚀 Schnellstart
Voraussetzungen
Installieren Sie Bun (v1.2 oder höher):
# Windows (PowerShell) powershell -c "irm bun.sh/install.ps1 | iex" # macOS / Linux curl -fsSL https://bun.sh/install | bashGoogle Chrome / Chromium: Auf Ihrem System installiert.
Ein-Befehl-Ausführung (bunx)
Sie können den Server direkt ohne manuelle Installation mit bunx ausführen:
bunx linkedin-mcp-server-tsLokales Klonen & Entwicklungseinrichtung
# Clone the repository
git clone https://github.com/joaovjo/linkedin-mcp-server-ts.git
cd linkedin-mcp-server-ts
# Install dependencies
bun install
# Start the server (stdio mode for MCP clients)
bun run start
# Start the HTTP server (for web MCP debugging)
bun run dev💻 MCP-Client-Konfiguration
1. Claude Desktop
Fügen Sie Folgendes zu Ihrer claude_desktop_config.json hinzu:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"linkedin": {
"command": "bunx",
"args": ["linkedin-mcp-server-ts"]
}
}
}Oder wenn Sie aus einem lokalen Klon ausführen:
{
"mcpServers": {
"linkedin": {
"command": "bun",
"args": ["run", "src/index.ts"],
"cwd": "D:/linkedin/linkedin-mcp-server-ts"
}
}
}2. Cursor
Fügen Sie zur Datei .cursor/mcp.json Ihres Projekts oder zu den globalen Cursor-Einstellungen hinzu:
{
"mcpServers": {
"linkedin": {
"command": "bunx",
"args": ["linkedin-mcp-server-ts"]
}
}
}3. OpenCode
Fügen Sie zu opencode.json (oder ~/.config/opencode/opencode.json) hinzu:
{
"mcp": {
"linkedin": {
"type": "stdio",
"command": "bunx",
"args": ["linkedin-mcp-server-ts"]
}
}
}4. Antigravity / Windsurf / VS Code (Cline / Roo Code)
Fügen Sie zu mcp_config.json hinzu:
{
"mcpServers": {
"linkedin": {
"command": "bunx",
"args": ["linkedin-mcp-server-ts"],
"disabled": false,
"autoApprove": []
}
}
}5. Streamable HTTP-Modus
Um den Server über HTTP für entfernte Agents oder containerisierte Umgebungen bereitzustellen:
bun run src/index.ts --transport streamable-http --host 127.0.0.1 --port 8000Endpunkt-URL: http://127.0.0.1:8000/mcp
Gesundheitscheck: http://127.0.0.1:8000/health
🔐 Authentifizierung & Sitzungsverwaltung
Der Server verwendet ein persistentes Browserprofil, das unter ~/.linkedin-mcp/profile gespeichert ist, sodass Sie sich nur einmal authentifizieren müssen.
Option A: Automatischer Import aus Ihrem Alltagsbrowser (Am schnellsten)
Wenn Sie in Ihrem Browser (Chrome, Brave, Edge, Arc, Vivaldi) bereits bei LinkedIn angemeldet sind, importieren Sie Ihre Sitzung sofort:
# Auto-detect the most recent browser session
bunx linkedin-mcp-server-ts --import-from-browser
# Or specify a target browser
bunx linkedin-mcp-server-ts --import-from-browser brave
bunx linkedin-mcp-server-ts --import-from-browser chrome
bunx linkedin-mcp-server-ts --import-from-browser edgeOption B: Interaktiver visueller Login
Starten Sie ein interaktives Chrome-Fenster, um sich anzumelden:
bunx linkedin-mcp-server-ts --login
# Or from local source:
bun run loginEin Chrome-Browserfenster wird mit der LinkedIn-Anmeldeseite geöffnet.
Schließen Sie Ihre Anmeldung ab (einschließlich 2FA / CAPTCHA, falls Sie dazu aufgefordert werden).
Der Server erkennt die erfolgreiche Navigation zu Ihrem Feed und speichert Ihr Sitzungsprofil sicher.
Sitzungsstatus überprüfen
bunx linkedin-mcp-server-ts --status
# Or from local source:
bun run statusAbmelden & Sitzung löschen
bunx linkedin-mcp-server-ts --logout
# Or from local source:
bun run logout⚙️ Konfiguration & Umgebungsvariablen
Erstellen Sie eine .env-Datei im Stammverzeichnis (oder übergeben Sie CLI-Argumente), um das Verhalten anzupassen:
Variable | CLI-Flag | Standard | Beschreibung |
|
|
| Pfad zum persistenten Browser-Profilverzeichnis |
|
|
| Browser im Headless-Modus ausführen |
|
|
| Transportprotokoll: |
|
|
| HTTP-Bind-Host |
|
|
| HTTP-Port |
|
|
| HTTP-Endpunktpfad |
|
|
| DOM-Navigations-/Interaktions-Timeout (ms) |
|
|
| MCP-Ausführungs-Timeout pro Tool (Sekunden) |
|
|
| Maximale Wartezeit während |
|
|
| Wartezeit für Inline-Authentifizierungs-Fallback (Sekunden) |
|
|
| Cookies automatisch importieren, wenn kein Profil existiert |
|
|
| Benutzerdefinierter Pfad zur Chrome/Chromium-Ausführungsdatei |
|
|
| Optionaler benutzerdefinierter Browser-User-Agent-Override |
|
|
| Browser-Viewport-Abmessungen ( |
|
|
| Chrome-Remote-Debugging-Port, der während |
|
|
| Log-Level ( |
🧪 Entwicklung, Tests & Qualität
Vertrags- und Unit-Tests ausführen
Führen Sie die vollständige Testsammlung aus, die alle 19 Tools, Schema-Validierungen, Link-Metadaten-Klassifizierer und die Fehlerbehandlung überprüft:
bun testLinting & Formatierung
Codestil und Formatierung werden mit Biome durchgesetzt:
# Check code for lint issues
bun run lint
# Auto-fix formatting and linting
bun run lint:fix
# Format files
bun run formatProjektarchitektur
linkedin-mcp-server-ts/
├── src/
│ ├── index.ts # CLI Entrypoint & Transport routing (stdio / HTTP)
│ ├── config.ts # CLI flags & environment configuration
│ ├── browser/
│ │ ├── auth.ts # Login, logout, status, and browser cookie importer
│ │ ├── cdp.ts # Direct Chrome DevTools Protocol helper functions
│ │ ├── chrome-launch.ts # Process launcher for visual login & remote attach
│ │ ├── manager.ts # Bun.WebView & CDP lifecycle manager
│ │ └── types.ts # Browser status types
│ ├── errors/ # Unified error handling & custom error hierarchy
│ ├── mcp/
│ │ └── create-server.ts # MCP Server registration & tool mounting
│ ├── middleware/ # Concurrency serialization queue
│ ├── scraping/ # DOM extraction, noise removal, link classification & URNs
│ ├── session/ # Cookie storage, profile directories, and persistence
│ ├── tools/ # 19 MCP tool implementations
│ └── utils/ # General helpers
├── tests/ # Bun test suite & contract validations
├── bunfig.toml # Bun configuration & npm publish registry settings
└── package.json # Package metadata, dependencies, and scripts📦 Veröffentlichung auf NPM
Dieses Projekt verwendet bunfig.toml, um direkt über die npm-Registry mit Bun zu veröffentlichen:
# Verify typecheck & tests pass
bun test
bun run lint
# Publish public package
bun publish🤝 Mitwirken
Beiträge, Fehlermeldungen und Pull-Requests sind willkommen!
Forken Sie das Repository auf GitHub:
https://github.com/joaovjo/linkedin-mcp-server-tsErstellen Sie einen Feature-Branch:
git checkout -b feature/amazing-featureCommitten Sie Ihre Änderungen:
git commit -m 'feat: add amazing feature'Stellen Sie sicher, dass alle Tests bestehen:
bun test && bun run lintPushen Sie auf den Branch:
git push origin feature/amazing-featureÖffnen Sie einen Pull-Request.
📄 Lizenz & Danksagungen
Lizenz: Lizenziert unter der MIT License.
Danksagungen: Besonderer Dank an Daniel Sticker und die Mitwirkenden von
stickerdaniel/linkedin-mcp-serverfür die ursprüngliche Python-Architektur, die Scraper-Logik und die Recherche.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
MCP server for LeadDelta — manage LinkedIn connections and CRM data via AI assistants.
Stealth scraping & search. Bypasses Cloudflare, DataDome & LinkedIn via Cyborg HITL approach.
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/joaovjo/linkedin-mcp-server-ts'
If you have feedback or need assistance with the MCP directory API, please join our Discord server