Skip to main content
LinkedIn MCP in Claude — configs read 20 September 2026

Adding a LinkedIn MCP server to Claude Desktop, Claude Code and claude.ai

There is nothing to switch on: LinkedIn publishes no MCP server, and every route from Claude to LinkedIn is a third-party one you add yourself. Where you add it is the part no tutorial separates. Claude Desktop reads one JSON file and launches a local process from it. Claude Code reads two files, across project, local and user scope, and takes a command instead if you would rather not touch either. claude.ai reads neither — it takes a URL through Settings → Connectors and has nowhere to launch anything. Of the 13 servers in this directory, 12 name Claude Code, 10 name Claude Desktop and 2 name claude.ai.

Config shapes from
code.claude.com
Last read
✓ Every config block copied whole from the vendor's own page✓ Client support read from each project's own list, not assumed✓ Account exposure derived from a published rule✓ No affiliate links, no sponsored placements
12 name Claude Code
10 name Claude Desktop
2 name claude.ai
4 need no LinkedIn account
Three clients wearing one name

“Install it in Claude” is 3 different instructions, and the wrong one fails without saying so

Read this before copying any block, including the ones on this page. The three surfaces do not read the same file, do not accept the same kinds of server, and do not agree on what happens after you save. Every row below is from the vendor page cited under the table.

How each Claude surface takes an MCP server
 Claude Desktop10 of 13 name itClaude Code12 of 13 name itclaude.ai on the web2 of 13 name it
Where the configuration livesclaude_desktop_config.json — on macOS at ~/Library/Application Support/Claude/, on Windows at %APPDATA%\Claude\. The official page publishes no Linux path..mcp.json at the repository root for project scope. ~/.claude.json for the other two, in two different places inside it: local scope under projects → your path → mcpServers, user scope at the top level.No file. Settings → Connectors, in the browser.
The key it readsmcpServersmcpServersNone — a URL
What it can runA local process it launches itself. stdio is inferred from the presence of a command key, so no type field is needed.Either. A local process over stdio, or a remote endpoint over Streamable HTTP.A remote server only. There is no local process, because the page has nowhere to launch one.
How a server is addedSettings → Developer → Edit Config, then paste the block. A remote server does not go in this file at all: it is added in Settings → Connectors as a custom connector.Paste the block, or run claude mcp add. Project scope travels with the repository, so an entry committed there is an entry every collaborator is asked to approve.Add → Add custom connector → paste the server URL → complete authentication, commonly OAuth. Tool permissions are then set per connector.
Where the credential sitsIn the entry’s env block, in plaintext on your disk.In an env block, in a --env flag, in a header, or behind a headersHelper script that prints a JSON header object.With the connector, usually through an OAuth flow rather than a pasted key.
After a changeA full restart of the application, not a window reload. Logs land in ~/Library/Logs/Claude/mcp.log and mcp-server-SERVERNAME.log.Nothing to restart. Claude Code prints what it has registered, and claude mcp list names them.Nothing. The connector is live once authentication completes.
Servers here that name it, of 1310122

Read on 20 September 2026 from The MCP tutorial for connecting local servers, Claude Code’s MCP documentation and The MCP tutorial for connecting remote servers. The last row counts the projects that name each surface in their own documentation, which is a narrower claim than what would technically run — the rule is stated under the server table below.

The blocks, verbatim

Each of these is the vendor's own example, not a LinkedIn one

They are here as the shape. Take the actual entry from the profile page of whichever server you chose, because a config that has been helpfully adapted is a config the maintainer never tested. Where a shape below corrects something most published guides state backwards, the correction is under the block it applies to.

  1. 1
    Decide which Claude you are actually in

    The desktop application, the terminal agent and the browser tab read different things. A block that works in one fails silently in another, and the failure looks identical to a server that has not been written yet.

  2. 2
    Decide what you are willing to hand LinkedIn

    The credential decides what the server can reach and who carries the consequence, and no feature list compensates for it. Settle that before comparing tool counts.

  3. 3
    Take the block from the project, not from an article

    Every config on a profile page here is the project’s own, copied whole. A config tidied by a third party is one the maintainer never ran, and JSON that is wrong in the right shape fails without an error.

  4. 4
    Confirm the tools are listed before an agent touches them

    In Claude Code, claude mcp list names what registered. In Claude Desktop, check ~/Library/Logs/Claude/mcp.log. Ask the assistant to list its tools, and read the write tools before you let anything run unattended.

