Skip to main content
Glama
joaovjo

linkedin-mcp-server-ts

by joaovjo

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.WebView ohne 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 (mcp-server-linkedin)

TypeScript / Bun Version (linkedin-mcp-server-ts)

Laufzeit

Python 3.10+ (uv / uvx)

Bun 1.2+ (bun / bunx)

Sprache

Python (fastmcp)

TypeScript 6 (@modelcontextprotocol/server v2)

Browser-Engine

Patchright Chromium fork

Native Bun.WebView + Direct Chrome DevTools Protocol (CDP)

Speicher / Fußabdruck

Mäßig (~150MB+ Laufzeit)

Ultra-leichtgewichtig (~30-60MB Basiswert)

Transporte

stdio, streamable-http

stdio, streamable-http (über natives Bun.serve)

Sitzungsverzeichnis

~/.linkedin-mcp/profile

~/.linkedin-mcp/profile (Geteilt & interoperabel)

Validierung

Pydantic

Zod-Schemata

Anzahl der Tools

19 Tools

19 Tools


🛠️ MCP-Tools im Überblick (19 Tools)

Tool

Kategorie

Beschreibung

Zugriffstyp

get_person_profile

Personen

Profileinzelheiten mit granularen Abschnitten extrahieren (Erfahrung, Ausbildung, Fähigkeiten, Projekte, Zertifizierungen, Beiträge usw.)

Nur Lesezugriff

get_my_profile

Personen

Das eigene Profil des authentifizierten Benutzers extrahieren

Nur Lesezugriff

search_people

Personen

Personen nach Schlüsselwörtern, Standort, Verbindungsgrad (F=1., S=2., O=3.+) und aktuellem Unternehmen suchen

Nur Lesezugriff

connect_with_person

Personen

Eine Kontaktanfrage senden oder eine Einladung mit einer optionalen personalisierten Notiz annehmen

Schreiben / Aktion

get_sidebar_profiles

Personen

Empfohlene Profillinks in der Seitenleiste extrahieren („Personen, die Sie vielleicht kennen“, „Weitere Profile“)

Nur Lesezugriff

get_company_profile

Unternehmen

Unternehmensdetails, Über-Informationen, Beiträge, Stellenangebote und numerische Unternehmens-URN-IDs extrahieren

Nur Lesezugriff

get_company_posts

Unternehmen

Aktuelle Unternehmens-Feed-Beiträge abrufen

Nur Lesezugriff

search_companies

Unternehmen

Unternehmen nach Schlüsselwort suchen

Nur Lesezugriff

get_company_employees

Unternehmen

Unternehmensmitarbeiter aus dem Abschnitt /people/ mit optionalen Filtern auflisten

Nur Lesezugriff

get_job_details

Stellenangebote

Vollständige Details und Beschreibungen für eine bestimmte Stellenausschreibung abrufen

Nur Lesezugriff

search_jobs

Stellenangebote

Stellenangebote mit Filtern suchen: Schlüsselwörter, Standort, Veröffentlichungsdatum, Anstellungsart, Arbeitsmodell, Erfahrungsstufe, Easy Apply

Nur Lesezugriff

get_saved_jobs

Stellenangebote

Die gespeicherten Stellenangebote des authentifizierten Benutzers abrufen

Nur Lesezugriff

get_inbox

Nachrichten

Aktuelle Unterhaltungsthreads aus dem Nachrichten-Posteingang auflisten

Nur Lesezugriff

get_conversation

Nachrichten

Nachrichten in einem Thread nach Benutzername oder thread_id lesen

Nur Lesezugriff

search_conversations

Nachrichten

Nachrichten-Threads nach Schlüsselwort durchsuchen

Nur Lesezugriff

send_message

Nachrichten

Eine direkte LinkedIn-Nachricht senden (erfordert confirm_send: true für eine sichere zweistufige Bestätigung)

Schreiben / Aktion

get_feed

Feed

Aktuelle Beiträge aus Ihrer Startseiten-Timeline abrufen

Nur Lesezugriff

search_posts

Feed

Globale Suche in LinkedIn-Beiträgen mit Aktualitätsfilter (past-24h, past-week, past-month)

Nur Lesezugriff

close_session

Sitzung

Die Browsersitzung ordnungsgemäß beenden und Hintergrundressourcen bereinigen

Schreiben / Aktion


🚀 Schnellstart

Voraussetzungen

  1. 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 | bash
  2. Google 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-ts

Lokales 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.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.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 8000

Endpunkt-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 edge

Option 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 login
  1. Ein Chrome-Browserfenster wird mit der LinkedIn-Anmeldeseite geöffnet.

  2. Schließen Sie Ihre Anmeldung ab (einschließlich 2FA / CAPTCHA, falls Sie dazu aufgefordert werden).

  3. 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 status

Abmelden & 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

USER_DATA_DIR

--user-data-dir

~/.linkedin-mcp/profile

Pfad zum persistenten Browser-Profilverzeichnis

HEADLESS

--headless / --no-headless

true

Browser im Headless-Modus ausführen

TRANSPORT

--transport

stdio

Transportprotokoll: stdio oder streamable-http

HOST

--host

127.0.0.1

HTTP-Bind-Host

PORT

--port

8000

HTTP-Port

HTTP_PATH

--path

/mcp

HTTP-Endpunktpfad

TIMEOUT

--timeout

5000

DOM-Navigations-/Interaktions-Timeout (ms)

TOOL_TIMEOUT

--tool-timeout

180

MCP-Ausführungs-Timeout pro Tool (Sekunden)

LOGIN_TIMEOUT

--login-timeout

1800

Maximale Wartezeit während --login (Sekunden)

LOGIN_INLINE_WAIT

--login-inline-wait

25

Wartezeit für Inline-Authentifizierungs-Fallback (Sekunden)

AUTO_IMPORT_FROM_BROWSER

--auto-import / --no-auto-import

true

Cookies automatisch importieren, wenn kein Profil existiert

CHROME_PATH

--chrome-path

"" (automatisch erkannt)

Benutzerdefinierter Pfad zur Chrome/Chromium-Ausführungsdatei

USER_AGENT

--user-agent

""

Optionaler benutzerdefinierter Browser-User-Agent-Override

VIEWPORT

--viewport

1280x720

Browser-Viewport-Abmessungen (WIDTHxHEIGHT)

DEBUG_PORT

--debug-port

9222

Chrome-Remote-Debugging-Port, der während --login verwendet wird

LOG_LEVEL

--log-level

WARNING

Log-Level (DEBUG, INFO, WARNING, ERROR)


🧪 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 test

Linting & 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 format

Projektarchitektur

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!

  1. Forken Sie das Repository auf GitHub: https://github.com/joaovjo/linkedin-mcp-server-ts

  2. Erstellen Sie einen Feature-Branch: git checkout -b feature/amazing-feature

  3. Committen Sie Ihre Änderungen: git commit -m 'feat: add amazing feature'

  4. Stellen Sie sicher, dass alle Tests bestehen: bun test && bun run lint

  5. Pushen Sie auf den Branch: git push origin feature/amazing-feature

  6. Öffnen Sie einen Pull-Request.


📄 Lizenz & Danksagungen

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

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/joaovjo/linkedin-mcp-server-ts'

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