LinkedIn MCP Server
Through this LinkedIn MCP server, AI assistants like Claude can connect to your LinkedIn. Give access to profiles and companies, get your recommended jobs, or search for keywords. All from a Docker container on your machine.
Installation Methods
https://github.com/user-attachments/assets/eb84419a-6eaf-47bd-ac52-37bc59c83680
Usage Examples
Features & Tool Status
Profile Scraping (
get_person_profile
): Get detailed information from a LinkedIn profile including work history, education, skills, and connectionsCompany Analysis (
get_company_profile
): Extract comprehensive company information from a LinkedIn company profile nameJob Details (
get_job_details
): Retrieve specific job posting details using LinkedIn job IDsJob Search (
search_jobs
): Search for jobs with filters like keywords and locationRecommended Jobs (
get_recommended_jobs
): Get personalized job recommendations based on your profileSession Management (
close_session
): Properly close browser session and clean up resources
July 2025: All tools are currently functional and actively maintained. If you encounter any issues, please report them in theGitHub issues.
🐳 Docker Setup (Recommended - Universal)
Prerequisites: Make sure you have Docker installed and running.
Installation
Client Configuration:
Getting the LinkedIn Cookie
Open LinkedIn and login
Open Chrome DevTools (F12 or right-click → Inspect)
Go to Application > Storage > Cookies > https://www.linkedin.com
Find the cookie named
li_at
Copy the Value field (this is your LinkedIn session cookie)
Use this value as your
LINKEDIN_COOKIE
in the configuration
Run the server with the
Copy the cookie from the output and set it as LINKEDIN_COOKIE
in your client configuration. If this fails with a captcha challenge, use the method above.
The cookie will expire during the next 30 days. Just get the new cookie and update your client config. There are also many cookie manager extensions that you can use to quickly copy the cookie.
Docker Setup Help
Transport Modes:
Default (stdio): Standard communication for local MCP servers
Streamable HTTP: For a web-based MCP server
CLI Options:
--log-level {DEBUG,INFO,WARNING,ERROR}
- Set logging level (default: WARNING)--no-lazy-init
- Login to LinkedIn immediately instead of waiting for the first tool call--transport {stdio,streamable-http}
- Set transport mode--host HOST
- HTTP server host (default: 127.0.0.1)--port PORT
- HTTP server port (default: 8000)--path PATH
- HTTP server path (default: /mcp)--get-cookie
- Attempt to login with email and password and extract the LinkedIn cookie--cookie {cookie}
- Pass a specific LinkedIn cookie for login--user-agent {user_agent}
- Specify custom user agent string to prevent anti-scraping detection
HTTP Mode Example (for web-based MCP clients):
Test with mcp inspector:
Install and run mcp inspector
bunx @modelcontextprotocol/inspector
Click pre-filled token url to open the inspector in your browser
Select
Streamable HTTP
asTransport Type
Set
URL
tohttp://localhost:8080/mcp
Connect
Test tools
Docker issues:
Make sure Docker is installed
Check if Docker is running:
docker ps
Login issues:
Ensure your LinkedIn cookie is set and correct
Make sure you have only one active LinkedIn session per cookie at a time. Trying to open multiple sessions with the same cookie will result in a cookie invalid error.
LinkedIn may require a login confirmation in the LinkedIn mobile app for --get-cookie
You might get a captcha challenge if you logged in a lot of times in a short period of time, then try again later or follow the local setup instructions to run the server manually in --no-headless mode where you can debug the login process (solve captcha manually)
📦 Claude Desktop (DXT Extension)
Prerequisites: Claude Desktop and Docker installed
One-click installation for Claude Desktop users:
Download the DXT extension
Double-click to install into Claude Desktop
Set your LinkedIn cookie in the extension settings
Getting the LinkedIn Cookie
Open LinkedIn and login
Open Chrome DevTools (F12 or right-click → Inspect)
Go to Application > Storage > Cookies > https://www.linkedin.com
Find the cookie named
li_at
Copy the Value field (this is your LinkedIn session cookie)
Use this value as your
LINKEDIN_COOKIE
in the configuration
Run the server with the
Copy the cookie from the output and set it as LINKEDIN_COOKIE
in your client configuration. If this fails with a captcha challenge, use the method above.
The cookie will expire during the next 30 days. Just get the new cookie and update your client config. There are also many cookie manager extensions that you can use to quickly copy the cookie.
DXT Extension Setup Help
Docker issues:
Make sure Docker is installed
Check if Docker is running:
docker ps
Login issues:
Ensure your LinkedIn cookie is set and correct
Make sure you have only one active LinkedIn session per cookie at a time. Trying to open multiple sessions with the same cookie will result in a cookie invalid error.
LinkedIn may require a login confirmation in the LinkedIn mobile app for --get-cookie
You might get a captcha challenge if you logged in a lot of times in a short period of time, then try again later or follow the local setup instructions to run the server manually in --no-headless mode where you can debug the login process (solve captcha manually)
🚀 uvx Setup (Quick Install - Universal)
Prerequisites: Make sure you have uv installed.
Installation
Run directly from GitHub without cloning:
Getting the LinkedIn Cookie
Open LinkedIn and login
Open Chrome DevTools (F12 or right-click → Inspect)
Go to Application > Storage > Cookies > https://www.linkedin.com
Find the cookie named
li_at
Copy the Value field (this is your LinkedIn session cookie)
Use this value as your
LINKEDIN_COOKIE
in the configuration
Run the server with the
Copy the cookie from the output and set it as LINKEDIN_COOKIE
in your client configuration. If this fails with a captcha challenge, use the method above.
The cookie will expire during the next 30 days. Just get the new cookie and update your client config. There are also many cookie manager extensions that you can use to quickly copy the cookie.
uvx Setup Help
Client Configuration:
Transport Modes:
Default (stdio): Standard communication for local MCP servers
Streamable HTTP: For web-based MCP server
CLI Options:
--log-level {DEBUG,INFO,WARNING,ERROR}
- Set logging level (default: WARNING)--no-lazy-init
- Login to LinkedIn immediately instead of waiting for the first tool call--transport {stdio,streamable-http}
- Set transport mode--host HOST
- HTTP server host (default: 127.0.0.1)--port PORT
- HTTP server port (default: 8000)--path PATH
- HTTP server path (default: /mcp)--get-cookie
- Attempt to login with email and password and extract the LinkedIn cookie--cookie {cookie}
- Pass a specific LinkedIn cookie for login--user-agent {user_agent}
- Specify custom user agent string to prevent anti-scraping detection
Basic Usage Examples:
HTTP Mode Example (for web-based MCP clients):
Test with mcp inspector:
Install and run mcp inspector
bunx @modelcontextprotocol/inspector
Click pre-filled token url to open the inspector in your browser
Select
Streamable HTTP
asTransport Type
Set
URL
tohttp://localhost:8080/mcp
Connect
Test tools
Installation issues:
Ensure you have uv installed:
curl -LsSf https://astral.sh/uv/install.sh | sh
Check uv version:
uv --version
(should be 0.4.0 or higher)
Cookie issues:
Ensure your LinkedIn cookie is set and correct
Cookie can be passed via
--cookie
flag orLINKEDIN_COOKIE
environment variableMake sure you have only one active LinkedIn session per cookie at a time
Login issues:
LinkedIn may require a login confirmation in the LinkedIn mobile app for --get-cookie
You might get a captcha challenge if you logged in a lot of times in a short period
🐍 Local Setup (Develop & Contribute)
Prerequisites: Chrome browser and Git installed
ChromeDriver Setup:
Check Chrome version: Chrome → menu (⋮) → Help → About Google Chrome
Download matching ChromeDriver: Chrome for Testing
Make it accessible:
Place ChromeDriver in PATH (
/usr/local/bin
on macOS/Linux)Or set:
export CHROMEDRIVER_PATH=/path/to/chromedriver
if no CHROMEDRIVER_PATH is set, the server will try to find it automatically by checking common locations
Installation
Local Setup Help
CLI Options:
--no-headless
- Show browser window (debugging)--log-level {DEBUG,INFO,WARNING,ERROR}
- Set logging level (default: WARNING)--no-lazy-init
- Login to LinkedIn immediately instead of waiting for the first tool call--get-cookie
- Login with email and password and extract the LinkedIn cookie--clear-keychain
- Clear all stored LinkedIn credentials and cookies from system keychain--cookie {cookie}
- Pass a specific LinkedIn cookie for login--user-agent {user_agent}
- Specify custom user agent string to prevent anti-scraping detection--transport {stdio,streamable-http}
- Set transport mode--host HOST
- HTTP server host (default: 127.0.0.1)--port PORT
- HTTP server port (default: 8000)--path PATH
- HTTP server path (default: /mcp)--help
- Show help
HTTP Mode Example (for web-based MCP clients):
Claude Desktop:
Login/Scraping issues:
Use
--no-headless
to see browser actions (captcha challenge, LinkedIn mobile app 2fa, ...)Add
--no-lazy-init
to attempt to login to LinkedIn immediately instead of waiting for the first tool callAdd
--log-level DEBUG
to see more detailed loggingMake sure you have only one active LinkedIn session per cookie at a time. Trying to open multiple sessions with the same cookie will result in a cookie invalid error. E.g. if you have a logged in browser session with a docker container, you can't use the same cookie to login with the local setup while the docker container is running / session is not closed.
ChromeDriver issues:
Ensure Chrome and ChromeDriver versions match
Check ChromeDriver is in PATH or set
CHROMEDRIVER_PATH
in your env
Python issues:
Check Python version:
uv python --version
(should be 3.12+)Reinstall dependencies:
uv sync --reinstall
Feel free to open an issue or PR!
Acknowledgements
Built with LinkedIn Scraper by @joeyism and FastMCP.
⚠️ Use in accordance with LinkedIn's Terms of Service. Web scraping may violate LinkedIn's terms. This tool is for personal use only.
Star History
License
This project is licensed under the Apache 2.0 license.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Dynamic tools to automate tasks on LinkedIn website.