Claude Desktop, one file

The official example, which adds a filesystem server rather than a LinkedIn one. Read it for the shape: a top-level mcpServers object, a name you choose, and a command with its args. There is no type field, because a command key is how this file says stdio. Reach it through Settings → Developer → Edit Config, and restart the application fully afterwards.

claude_desktop_config.json
JSON
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/Users/username/Desktop",
        "/Users/username/Downloads"
      ]
    }
  }
}

The MCP tutorial for connecting local servers, read 20 September 2026.

Claude Code, project scope

The documentation’s own project-scope example. The same mcpServers key as Claude Desktop, in a file at the repository root, and the one scope that travels with the repository. One thing the tutorials get wrong: Claude Code reads an entry with no type as a stdio server, so a Claude Desktop block moves across unchanged and claude mcp add-from-claude-desktop imports one. The type is required only when the entry carries a url, and a url without one is reported as a configuration error rather than guessed at.

.mcp.json
JSON
{
  "mcpServers": {
    "shared-server": {
      "type": "http",
      "url": "https://example.com/mcp"
    }
  }
}

Claude Code’s MCP documentation, read 20 September 2026.

Claude Code, local scope

Local scope is the default, and this is what the documentation shows in ~/.claude.json after claude mcp add is run from /path/to/your/project: the server nests under projects → that path → mcpServers, so it loads in that project and in no other. This is the file to check when a server appears in one repository and not another.

~/.claude.json
JSON
{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "stripe": {
          "type": "http",
          "url": "https://mcp.stripe.com"
        }
      }
    }
  }
}

Claude Code’s MCP documentation, read 20 September 2026.

Claude Code, user scope and the way past the files

One command per scope, from the same page. The third is here because user scope has no block to copy: the documentation prints none for it and says only that the server is stored in ~/.claude.json at the top level, not nested under projects — which is the difference between a server loaded in one project and a server loaded in all of them, and the thing most write-ups state backwards. The same page documents --env for a secret on a stdio server, --header for a static token on a remote one, and OAuth through /mcp inside a session or claude mcp login.

claude mcp add
Shell
# Add a local-scoped server (default)
claude mcp add --transport http stripe https://mcp.stripe.com

# Add a project-scoped server
claude mcp add --transport http shared-server --scope project https://example.com/mcp

# Add a user server
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

Claude Code’s MCP documentation, read 20 September 2026.

claude.ai on the web

The one surface with no file to edit

A custom connector is added in the browser and takes a server URL — the MCP tutorial for connecting remote servers ↗ walks it as Add → Add custom connector → paste the URL → complete authentication, after which tool permissions are set per connector. The same Connectors panel exists in Claude Desktop, which is why a hosted server can reach the desktop application without ever appearing in claude_desktop_config.json. What cannot go there is a server that has to run on your machine: 5 of the 13 here are stdio-only, and 8 could in principle take a URL, of which 2 name claude.ai in their own documentation.

A LinkedIn server, end to end

Subio Scrape, the one route on this page that puts no account at risk

Reads public LinkedIn company and person pages, and a company's public posts when LinkedIn serves them signed out. It never logs in, so it puts no account at risk — and cannot see anything behind the login. 7 tools, of which two touch LinkedIn; MIT, nothing to sign into, no key, and the registry derives its exposure as Low because there is no LinkedIn account behind it to restrict. Its own README is blunt about the ceiling that buys: LinkedIn gives the least and takes it away fastest, and a signed-out client is walled after a handful of pages. The two blocks are the project's own — the first registers it in Claude Code in one command, the second is the same server as a Claude Desktop entry.

