Skip to main content
Profile and company data — read 20 September 2026

stickerdaniel/linkedin-mcp-server

Profiles, companies, jobs, the feed, post search and your own inbox, read through a browser you sign into on your own account. Two tools write — a message and a connection request — and only the message tool takes a confirmation flag. Your own LinkedIn account, through a browser the server drives. No API key and no LinkedIn API.

Browser sessionHigh account riskActive
Last read
✓ Read from the repository, not from a directory listing✓ Write actions separated from read actions✓ Status derived from the last code change, not the maintainer's word✓ Every source URL published below
19 tools registered
2 write to LinkedIn
3551 GitHub stars, 20 September 2026
5 clients documented
Where it fits

What it is built for, and the jobs it cannot do

The second card is the one a repository README never contains. Both are written from the project's own documentation and source, read on 20 September 2026.

Use it for

One person, on their own account, wiring an MCP client to read LinkedIn: profiles, companies and their employees, job postings, the home feed, global post search, and their own inbox — plus the occasional message or connection request, gated behind a confirmation.

Do not use it for

Bulk lead scraping, Sales Navigator or Recruiter workflows, publishing posts, comments or reactions (no such tools exist), multi-seat or agency use, or any situation where losing the account matters. It is not a LinkedIn API client, and LinkedIn's User Agreement prohibits what it does.

Publisher
Daniel Sticker — independent community project, not affiliated with LinkedIn or Microsoft — not affiliated with LinkedIn or Microsoft.
Licence
Apache-2.0open source
Version
4.24.4
Runs
Self-hosted
Transport
stdio and Streamable HTTP
Last read

Hosting and transport are as the project documents them: Runs on your own machine over stdio, or as a local HTTP server. No vendor-hosted option.

Authentication — the thing that decides everything else

Your own LinkedIn account, through a browser the server drives. No API key and no LinkedIn API.

A real browser signed in to your LinkedIn account, driven by the server — on your machine, or on a vendor’s.

What this route cannot do, however well the server is written

It can reach everything you can, which is the point and the problem. Section 8.2 of the User Agreement bars bots and scraping by any means, and enforcement lands on the account rather than on the software.

High account risk

The server writes to LinkedIn as you, over a route LinkedIn does not sanction. Automated messages and connection requests under a member’s own name are what the enforcement is built to catch, and the account is what it acts on.

What it does with the credential

You supply your own LinkedIn login in one of two ways: a login flag opens a browser window where you sign in, including any two-factor step or checkpoint; or an import flag reuses the session of a Chromium-family browser you are already signed into. The documentation lists twelve supported browsers and names one that is not supported. The resulting browser profile persists in a dotfolder in your home directory, with the managed Chromium download cached alongside it. A logout flag clears the stored session and a status flag checks whether it is still valid.

Account risk is derived from the authentication class and from whether the server writes to LinkedIn — not judged per project. The 5 classes and the rule that maps them are on the LinkedIn MCP server directory; the ceilings LinkedIn enforces on any account, automated or not, are on LinkedIn limits. What this particular server exposes, and what it does with your credentials, is below.

Exposed tools

2 of its 2 write actions land on LinkedIn under your own account

These are the tool names the server registers, as a client sees them. An assistant can call any tool the server exposes once it is connected, so the list below is the whole surface, not a feature summary.

  • get_person_profile
  • get_my_profile
  • get_sidebar_profiles
  • search_people
  • get_company_profile
  • get_company_posts
  • search_companies
  • get_company_employees
  • get_job_details
  • search_jobs
  • get_saved_jobs
  • get_feed
  • search_posts
  • get_inbox
  • get_conversation
  • search_conversations
  • send_message
  • connect_with_person
  • close_session

All 19 tools it registers are named above.

What it can read

6 read actions, written as what they return rather than as the tool signature.

  • Read a person profile, your own profile, and the profiles LinkedIn shows in the sidebar next to one.
  • People search with keyword, location, connection-degree and current-company filters.
  • Company profile, company posts, company search and a company's employees.
  • Job search, job details, and your own saved jobs.
  • Your home feed, and a global search over posts.
  • Your inbox, one conversation, and a search across conversations.

What it can write, and where the write lands

