MCP Directory

LinkedIn MCP Server

Lets agents read LinkedIn profiles, companies, jobs and messages through your own logged-in browser session.

Unverified
stdio (local)
No auth
Python

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
uvx mcp-server-linkedin@latest

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "linkedin-mcp-server": {
      "command": "uvx",
      "args": [
        "mcp-server-linkedin@latest"
      ],
      "env": {
        "UV_HTTP_TIMEOUT": "300"
      }
    }
  }
}

Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.

Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf

Before you start

  • uv installed (provides uvx): `curl -LsSf https://astral.sh/uv/install.sh | sh`
  • A LinkedIn account you're willing to use with automation (ToS risk is on you)
  • First run downloads the Patchright Chromium browser cache automatically; Docker users must create a login profile on the host first

About LinkedIn MCP Server

Instead of wrapping an API, this server scrapes LinkedIn through a genuine browser session. On first use it prepares a shared Patchright Chromium cache (~/.linkedin-mcp/patchright-browsers) in the background, then opens a login window on the first tool call that needs auth. If you're already signed in to LinkedIn in Chrome, Brave, Edge, Arc or another Chromium browser, uvx mcp-server-linkedin@latest --import-from-browser reuses those cookies and skips manual login entirely.

The 17 tools cover more ground than most LinkedIn scrapers: section-selectable person profiles (experience, education, skills, posts, contact info), your own profile, company profiles with posts and jobs, employee lists, people search with connection-degree and current-company filters, job search and job details, your home feed, and a full messaging suite — inbox, per-conversation reads, keyword search, and send_message (which requires confirmation). A couple of write actions like connect_with_person have known open issues tracked in the README.

Operationally there are two details worth knowing. First, the maintainer explicitly tells you to keep the @latest tag: LinkedIn changes its page structure often, fixes ship frequently, and a pinned version silently rots into empty results. Second, tool calls serialize through a lock to protect the single browser session, so concurrent agent requests queue rather than run in parallel — heavy multi-section scrapes can need a higher --tool-timeout.

The trade-off is unambiguous: this is against LinkedIn's User Agreement, and the README's own FAQ says accounts using automation can be restricted or banned with no guarantee of safety. Docker is supported for headless environments, but you must create the login profile on the host first with --login and mount ~/.linkedin-mcp in. Apache 2.0, sponsored by Unipile (which sells the managed-API alternative).

Tools & capabilities (17)

get_person_profile

Get a person's profile with explicit section selection (experience, education, skills, posts, contact info and more)

get_my_profile

Get the authenticated user's own LinkedIn profile

connect_with_person

Send or accept a connection request, with optional note (known open issues)

get_sidebar_profiles

Extract profile URLs from sidebar recommendation sections on a profile page

get_inbox

List recent conversations from the LinkedIn messaging inbox

get_conversation

Read a specific messaging conversation by username or thread ID

search_conversations

Search messages by keyword

send_message

Send a message to a LinkedIn user (requires confirmation)

get_company_profile

Extract company information with section selection (posts, jobs)

get_company_posts

Get recent posts from a company's feed

search_companies

Search for companies by keywords

get_company_employees

List employees at a company with optional keyword filter

search_jobs

Search for jobs with keyword and location filters

search_people

Search people by keywords, location, connection degree and current company

get_job_details

Get detailed information about a specific job posting

get_feed

Get recent posts from the authenticated user's home feed

close_session

Close the browser session and clean up resources

What this server can do

LinkedIn MCP Server provides tools for these capabilities — tap one to see every MCP server that does the same:

When to use it

  • Research a candidate or prospect: pull profile sections, recent posts and shared connections before a call
  • Job hunting: search postings by keyword and location, then fetch full job details for matching roles
  • Company intel: employee lists, recent company posts and people search filtered by current company
  • Messaging triage: summarize your inbox and draft replies (send requires explicit confirmation)

Quick setup

  1. 1Install uv: `curl -LsSf https://astral.sh/uv/install.sh | sh`
  2. 2Add the uvx config block (command `uvx`, args `mcp-server-linkedin@latest`, env `UV_HTTP_TIMEOUT=300`) to your MCP client config
  3. 3Restart the client; the first auth-requiring tool call opens a LinkedIn login window — or pre-auth with `uvx mcp-server-linkedin@latest --login`
  4. 4Already logged in elsewhere? Run `uvx mcp-server-linkedin@latest --import-from-browser` to reuse your Chrome/Brave/Edge session
  5. 5Claude Desktop users can alternatively install the one-click .mcpb bundle from the GitHub releases page

Security notes

Drives a real logged-in browser session stored under ~/.linkedin-mcp/ — treat that profile directory like a credential. Automated access violates LinkedIn's User Agreement and accounts can be restricted or banned; the README says this explicitly and recommends sparing, personal use. No API keys are stored in your MCP config.

LinkedIn MCP Server FAQ

Is linkedin-mcp-server safe — will I get banned?

There is real risk: LinkedIn's User Agreement prohibits automated access, and the README states accounts using automation can be restricted or banned, with no safety guarantee. It mitigates detection by driving a real browser session (Patchright) rather than hitting private APIs, but use it sparingly and on an account you accept risk for.

Does it need a LinkedIn API key?

No. It works through your own logged-in browser session — you sign in once in a real browser window (or import cookies from Chrome/Brave/Edge/Arc), and the session persists under ~/.linkedin-mcp/. That's also why there are no env credentials in the config.

Why does the config use @latest instead of a pinned version?

Because LinkedIn changes its page structure frequently and scraper fixes ship in frequent releases. The maintainer explicitly warns that pinning a version makes the server quietly rot and return empty or wrong data; uvx re-resolves @latest from PyPI on each client launch.

Alternatives to LinkedIn MCP Server

Compare all alternatives →

Connect your personal WhatsApp: search, read and send messages and media locally

Verified
stdio (local)
No auth
Python
12 tools
Updated 1 month agoRepo

Powerful Slack MCP with stdio/SSE/HTTP, DMs, group DMs and no-admin token auth

Verified
stdio (local)
API key
Go
12 tools
Updated 1 month agoRepo

Full Telegram user-account MCP via MTProto: read chats, manage groups, send messages

Verified
stdio (local)
API key
Python
11 tools
Updated 24 days agoRepo