Claude Code — Subio Scrape
Shell
claude mcp add subio-scrape -- npx -y github:alijancb/subio-mcp
claude_desktop_config.json
JSON
{
  "mcpServers": {
    "subio-scrape": {
      "command": "npx",
      "args": ["-y", "github:alijancb/subio-mcp"]
    }
  }
}

Both copied from the Subio Scrape repository ↗ on 20 September 2026. One caveat the repository carries and the block does not: its own root .mcp.json points at an npm package that was never published, so the documented and working form is the GitHub one above. The full record is on its profile.

What runs where

Every LinkedIn MCP server against the 3 Claude surfaces, with what each one exposes

The first 3 columns are read from each project's own list of supported clients rather than inferred from its transport. The last is the registry's derived exposure — what the LinkedIn account behind the server is exposed to — so it can be re-derived by anybody who disagrees with it. Open a profile for the tool list, the write actions and the project's own config block.

ServerClaude DesktopClaude Codeclaude.ai on the webHow it connectsAccount exposure
Subio ScrapeNamedNamedNot namedA local process the client launchesLow
Bright Data MCP (LinkedIn tools)NamedNamedNot namedEither a local process or a remote URLLow
Anysite MCP ServerNamedNamedNot namedEither a local process or a remote URLLow
InsaightNamedNamedNot namedA local process the client launchesLow
LinkedIn Ads MCP ServerNamedNamedNot namedA local process the client launchesMedium
eliasbiondo/linkedin-mcp-serverNamedNot namedNot namedEither a local process or a remote URLMedium
stickerdaniel/linkedin-mcp-serverNamedNamedNot namedEither a local process or a remote URLHigh
La Growth Machine MCPNot namedNamedNamedA remote URLHigh
Linked API MCPNamedNamedNamedEither a local process or a remote URLHigh
gtm-api/linkedin-mcpNamedNamedNot namedEither a local process or a remote URLHigh
LinkedGrowNot namedNamedNot namedA remote URLHigh
southleft/linkedin-mcpNamedNamedNot namedA local process the client launchesHigh
linkedincliNot namedNamedNot namedA local process the client launchesHigh

Not named means the project does not list that surface, not that it fails there: a stdio server that names Claude Desktop will normally run in Claude Code too, since both read an mcpServers object and Claude Code treats an entry with no type as stdio. The column is deliberately the narrower claim, because the wider one would be this page guessing on a maintainer's behalf. Where a project does name a surface, it is usually because it publishes a block or a command for it, which is on its profile.

Which server, for which job, in which Claude

The shortlist is usually two, once the surface and the credential are settled

Each card names the servers that actually fit out of the 13 in the directory, with the exposure the registry derives for each. Where the honest answer is that nothing fits cleanly, it says that instead.

Low exposureResearch from the terminal, with no LinkedIn account behind it

The best-served case on this page, and the only one where the safe answer is also the good one. Subio Scrape reads what LinkedIn serves a signed-out visitor, for free, and registers in Claude Code in one command. Bright Data MCP (LinkedIn tools) turns profile, company, job, post and people-search URLs into structured JSON on a vendor key, across 69 tools of which five are the LinkedIn extractors. Insaight installs as a Claude Code plugin from its own marketplace, researches through Apify and keeps a local ledger, with no send path anywhere in it. None of the three holds a LinkedIn credential; the exposure moves to a vendor's relationship with LinkedIn, or to your own IP address.

High exposureYour own profile, feed and inbox in Claude Desktop

Nothing official reaches any of it, so this is the session-driven half of the directory. stickerdaniel/linkedin-mcp-server carries the most GitHub stars of the 13 here — 3,551 on 20 September 2026, which counts attention rather than installs — and publishes a one-click bundle for Claude Desktop from its releases page. It signs into your real account in a browser it drives, registers 19 tools, and 2 of them write — a message and a connection request, of which only the message tool takes a confirmation flag. Its README says so itself: LinkedIn's User Agreement prohibits automated access, accounts using automated tools can be restricted, and there is no guarantee of account safety. Any MCP client wired to it can read your entire inbox.