2 of the 2 write actions land on LinkedIn itself. Those are the rows that carry the account risk: an automated message, invitation, post or campaign change is activity under your own name, and Section 8.2 of the User Agreement bars sending it by automated means. Section 8.2 of the User Agreement ↗

ActionWhere it landsWhat it does
send_messageYour LinkedIn accountComposes and sends a message under your name. It is a write only when an explicit confirm flag is set; the tool description carries a caveat pointing at an open issue.
connect_with_personYour LinkedIn accountSends a connection request, or accepts an incoming one, with an optional note.

Read the middle column before the third. A write that lands off LinkedIn — a vendor workspace, a CRM, a local file — is undone by deleting a row. A write that lands on LinkedIn has already been seen by another member.

Setup — moderate

Installing it, in the project's own commands

Every command and every configuration block below is the project's own, copied unchanged on 20 September 2026. Where a project publishes no config block, this page says so rather than composing one — a snippet written here would be a snippet the maintainer never tested.

uvx, the recommended path

Shell
uvx mcp-server-linkedin@latest

# first-time sign-in
uvx mcp-server-linkedin@latest --login

Docker

Shell
docker run -it --rm -v ~/.linkedin-mcp:/home/pwuser/.linkedin-mcp stickerdaniel/linkedin-mcp-server:latest

The host volume is not optional: without it the session is lost on every run. Adding the login viewer flags exposes the login browser on a token-protected port — do not expose that port publicly.

From source

Shell
git clone https://github.com/stickerdaniel/linkedin-mcp-server
uv sync
uv run -m linkedin_mcp_server

The configuration block

Client config keys are not interchangeable, and a block pasted under the key a different client expects fails silently rather than erroring. That is why the blocks below are the project's own, in the clients it names, rather than one block normalised here.

uvx, the recommended path

JSON
{
  "mcpServers": {
    "mcp-server-linkedin": {
      "command": "uvx",
      "args": ["mcp-server-linkedin@latest"],
      "env": { "UV_HTTP_TIMEOUT": "300" }
    }
  }
}
What it needs before it will start

Python between 3.12.4 and 3.15, plus uv, or Docker, or a local clone. A Chromium browser: the stealth-Playwright dependency manages and downloads one into a dotfolder unless you point the Chrome-path argument at your own. Headless by default. No paid API key, no hosted account, no database. A real LinkedIn account is the hard requirement.

Clients the project documents

Claude Desktop (a one-click .mcpb bundle from the releases page); Claude Code; Codex (through a plugin marketplace entry); Any MCP-compatible client over stdio; Any MCP client over streamable-http. Where the file goes in each Claude surface.

How it talks to the client

stdio by default; streamable-http with a flag, binding to 127.0.0.1 on port 8000 unless the host argument is changed.

Where the process runs

Runs on your own machine over stdio, or as a local HTTP server. No vendor-hosted option.

What it costs to run

The vendor's own figures, quoted rather than computed

Free. Apache-2.0 open source, no paid tier, no API key to buy. The only cost is a LinkedIn account you are willing to automate.

Sales Navigator — Not supported

No registered tool targets Sales Navigator. People search drives the standard LinkedIn people search.

Recruiter — Not supported

The job tools are candidate-side: job search, job details and your own saved jobs. They read public postings, not a Recruiter seat.

None of the figures above are LinkedIn's. They are third-party prices in the currency and the tiering each project publishes, read on 20 September 2026 and quoted rather than converted.

Repository signals, read 20 September 2026

The code has moved recently

The last code change landed on the day these figures were read. Code changed within 90 days of the day this directory was checked.

How far the project has got

Mature and actively maintained for a community project. Created April 2025, at version 4.24.4, with commits on every one of the six days to the observation date.

How this status was decided

Active means code changed within 90 days of the observation date; stale means up to 365 days. It is measured from the last change to code, not to the README, and never from the maintainer's own adjective. Anything past a year is dropped from this directory rather than published as dormant.

Stars
3551 — The repository page rounds it to 3.6k. 617 forks.
Last commit
— Commits on every one of the six days to the observation date.
Open issues
94 — Plus 92 open pull requests. The API reports 186, which counts both.
Status
Active
Observed

