linkedin-mcp-server-ts
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@linkedin-mcp-server-tsFind me software engineering jobs in New York posted this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LinkedIn MCP Server (TypeScript / Bun)
Disclaimer: This is an independent open-source project. It is not affiliated with, sponsored by, or endorsed by LinkedIn Corporation or Microsoft Corporation. "LinkedIn" is a registered trademark of LinkedIn Corporation and is used purely descriptively.
A Model Context Protocol (MCP) server for LinkedIn scraping and automation, written in TypeScript and executed directly on Bun.
It gives AI assistants (Claude Desktop, Cursor, OpenCode, VS Code, Windsurf, Antigravity) 19 MCP tools to inspect profiles, search jobs and companies, manage messages, and fetch feed updates through your existing authenticated browser session.
Why TypeScript + Bun
linkedin-mcp-server-ts is a native TypeScript port of stickerdaniel/linkedin-mcp-server. Moving from Python to Bun reduced baseline memory usage and removed the need for separate browser daemon layers.
Fast startup: Bun executes TypeScript directly without build steps or transpilation passes.
Direct CDP communication: connects directly to Chromium instances via Chrome DevTools Protocol and
Bun.WebView.Full schema parity: matching tool signatures, Zod validation schemas, and JSON envelope output corresponding to the original Python server.
Shared session storage: reads and writes cookies to
~/.linkedin-mcp/profilefor complete interoperability.
Architecture Comparison
Feature | Python Version ( | TypeScript / Bun Version ( |
Runtime | Python 3.10+ ( | Bun 1.2+ ( |
Language | Python ( | TypeScript 5.8+ ( |
Browser Engine | Patchright Chromium fork | Native |
Memory Baseline | ~150MB+ | ~30-60MB |
Transports |
|
|
Session Directory |
|
|
Validation | Pydantic | Zod schemas |
Tool Count | 19 tools | 19 tools |
Related MCP server: LinkedIn MCP Pro Max
Available MCP Tools (19 Tools)
Tool | Category | Description | Access |
| People | Extract profile details with granular sections (experience, education, skills, projects, certifications, posts) | Read-Only |
| People | Extract the authenticated user's own profile | Read-Only |
| People | Search people by keywords, location, connection degree ( | Read-Only |
| People | Send a connection invitation or accept an incoming request with an optional note | Write / Action |
| People | Extract sidebar recommendations ("People you may know", "More profiles") | Read-Only |
| Company | Extract company details, about section, posts, jobs, and numeric URN IDs | Read-Only |
| Company | Retrieve recent company feed posts | Read-Only |
| Company | Search companies by keyword | Read-Only |
| Company | List company employees from the | Read-Only |
| Jobs | Fetch full job descriptions, criteria, and company metadata | Read-Only |
| Jobs | Search jobs by keywords, location, date posted, job type, work type, and easy apply | Read-Only |
| Jobs | Retrieve the authenticated user's saved job listings | Read-Only |
| Messaging | List recent conversation threads from the messaging inbox | Read-Only |
| Messaging | Read messages from a thread by username or | Read-Only |
| Messaging | Search messaging threads by keyword | Read-Only |
| Messaging | Send a LinkedIn direct message (requires | Write / Action |
| Feed | Retrieve recent posts from your home timeline | Read-Only |
| Feed | Global search across LinkedIn posts with recency filters | Read-Only |
| Session | Terminate the browser session and release background process handles | Write / Action |
Quickstart
Prerequisites
Install Bun (v1.2 or higher):
# Windows (PowerShell) powershell -c "irm bun.sh/install.ps1 | iex" # macOS / Linux curl -fsSL https://bun.sh/install | bashGoogle Chrome or Chromium: installed on the host system.
One-Command Execution (bunx)
Run the server directly without cloning or manual builds:
bunx linkedin-mcp-server-tsLocal Clone & Development Setup
# Clone the repository
git clone https://github.com/joaovjo/linkedin-mcp-server-ts.git
cd linkedin-mcp-server-ts
# Install dependencies
bun install
# Start in stdio mode (default for MCP clients)
bun run start
# Start in HTTP mode (for web MCP debugging)
bun run devMCP Client Configuration
1. Claude Desktop
Add to claude_desktop_config.json:
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"]
}
}
}When running from a local checkout:
{
"mcpServers": {
"linkedin": {
"command": "bun",
"args": ["run", "src/index.ts"],
"cwd": "D:/linkedin/linkedin-mcp-server-ts"
}
}
}2. Cursor
Add to your project's .cursor/mcp.json or Global Settings:
{
"mcpServers": {
"linkedin": {
"command": "bunx",
"args": ["linkedin-mcp-server-ts"]
}
}
}3. OpenCode
Add to opencode.json (or ~/.config/opencode/opencode.json):
{
"mcp": {
"linkedin": {
"type": "stdio",
"command": "bunx",
"args": ["linkedin-mcp-server-ts"]
}
}
}4. Antigravity / Windsurf / VS Code (Cline / Roo Code)
Add to mcp_config.json:
{
"mcpServers": {
"linkedin": {
"command": "bunx",
"args": ["linkedin-mcp-server-ts"],
"disabled": false,
"autoApprove": []
}
}
}5. Streamable HTTP Mode
Expose the server over HTTP for remote agents or container setups:
bun run src/index.ts --transport streamable-http --host 127.0.0.1 --port 8000MCP Route:
http://127.0.0.1:8000/mcpHealthcheck:
http://127.0.0.1:8000/health
Authentication & Session Management
The server uses a persistent browser profile at ~/.linkedin-mcp/profile to preserve cookies between runs.
Option A: Auto-Import from Local Browser (Fastest)
If you are already logged in to LinkedIn on Chrome, Brave, Edge, Arc, or Vivaldi, import the cookies directly:
# Auto-detect the most recent browser session
bunx linkedin-mcp-server-ts --import-from-browser
# Target a specific 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: Interactive Visual Login
Open an interactive browser window to log in:
bunx linkedin-mcp-server-ts --login
# Or from local source:
bun run loginChrome opens the LinkedIn login page.
Complete login (including 2FA or security challenges if prompted).
Once the feed loads, the server saves the session cookies and exits.
Check Session Status
bunx linkedin-mcp-server-ts --status
# Or from local source:
bun run statusLogout & Clear Session
bunx linkedin-mcp-server-ts --logout
# Or from local source:
bun run logoutConfiguration & Environment Variables
Configure settings via CLI flags or a .env file in the workspace root:
Variable | CLI Flag | Default | Description |
|
|
| Path to persistent browser profile directory |
|
|
| Run browser in headless mode |
|
|
| Transport protocol: |
|
|
| HTTP bind host |
|
|
| HTTP port |
|
|
| HTTP endpoint path |
|
|
| DOM navigation/interaction timeout (ms) |
|
|
| Per-tool MCP execution timeout (seconds) |
|
|
| Maximum wait time during |
|
|
| Wait time for inline authentication fallback (seconds) |
|
|
| Automatically import cookies if no profile exists |
|
|
| Path to Chrome/Chromium executable binary |
|
|
| Custom User-Agent string override |
|
|
| Browser viewport dimensions ( |
|
|
| Chrome remote debugging port used during |
|
|
| Logging level ( |
Development, Testing & Code Quality
Running Tests
Execute the full suite of unit, integration, and contract tests:
# Run all tests in parallel
bun test --parallel
# Run specific test suites
bun run test:unit
bun run test:integration
bun run test:e2e
bun run test:coverageLinting & Formatting
Code formatting and style rules follow Biome and the repository's TypeScript Style Guide:
# Check for lint issues and style violations
bun run lint
# Automatically apply safe fixes
bun run lint:fix
# Format files
bun run formatGenerating Documentation
Generate and preview the TypeDoc API documentation:
# Build static documentation to ./docs
bun run docs
# Serve documentation locally
bun run docs:serveProject Structure
linkedin-mcp-server-ts/
├── src/
│ ├── index.ts # CLI entrypoint & transport routing (stdio / HTTP)
│ ├── config.ts # CLI arguments & environment configuration
│ ├── browser/
│ │ ├── auth.ts # Login, logout, status, and browser cookie importer
│ │ ├── cdp.ts # Direct Chrome DevTools Protocol communication
│ │ ├── 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 & error hierarchy
│ ├── mcp/
│ │ └── create-server.ts # MCP server registration & tool mounting
│ ├── middleware/ # Serialization queue for concurrent requests
│ ├── scraping/ # DOM extraction, text cleanup, link classifiers & URNs
│ ├── session/ # Cookie storage, profile directory, and persistence
│ ├── tools/ # 19 MCP tool implementations
│ └── utils/ # General text and DOM helpers
├── tests/ # Unit, integration, and E2E test suites
├── .agents/ # Coding standards, style rules, and agent skills
├── bunfig.toml # Bun configuration & package registry settings
└── package.json # Package metadata, dependencies, and scriptsPublishing
Publishing to npm is handled directly with Bun:
# Verify linting and tests pass
bun run lint
bun test --parallel
# Publish package
bun publishContributing
Contributions and pull requests are welcome.
Fork the repository:
https://github.com/joaovjo/linkedin-mcp-server-tsCreate a feature branch following the Conventional Branch spec:
git checkout -b feature/your-feature-nameCommit your changes following Conventional Commits:
git commit -m 'feat: add specific feature'Ensure all tests and lint checks pass:
bun test --parallel && bun run lintPush to your branch:
git push origin feature/your-feature-nameOpen a Pull Request.
License & Credits
License: Distributed under the MIT License.
Credits: Based on the architecture and scraper logic of
stickerdaniel/linkedin-mcp-serverby Daniel Sticker and contributors.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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.
- LinkMCPOAuthio.linkmcp
Hosted MCP server for LinkedIn: 31 tools for profiles, search, messaging, posts, enrichment.
LinkedIn outreach MCP server — 19 tools for AI agents to prospect, sequence, and manage contacts.
Marketo MCP server for AI. 130 tools to operate Marketo from Claude, Cursor, or ChatGPT.
Related MCP Servers
- AlicenseAqualityDmaintenanceFully featured MCP server that provides automation tools for LinkedIn, supporting browser-based scraping and API-based operations for content management, media uploads, and reactions.63MIT
- AlicenseAqualityDmaintenanceHigh-performance autonomous MCP server that turns LinkedIn into an API for AI workflows, enabling profile management, job search, content posting, and document generation.141MIT
- AlicenseAqualityAmaintenanceSelf-hosted, ban-safe MCP server for LinkedIn that provides 22 tools for profiles, search, jobs, posts, connections, and messages. Integrates with any MCP-compatible client like Claude Desktop.581MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for programmable LinkedIn automation via Playwright, offering 20 tools for profile management, messaging, feed interaction, and job searching through real browser automation.29MIT
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