High exposureWorking from claude.ai, with no terminal at all

Only 2 servers name the web surface, and both keep the LinkedIn session on their own infrastructure rather than your machine. Linked API MCP is the larger of the two — 62 tools, 15 of them writing to LinkedIn. Some of that count is admin rather than LinkedIn: an agent holding the workspace token can use it to change seats and relax rate limits. La Growth Machine MCP reaches LinkedIn through an identity you already connected in its own product, and has no tool that launches a campaign, deliberately. Both are paid services, and on both the exposure is yours while the infrastructure is theirs.

High exposureAn agent inside Sales Navigator

3 of the 13 reach it and none supplies a seat, because LinkedIn's own Sales Navigator API is closed to new partners — so each drives the interface with your subscription and your session. Linked API MCP carries a dedicated Sales Navigator tool set on its higher plan; gtm-api/linkedin-mcp exposes its actions through 3 meta-tools and is the only server here that also touches Recruiter. Settle the seat before the agent: Core is $119.99 a month, read from LinkedIn on 12 September 2026, and the 2,500-result search cap applies to an agent exactly as it applies to you.

Medium exposureAd reporting, without touching a profile

The one job on this page with a sanctioned route. LinkedIn Ads MCP Server runs on LinkedIn's Marketing API under an app you register — no cookie, no browser session — across 25 tools of which 15 only read. Claude Desktop is the only client the repository gives a config block for, and it ships a copy-paste install prompt for Claude Code. Two things before pointing a model at it: the write half can change budgets and delete campaigns in a live account with no preview and no undo in this repository, so the write scope is a spend authorisation; and an arbitrary-file-read report filed against it on 12 July 2026 was still open and unanswered on 20 September 2026.

Claude Code onlyWhat an installer can do that a config block cannot

Two projects here install through Claude Code's own plugin machinery rather than a file you edit, and the difference is worth knowing before you run one. Insaight adds a marketplace and installs from it, in two commands. La Growth Machine MCP publishes a script its README also offers as a pipe into a shell; it writes skills globally and registers the MCP server at user scope, which means a LinkedIn-acting server loaded in every project you open until you remove it. Read the script before running it — both projects document a download-and-read path — and check ~/.claude.json afterwards for what was registered where.

The ceiling, identical on all 3

What no server reaches on any Claude surface, because LinkedIn does not expose it

None of this is a limit of Claude, of MCP or of the config file, which is why moving from the desktop app to the terminal to the browser changes none of it. It is what LinkedIn's own platform permits an application to do. Every line was read from LinkedIn's documentation and legal pages on 20 September 2026 and names the page it came from.

Three permissions are self-serve. Everything else needs approval.

LinkedIn's own access page lists exactly three permissions any developer can obtain without review: profile and email, through Sign In with LinkedIn using OpenID Connect, and w_member_social, through Share on LinkedIn. In practice an individual developer can get sign-in and posting on their own behalf, and nothing else. LinkedIn on getting API access

No self-serve permission grants people search or profile lookup.

Nothing on the public access list lets an application search members or read an arbitrary member's profile. That single gap is what separates the official servers in this directory from every other one. LinkedIn on getting API access

A Messages API exists, and its own terms forbid automated sending.

It is restricted to approved partners, and the documentation states that "A message must be associated with a specific member action. Member actions do not include an automated or scheduled event." The member must be able to edit any prepared draft and take an affirmative action to send. The only message type is member-to-member; there is no InMail. The accurate statement is not that LinkedIn has no messaging API, but that the one it has is partner-gated and prohibits the thing an agent would do with it. LinkedIn’s Messages API documentation

The Invitations API is partner-gated and on no self-serve list.

The Invitations API is the endpoint that sends a connection request — a POST to /v2/invitations, on behalf of the authenticated member only — and its documentation opens with one note: "Usage of this API is restricted to approved partners, subject to limitations via API agreement." No invitation permission appears anywhere on the access page, whose self-serve list is profile, email and w_member_social. LinkedIn’s Invitations API documentation

