Open-source MCP server for LinkedIn. Give Claude and any MCP-compatible AI assistant access to profiles, companies, jobs, and messages.
# Add to your Claude Code skills
git clone https://github.com/stickerdaniel/linkedin-mcp-serverThrough this LinkedIn MCP server, AI assistants like Claude can connect to your LinkedIn. Access profiles and companies, search for jobs, or get job details.
https://github.com/user-attachments/assets/eb84419a-6eaf-47bd-ac52-37bc59c83680
Research the background of this candidate https://www.linkedin.com/in/stickerdaniel/
Get this company profile for partnership discussions https://www.linkedin.com/company/inframs/
No comments yet. Be the first to share your thoughts!
Suggest improvements for my CV to target this job posting https://www.linkedin.com/jobs/view/4252026496
What has Anthropic been posting about recently? https://www.linkedin.com/company/anthropicresearch/
| Tool | Description | Status |
|------|-------------|--------|
| get_person_profile | Get profile info with explicit section selection (experience, education, interests, honors, languages, certifications, contact_info, posts) | working |
| connect_with_person | Send a connection request or accept an incoming one, with optional note | #304 |
| get_sidebar_profiles | Extract profile URLs from sidebar recommendation sections ("More profiles for you", "Explore premium profiles", "People you may know") on a profile page | working |
| get_inbox | List recent conversations from the LinkedIn messaging inbox | working |
| get_conversation | Read a specific messaging conversation by username or thread ID | #307 |
| search_conversations | Search messages by keyword | working |
| send_message | Send a message to a LinkedIn user (requires confirmation) | #344 |
| get_company_profile | Extract company information with explicit section selection (posts, jobs) | working |
| get_company_posts | Get recent posts from a company's LinkedIn feed | working |
| search_jobs | Search for jobs with keywords and location filters | working |
| search_people | Search for people by keywords and location | working |
| get_job_details | Get detailed information about a specific job posting | working |
| close_session | Close browser session and clean up resources | working |
[!IMPORTANT] Breaking change: LinkedIn recently made some changes to prevent scraping. The newest version uses Patchright with persistent browser profiles instead of Playwright with session files. Old
session.jsonfiles andLINKEDIN_COOKIEenv vars are no longer supported. Run--loginagain to create a new profile + cookie file that can be mounted in docker. 02/2026
Prerequisites: Install uv.
Client Configuration
{
"mcpServers": {
"linkedin": {
"command": "uvx",
"args": ["linkedin-scraper-mcp@latest"],
"env": { "UV_HTTP_TIMEOUT": "300" }
}
}
}
The @latest tag ensures you always run the newest version — uvx checks PyPI on each client launch and updates automatically. The server starts quickly, prepares the shared Patchright Chromium browser cache in the background under ~/.linkedin-mcp/patchright-browsers, and opens a LinkedIn login browser window on the first tool call that needs authentication.
[!NOTE] Early tool calls may return a setup/authentication-in-progress error until browser setup or login finishes. If you prefer to create a session explicitly, run
uvx linkedin-scraper-mcp@latest --login.
Transport Modes:
stdioCLI Options:
--login - Open browser to log in and save persistent profile--no-headless - Show browser window (useful for debugging scraping issues)--log-level {DEBUG,INFO,WARNING,ERROR} - Set logging level (default: WARNING)--transport {stdio,streamable-http} - Optional: force transport mode (default: stdio)--host HOST - HTTP server host (default: 127.0.0.1)--port PORT - HTTP server port (default: 8000)--path PATH - HTTP server path (default: /mcp)--logout - Clear stored LinkedIn browser profile--timeout MS - Browser timeout for page operations in milliseconds (default: 5000)--user-data-dir PATH - Path to persistent browser profile directory (default: ~/.linkedin-mcp/profile)--chrome-path PATH - Path to Chrome/Chromium executable (for custom browser installations)Basic Usage Examples:
# Run with debug logging
uvx linkedin-scraper-mcp@latest --log-level DEBUG
HTTP Mode Example (for web-based MCP clients):
uvx linkedin-scraper-mcp@latest --transport streamable-http --host 127.0.0.1 --port 8080 --path /mcp
Runtime server logs are emitted by FastMCP/Uvicorn.
Tool calls are serialized within a single server process to protect the shared
LinkedIn browser session. Concurrent client requests queue instead of running in
parallel. Use --log-level DEBUG to see scraper lock wait/acquire/release logs.
Test with mcp inspector:
bunx @modelcontextprotocol/inspectorStreamable HTTP as Transport TypeURL to http://localhost:8080/mcpInstallation issues:
curl -LsSf https://astral.sh/uv/install.sh | shuv --version (should be 0.4.0 or higher)uvx downloads all Python dependencies. On slow connections, uv's default 30s HTTP timeout may be too short. The recommended config above already sets UV_HTTP_TIMEOUT=300 (seconds) to avoid this.Session issues:
~/.linkedin-mcp/profile/~/.linkedin-mcp/patchright-browsers/Login issues:
--loginuvx linkedin-scraper-mcp@latest --login which opens a browser where you can solve it manually.Timeout issues:
--timeout 10000TIMEOUT=10000Custom Chrome path:
--chrome-path /path/to/chromeCHROME_PATH=/path/to/chromePrerequisites: Claude Desktop.
One-click installation for Claude Desktop users:
.mcpb artifact from releases.mcpb file to install it into Claude DesktopOn startup, the MCP Bundle starts preparing the shared Patchright Chromium browser cache in the background. If you call a tool too early, Claude will surface a setup-in-progress error. On the first tool call