Source: github.com/stickerdaniel/linkedin-mcp-server
License: Apache 2.0
Stars: 1.9k
An MCP server that lets Claude and any MCP-compatible AI assistant read and interact with LinkedIn data through your own logged-in browser session. No scraped APIs. No third-party credentials. Your browser, your session, your data.
Four install methods: uvx (recommended), Claude Desktop MCP Bundle, Docker, or local development clone.
What this is
The MCP server controls a real Chromium browser logged into your LinkedIn account. When Claude calls a tool, the browser navigates LinkedIn, reads the page, and returns the data to Claude in structured form.
It does not use undocumented APIs. It does not bypass authentication. It browses LinkedIn exactly the way you would, just without you having to do it.
LinkedIn TOS prohibit automated tools. With normal usage (not bulk scraping), no users have been banned for using this MCP. Rate limits are built in: tool calls are serialised so concurrent requests queue rather than run in parallel.
The 4 install methods
Method 1: uvx (recommended for most users)
Prerequisite: install uv
Add to your Claude Desktop MCP config:
{
"mcpServers": {
"linkedin": {
"command": "uvx",
"args": ["linkedin-scraper-mcp@latest"],
"env": {
"UV_HTTP_TIMEOUT": "300"
}
}
}
}
The @latest tag auto-updates on each client launch. The server prepares the Patchright Chromium browser cache in the background. On first tool call requiring auth, it opens a LinkedIn login window.
Method 2: Claude Desktop MCP Bundle (one-click install)
- Download the .mcpb file from: github.com/stickerdaniel/linkedin-mcp-server/releases/latest
- Click the downloaded file to install in Claude Desktop
- MCP Bundles do not auto-update. Download and install the latest .mcpb for each new release.
Method 3: Docker
# Step 1: Create browser profile on host (one-time setup)
uvx linkedin-scraper-mcp@latest --login
# Step 2: Add to Claude Desktop MCP config
{
"mcpServers": {
"linkedin": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "~/.linkedin-mcp:/home/pwuser/.linkedin-mcp",
"stickerdaniel/linkedin-mcp-server:latest"
]
}
}
}
Docker creates a fresh session on each startup. Run --login again if you encounter auth issues.
Method 4: Local clone (for development)
git clone https://github.com/stickerdaniel/linkedin-mcp-server
cd linkedin-mcp-server
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
uv run -m linkedin_mcp_server --login
uv run -m linkedin_mcp_server
Login and authentication
On first run, the server opens a browser window for you to log in manually. The browser profile is saved to ~/.linkedin-mcp/profile/ and persists across sessions.
If LinkedIn shows a captcha challenge:
uvx linkedin-scraper-mcp@latest --login
This opens a browser window where you can solve captchas manually (5 minute timeout for 2FA, captcha, etc.).
Rate limiting and safety
Tool calls are serialised: concurrent requests queue instead of running in parallel. This protects the shared LinkedIn browser session.
Built-in pacing:
- Delay between LinkedIn calls: 1.5 +/- 0.5 seconds default
- Delay distribution: beta (right-skewed), mathematically harder for bot detectors to fingerprint than uniform random
Tuning:
# Increase timeout if pages fail to load
--timeout 10000 # browser page operations (ms, default 5000)
--tool-timeout 300 # per-tool execution (seconds, default 180)
# Increase delay between calls
--delay-between-linkedin-calls 3000
--delay-jitter 1000