LinkedIn’s robots.txt denies everything by default.

The default block is Disallow: / for all agents. Every major AI training and assistant crawler is blocked outright. Two AI search crawlers are granted search-engine-style access but are additionally blocked from public profiles, people search and the guest people directory — three paths the traditional search engines are not blocked from. LinkedIn publishes no llms.txt. LinkedIn’s robots.txt

Two consequences worth stating plainly. A server that searches people or sends a message is not using this API, because this API does not offer either — which is the whole reason the directory is sorted by credential, and the argument is on the route-by-route page. And the ceilings that apply to you as a member — invitations a week, InMail allowances, the 2,500-result search cap — are separate again, apply whether or not a server is involved, and sit on the LinkedIn limits page. The two current transports are stdio and Streamable HTTP. Claude Code's own documentation marks SSE deprecated and says to use HTTP where available, so anything describing an SSE endpoint as a current choice is describing a compatibility path rather than one.

Claude and LinkedIn, asked directly

The questions people arrive with

Does Claude have a LinkedIn connector?

Not one anybody ships as a product. We found no MCP server published by LinkedIn or by Microsoft as of 20 September 2026. The check covered five published places: LinkedIn's developer product catalogue, which lists no MCP product among its consumer, marketing, sales, talent, plugin and regulatory entries; the LinkedIn API documentation on Microsoft Learn, whose six business lines contain no MCP section; the README of the microsoft/mcp repository, which names thirty-one Microsoft servers and no LinkedIn one; the MCP Registry, where a search for "linkedin" returns third-party entries and none under a com.linkedin or com.microsoft name; and GitHub's own search, which finds no repository matching "mcp" in the linkedin organisation. It stops where publication stops: a partner-only or unannounced integration would appear in none of them. What exists is 13 third-party MCP servers, added by you: a config entry in Claude Desktop or Claude Code, or a custom connector on claude.ai. 12 of them name Claude Code, 10 name Claude Desktop, and 2 name claude.ai.

How do I add a LinkedIn MCP server to Claude Desktop?

Settings → Developer → Edit Config opens claude_desktop_config.json — on macOS at ~/Library/Application Support/Claude/, on Windows at %APPDATA%\Claude\. Paste the project’s own block under the mcpServers key and restart the application fully; a window reload does not reload the config. If the tools do not appear, ~/Library/Logs/Claude/mcp.log and mcp-server-SERVERNAME.log say why. A remote server does not belong in this file at all — it is added under Settings → Connectors.

How do I add one to Claude Code?

Three scopes, two files, and the two scopes that share a file do not share a shape. Project scope is .mcp.json at the repository root, which travels with the repository. Local scope is ~/.claude.json under projects → your path → mcpServers, and loads in that project only. User scope is the same file at the top level, outside projects, and loads in every project you open. Put a user-scope entry under the project path and it is a local-scope entry that will not load anywhere else. Or skip the files: the documented syntax is claude mcp add [options] <name> -- <command> [args...] for a local server and claude mcp add --transport http <name> <url> for a remote one, with --scope project or --scope user to place it, and claude mcp list to confirm what registered.

Does a Claude Code entry need a type field?

Only when it has a url. Claude Code reads an entry with no type as a stdio server, which is why a Claude Desktop block moves across unchanged and why claude mcp add-from-claude-desktop can import one. For a remote entry the type is required — http, with streamable-http as an alias, plus sse and ws — and a url with no type is reported as a configuration error rather than guessed at.

Can I use a LinkedIn MCP server on claude.ai in the browser?

Only a remote one. The web surface takes a URL through Settings → Connectors and has nowhere to launch a local process, so 5 of the 13 servers here are out of reach there by construction. 2 name claude.ai in their own documentation, and both are hosted services that drive a LinkedIn session on the vendor’s infrastructure rather than on your machine. A self-hosted HTTP server is not automatically a candidate either: one of them binds to localhost by default, and changing that to make it reachable puts an unauthenticated LinkedIn-acting server on a network.

Can Claude read a LinkedIn profile if I paste the URL?

