A Model Context Protocol (MCP) server that enables interaction with LinkedIn through Claude and other AI assistants. This server allows you to scrape LinkedIn profiles, companies, jobs, and perform job searches.
Example.Use.mp4
- Profile Scraping (
get_person_profile
): Get detailed information from LinkedIn profiles including work history, education, skills, and connections - Company Analysis (
get_company_profile
): Extract company information with comprehensive details - Job Details (
get_job_details
): Retrieve specific job posting details using direct LinkedIn job URLs - Session Management (
close_session
): Properly close browser sessions and clean up resources
- Job Search (
search_jobs
): Currently experiencing ChromeDriver compatibility issues with LinkedIn's search interface - Recommended Jobs (
get_recommended_jobs
): Has Selenium method compatibility issues due to outdated scraping methods - Company Profiles: Some companies may have restricted access or may return empty results (need further investigation)
Get Daniel's profile https://www.linkedin.com/in/stickerdaniel/
Analyze this company https://www.linkedin.com/company/docker/
Get details about this job posting https://www.linkedin.com/jobs/view/123456789
Choose your preferred installation method:
Prerequisites: Make sure you have Docker installed and running.
Zero setup required - just add the mcp server to your client config and replace email and password with your linkedin credentials.
Claude Desktop:
{
"mcpServers": {
"linkedin": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "LINKEDIN_EMAIL",
"-e", "LINKEDIN_PASSWORD",
"stickerdaniel/linkedin-mcp-server"
],
"env": {
"LINKEDIN_EMAIL": "your.email@example.com",
"LINKEDIN_PASSWORD": "your_password"
}
}
}
}
🐳 Manual Docker Usage
docker run -i --rm \
-e LINKEDIN_EMAIL="your.email@example.com" \
-e LINKEDIN_PASSWORD="your_password" \
stickerdaniel/linkedin-mcp-server
🚨 Troubleshooting
Container won't start:
# Check Docker is running
docker ps
# Pull latest image
docker pull stickerdaniel/linkedin-mcp-server
Login issues:
- Verify credentials are correct
- Check for typos in email/password
- Check if you need to confirm the login in the mobile app
Prerequisites: Claude Desktop installed
One-click installation for Claude Desktop users:
- Download the DXT extension
- Double-click to install into Claude Desktop
- Configure your LinkedIn credentials when prompted
- Start using LinkedIn tools immediately
The extension automatically handles Docker setup and credential management.
For contributors who want to modify and debug the code.
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
- Place ChromeDriver in PATH (
# 1. Clone repository
git clone https://github.com/stickerdaniel/linkedin-mcp-server
cd linkedin-mcp-server
# 2. Install UV package manager
curl -LsSf https://astral.sh/uv/install.sh | sh
uv python # install python if you don't have it
# 3. Install dependencies and dev dependencies
uv sync
uv sync --group dev
# 4. Install pre-commit hooks
uv run pre-commit install
# 5. Start the server once manually
# (you will be prompted to enter your LinkedIn credentials, and they are securely stored in your OS keychain)
uv run main.py --no-headless --no-lazy-init
🔧 Configuration
CLI Options:
--no-headless
- Show browser window (debugging)--debug
- Enable detailed logging--no-setup
- Skip credential prompts (make sure to setLINKEDIN_EMAIL
andLINKEDIN_PASSWORD
in env)--no-lazy-init
- Login to LinkedIn immediately instead of waiting for the first tool call
Claude Desktop:
{
"mcpServers": {
"linkedin": {
"command": "uv",
"args": ["--directory", "/path/to/linkedin-mcp-server", "run", "main.py", "--no-setup"]
}
}
}
🚨 Troubleshooting
Scraping issues:
- Use
--no-headless
to see browser actions - Add
--debug
to see more detailed logging
ChromeDriver issues:
- Ensure Chrome and ChromeDriver versions match
- Check ChromeDriver is in PATH or set
CHROMEDRIVER_PATH
Python issues:
# Check Python version
python --version # Should be 3.12+
# Reinstall dependencies
uv sync --reinstall
Feel free to open an issue or PR!
MIT License
Built with LinkedIn Scraper by @joeyism and Model Context Protocol.