Every figure in this section was read from GitHub on , and star and issue counts move daily. The issue count is the Issues tab, not the API field of the same name — that one counts pull requests as issues and overstates every repository in this directory.

Credential handling and known problems

What to check before you point it at a real account

Both cards below are read from the repository and its own security documentation. A project saying what it does with a session is evidence of intent, not proof of behaviour.

What running it exposes

Unofficial and adverse to LinkedIn's terms by design. The README states it plainly: "LinkedIn's User Agreement prohibits automated access, and accounts using automated tools can be restricted or banned", "Use at your own risk; there is no guarantee of account safety", and "This tool is for personal use only and comes with no warranty of any kind." It also notes that "This tool controls a real browser session; it doesn't exploit undocumented APIs or bypass authentication" — the risk is account restriction, not credential theft. Two tools write to LinkedIn as you: sending a message, and sending or accepting a connection request. Everything else reads. There are no tools to publish a post, comment or react. The account risk sits entirely with those two write tools and with the volume of automated reads.

How it handles your credentials

Your live LinkedIn session is stored in a browser profile in your home directory, mounted into the container under Docker. Any MCP client wired to this server can read your entire inbox and send messages under your name, so it should only be connected to clients you trust. The send-message tool gates on an explicit confirmation flag. The Docker login-viewer flag exposes the login browser at a token-protected URL on a local port — do not expose that port publicly. Running over HTTP binds to localhost by default; changing the host argument puts an unauthenticated LinkedIn-acting server on the network.

2 things that will waste an hour

Small, checkable and specific to this project — a stale package name, a broken link, a manifest that advertises something the code removed.

  • The package installed by uvx is named mcp-server-linkedin, while the repository is linkedin-mcp-server. The two names are not interchangeable.
  • The README does not state a total tool count, and some tool descriptions carry caveats pointing at open issues.
If this is not the one

The servers that do a comparable job, and how they differ

Same rows, same sources, same observation date. The first column is this server.

stickerdaniel/linkedin-mcp-server compared with its alternatives
 stickerdaniel/linkedin-mcp-serverv4.24.4eliasbiondo/linkedin-mcp-serverv0.1.0linkedincliv0.1.6Anysite MCP Serverv3.0.0
Authenticates withBrowser sessionBrowser sessionSession cookieVendor API key
Account riskHighMediumHighLow
Writes to LinkedIn2 actionsNone17 actionsNone
Tools registered1974315
Sales Navigator toolsNoNoNoNo
Recruiter toolsNoNoNoNo
RunsSelf-hostedSelf-hostedSelf-hostedHosted by the vendor
Last code change20 September 2026 — active8 March 2026 — stale22 August 2026 — active6 August 2026 — active
LicenceApache-2.0, open sourceMIT, open sourceMIT, open sourceMIT, open client, closed service
  • Read-only LinkedIn scraping through a browser you sign into yourself: profiles section by section, company pages, job postings, people search. No write path at all, and no commits in six months.

    Medium riskStale
    stdio and Streamable HTTP7 toolsRead 20 September 2026
  • linkedincli

    Session cookie

    Profile data, the feed, messaging, connections and engagement, on a session taken from your own browser. No rate limiting, no throttle, no dry run and no confirmation step, and the maintainer forbids running it on a server.

    High riskActive
    stdio43 toolsRead 20 September 2026
  • Anysite MCP Server

    Vendor API key

    A hosted, paid server that returns structured LinkedIn data — profiles, people search, companies, posts, jobs, the Ad Library — plus a dozen other sources, with server-side filtering and export. No LinkedIn login goes anywhere near it, and it cannot write to LinkedIn at all.

    Low riskActive
    stdio and Streamable HTTP15 toolsRead 20 September 2026
Provenance

Every page this profile was read from

9 pages — the repository, its documentation and, where one exists, the vendor's own pricing page. Nothing on this profile is summarised from another directory or from a blog post about the project.

All of them read on . A repository moves faster than a price does: if a tool list or a command here no longer matches the project, the project changed and this page has not been re-read yet.

Where to next

Read the write table before you connect it

2 of this server's actions land on LinkedIn under your own account, on a browser session. That is high account risk, and the account is what enforcement acts on.