No, and the failure mode is worse than a refusal: an assistant handed a profile URL will often describe a page it never opened. The default block is Disallow: / for all agents. Every major AI training and assistant crawler is blocked outright. Two AI search crawlers are granted search-engine-style access but are additionally blocked from public profiles, people search and the guest people directory — three paths the traditional search engines are not blocked from. LinkedIn publishes no llms.txt. An MCP server changes the answer by fetching the page with its own credential instead of asking the model to browse it.

Can Claude send LinkedIn messages or connection requests through one of these?

8 of the 13 can act on LinkedIn, and none of them does it through a route LinkedIn opened for the purpose. It is restricted to approved partners, and the documentation states that "A message must be associated with a specific member action. Member actions do not include an automated or scheduled event." The member must be able to edit any prepared draft and take an affirmative action to send. The only message type is member-to-member; there is no InMail. The accurate statement is not that LinkedIn has no messaging API, but that the one it has is partner-gated and prohibits the thing an agent would do with it. The Invitations API is the endpoint that sends a connection request — a POST to /v2/invitations, on behalf of the authenticated member only — and its documentation opens with one note: "Usage of this API is restricted to approved partners, subject to limitations via API agreement." No invitation permission appears anywhere on the access page, whose self-serve list is profile, email and w_member_social. So every server here that sends is driving a signed-in browser or replaying a session cookie, and the activity reaches LinkedIn as yours. Section 8.2 of the User Agreement prohibits using bots or other automated methods to send or redirect messages, and enforcement lands on the account rather than on the software.

Is there a LinkedIn skill for Claude, rather than a server?

Two projects here ship skills alongside the server, and a skill is not a substitute for one: it is instructions, so it can shape how a model works but it cannot fetch anything LinkedIn will not serve. Subio Scrape publishes an optional Claude Code plugin that adds a /scrape command and a social-scrape skill on top of its tools. La Growth Machine MCP installs skills globally for several clients, and its installer registers the MCP server at user scope, so it is active in every project rather than the one you ran it in. If what you want is instructions rather than tools, the prompts and context files at /prompts and /ai do that with no server and no account exposure at all.

My config worked in Claude and does nothing in VS Code. Why?

Claude Desktop and Claude Code read the same mcpServers object; type is for remote entries. VS Code uses a servers key rather than mcpServers, and the same JSON under the wrong key fails with no error and no log line — the single commonest reason a working block stops working when it is moved. Cursor reads .cursor/mcp.json or ~/.cursor/mcp.json with the same mcpServers object as Claude, so a Claude Desktop block moves there unchanged.

Will connecting one of these get my LinkedIn account restricted?

It can, and not evenly. 4 of the 13 put no LinkedIn account behind them at all, which is the only arrangement that takes the question off the table; 7 write to LinkedIn from a real session and carry the registry’s High exposure. LinkedIn’s prohibited-software page states that members who use automated methods risk having their accounts restricted or shut down, and the restriction lands on the account rather than on the software. This page describes the routes and what each one holds. It does not tell anyone to run one.

Claude Desktop uses claude_desktop_config.json with a top-level mcpServers object, inferring stdio from a command key. Claude Code uses .mcp.json for project scope or ~/.claude.json for local and user scope, under the same key, and its documentation says Claude Code reads an entry with no type as a stdio server — so a command-and-args block moves across unchanged, and "claude mcp add-from-claude-desktop" imports one outright. type is what a remote entry needs: a url with no type is a configuration error, and the accepted values are http (with streamable-http as an alias), sse and ws. The CLI takes "claude mcp add --transport stdio <name> -- <command>" and "claude mcp add --transport http <name> <url>". Claude Code's MCP documentation ↗, read 20 September 2026. The specification under all of it is eight weeks old and a next revision is in planning with no announced date, so treat every shape here as dated rather than permanent.

Where to next

Pick the surface, then the credential, then the server

12 of the 13 name Claude Code, 10 name Claude Desktop and 2 name claude.ai. The directory carries the full record for each, including what it hands LinkedIn and who carries the consequence.