Large Language ModelsGenerate imagesGenerate videos

LinkedIn MCP Server: URL, Setup and What You Can Automate

There is no official LinkedIn MCP server, so the right URL depends on which community server you pick. This article shows the local and hosted endpoints, the exact config for Claude Desktop, Claude Code and Cursor, the login flow, and the tasks worth automating, plus the account risks.

LinkedIn MCP Server: URL, Setup and What You Can Automate
Cristian Da Conceicao
Founder of Picasso IA

Type "LinkedIn MCP server URL" into a search bar and the first surprise is that there is no single address to copy. LinkedIn does not publish an MCP server of its own, and as of October 2026 every option you can install or connect to comes from a community project or a paid third-party platform. That changes how you choose one, how you set it up, and how much risk you take on with your account.

This article shows what the popular open-source server actually exposes, which URL belongs to which setup, the exact config for Claude Desktop, Claude Code and Cursor, and the job, research and outreach tasks worth handing to an assistant. It also marks the line between a useful shortcut and a restricted account.

What a LinkedIn MCP Server Does

MCP stands for Model Context Protocol, an open standard that lets an AI assistant call outside tools through one consistent interface. A LinkedIn MCP server is a small program that wraps LinkedIn actions (reading a profile, searching jobs, listing inbox threads) as tools your assistant can call in plain English.

People reach for one for the same few reasons. Recruiters want a shortlist without forty open tabs. Job seekers want listings ranked against their own background. Founders want a quick briefing on a prospect before a call. Each of those is a repetitive read-and-summarize loop, which is exactly what an assistant with the right tools does well, and exactly what a manual browser session does badly.

The Short Version

You type something like "find remote product design roles posted this week". The assistant calls the server, the server reads LinkedIn through a browser session or an API, and structured text comes back. The assistant then ranks, summarizes or drafts from it. No more copying between tabs.

Official vs Community Servers

Three families exist, and the URL question depends on which one you pick.

TypeHow it reaches LinkedInWhere it runsTypical cost
Browser automation (the popular open-source server)A logged-in browser session on your machineLocal, stdioFree
REST API wrappersAn OAuth app approved by LinkedIn, limited to granted scopesLocal or hostedDepends on your access
Managed scraping platformsThe vendor's infrastructureHosted remote URLPaid

💡 The most used open-source option is stickerdaniel/linkedin-mcp-server on GitHub, published on PyPI as mcp-server-linkedin (it was previously named linkedin-scraper-mcp, and the old name still forwards to the new one). Every command, flag and tool name below comes from its documentation, and "the server" means this one.

For a personal account, the local browser-session server is the simplest path: no developer application to apply for, no third party holding your data, and a cost of zero. The trade-off is the terms-of-service risk described below, which is why it suits low-volume personal use. An API-based wrapper is safer on paper, but it only returns what your approved application is allowed to read, and LinkedIn grants those permissions selectively. A hosted platform saves setup time and costs money, and you accept a vendor in the middle.

The LinkedIn MCP Server URL

Local Servers Have No Public URL

The default transport is stdio. Your client launches the server as a child process and talks to it through standard input and output, so there is nothing to paste into a "server URL" field. What you give the client is a command: uvx mcp-server-linkedin@latest.

Low-angle view of a small home mini PC and router on a wooden shelf

Running It Over HTTP

If your client only accepts a URL, start the server with the streamable HTTP transport:

uvx mcp-server-linkedin@latest --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp

The address your client connects to is http://127.0.0.1:8000/mcp. The Docker image documents port 8080 for the same job, which gives http://127.0.0.1:8080/mcp. Keep the host on 127.0.0.1. Anyone who can reach that port can act through your logged-in session.

Streamable HTTP is also the easier route when the server runs on a different machine from the client, for instance a home mini PC that stays on all day while you work from a laptop. In that case keep the port closed to the open internet and reach it over a private network or an SSH tunnel.

💡 In Claude Code, one line registers the HTTP address: claude mcp add --transport http linkedin http://127.0.0.1:8000/mcp

Hosted Endpoints in Directories

MCP directories also list remote endpoints, for example https://linkedin.run.mcp.com.ai/mcp, and https://gateway.pipeworx.io/linkedin_ads/mcp (that one targets LinkedIn Ads, not personal profiles). I have not vetted either. A hosted server sees whatever data and credentials you route through it, so read the publisher's privacy terms first and prefer a local server for anything tied to your personal account.

SetupAddress or commandUse it when
Local stdiouvx mcp-server-linkedin@latestOne machine, Claude Desktop, Cursor or Claude Code
Local HTTP (uvx)http://127.0.0.1:8000/mcpYour client only accepts a URL
Local HTTP (Docker)http://127.0.0.1:8080/mcpYou want isolation from your main system
HostedSet by the vendorYou accept a third party in the loop

Setup in Four Steps

Install uv

The server runs through uvx, which ships with the uv package manager (version 0.4.0 or newer). On macOS or Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

On Windows, use PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Developer hands typing an install command in a dim study

Log In Once

Run the login command a single time:

uvx mcp-server-linkedin@latest --login

A browser window opens and you sign in by hand, two-step verification included. The session is stored under ~/.linkedin-mcp/profile/, and your password never passes through the assistant. Related flags:

  • --import-from-browser reuses a session from Chrome, Brave, Edge, Arc, Vivaldi or another Chromium browser.
  • --auto-import is on by default and imports from a logged-in local browser on the first tool call.
  • --logout clears the stored session.

Add It to Your Client

For Claude Desktop, edit claude_desktop_config.json (on Windows it sits in %APPDATA%\Claude, on macOS in ~/Library/Application Support/Claude). Cursor reads the same block from .cursor/mcp.json:

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

For Claude Code, register it from the terminal:

claude mcp add linkedin -- uvx mcp-server-linkedin@latest

Prefer containers? Mount the session folder into the image. On Windows, write the path with forward slashes, like C:/Users/Alice/.linkedin-mcp:

{
  "mcpServers": {
    "mcp-server-linkedin": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-v", "/absolute/path/to/.linkedin-mcp:/home/pwuser/.linkedin-mcp",
        "stickerdaniel/linkedin-mcp-server:latest"
      ]
    }
  }
}

Test With One Safe Prompt

Restart the client fully, then send this:

Read my own LinkedIn profile and tell me which sections look thin.

It calls get_my_profile, reads only your own data, and changes nothing. If it answers, the wiring works. The first run can be slow while the server sets up its managed browser, which is why the config above raises UV_HTTP_TIMEOUT to 300 seconds.

💡 @latest means the server updates itself on every launch. For a setup you rely on, pin a version such as uvx mcp-server-linkedin@4.14.0 (the PyPI version at the time of writing).

What You Can Automate

The server exposes roughly twenty tools, and every call runs one at a time through a queue.

AreaToolsWhat you get
Profilesget_person_profile, get_my_profile, search_people, get_sidebar_profilesExperience, education, skills, projects, posts
Connectionsconnect_with_personSend or accept requests with an optional note
Messagingget_inbox, get_conversation, search_conversations, send_messageThreads and search, sending needs confirmation
Companiesget_company_profile, get_company_posts, search_companies, get_company_employeesCompany pages, posts, jobs, employee lists
Jobssearch_jobs, get_saved_jobs, get_job_details, get_job_apply_urlListings, saved roles, full postings, apply links
Feedget_feed, search_postsHome feed and post search with recency filters
Sessionclose_sessionReleases the browser

Profile and People Research

This is where recruiters and sales teams save the most time. Ask for a shortlist and a one-paragraph summary per person instead of opening fifteen tabs.

Search for senior data engineers in Lisbon, open the first eight profiles, and list who has Kafka and dbt in their experience.

Recruiter in a navy blazer reviewing printed resumes beside a laptop

Job Search Without Tab Hell

search_jobs takes search terms and a location, then filters for date posted, job type, experience level, work type, Easy Apply and sort order, with results paginated up to ten pages. Pair it with get_job_details and get_job_apply_url and the assistant can turn a noisy results page into a ranked table with the apply links attached.

Find remote UX research roles posted in the last week, skip anything under mid-level, and rank them by how closely they match my profile.

I would keep the applying itself manual. The assistant finds and ranks. You click.

A routine that works: every Monday morning, ask for new listings from the past seven days that match two or three saved search ideas, have the assistant drop anything you already saw, and keep the top five in a short note. That is three or four tool calls, far below anything that looks like bulk activity, and you stay in charge of every application.

Top-down view of a cafe table with a laptop, checklist notebook and coffee

Company Research Before Interviews

Combine get_company_profile, get_company_posts and get_company_employees to build a one-page briefing: what the company announced lately, who works in the team you are joining, and which open roles hint at its priorities. search_posts and get_feed work the same way for topic monitoring, such as "what are people in my industry saying about this launch?"

Three colleagues around an oak table reviewing a printed flow diagram

Inbox and Outreach Drafts

get_inbox and search_conversations let the assistant find threads that went quiet, and it can draft a follow-up for each one using the context of the conversation. send_message asks for confirmation before anything goes out. Treat that confirmation as a hard stop: read the draft, edit it, and only then approve.

Business owner drafting a message at a standing desk in a brick loft

The Account Risk Is Real

What the Terms Say

The server's own documentation is blunt: "LinkedIn's User Agreement prohibits automated access, and accounts using automated tools can be restricted or banned." The project is independent, not affiliated with LinkedIn or Microsoft, intended for personal use, and comes with no warranty. Using it is your decision and your risk.

Close-up of an old brass padlock on a weathered wooden latch

Habits That Lower the Risk

  • Start read-only. Profiles, jobs and company pages first, messaging last.
  • Keep volume low. The documentation tells you to use it sparingly and to prompt agents responsibly, because you own the volume of automation you run.
  • Draft, then send by hand. Never let an agent message or connect on its own.
  • Use a personal account you can afford to lose. Do not point it at the one profile your income depends on.

Here is my own rule of thumb, not an official threshold:

TaskRiskVerdict
Reading your own profileLowFine
A few job searches per dayLow to mediumFine in moderation
Opening dozens of profiles in a rowHigherAvoid
Bulk connection requestsHighDon't
Auto-sent messagesHighDraft only

If a task would make you uncomfortable doing by hand fifty times in an hour, it should not be something an agent does for you either. The goal is to replace tab juggling, not to run a campaign.

Fixing Setup Errors

  • The server never connects. The client often cannot see uvx on its PATH. Run which uvx (or where uvx on Windows) and paste the absolute path into the command field, then restart the client fully.
  • The first launch times out. The initial download is large. Run --login once in a terminal so everything is fetched before the client asks, and keep UV_HTTP_TIMEOUT at 300.
  • Login stops working. Run --logout, then --login again. Sessions expire.
  • Tool calls time out. The whole call is limited by --tool-timeout (180 seconds by default) and each page operation by --timeout (5000 ms). On a slow connection, add "--timeout", "10000" to args.
  • Two clients share one session. Calls queue across processes, so the second client simply waits its turn.
  • You want to watch it work. Add --no-headless and the browser window stays visible.

Use Claude Sonnet 5 on PicassoIA

The MCP server fetches data. A writing model turns it into something you can send. You can paste what your assistant returned into Claude Sonnet 5 on PicassoIA and shape the output there.

  1. Copy the briefing. Take a job posting or company summary from your assistant. Remove personal details of other people.
  2. Open the model page. Go to Claude Sonnet 5 on PicassoIA.
  3. Paste and instruct. Try: "Using this job posting and my background below, write a four-sentence application note in a direct tone, no buzzwords."
  4. Run it and edit. Change one detail per revision so you can see what moved the result. Keep the instruction narrow: a model given a posting, a short background and a word limit writes something usable, while a model given "write me a great message" writes filler.
  5. Compare. For quick drafts, Gemini 3.5 Flash responds fast, and GPT 5.6 Terra is another solid option for polished copy.

💡 Posts with an image usually stand out in the feed. P-Image, Flux 2 Pro, Seedream 5 Lite and GPT Image 2 all generate a clean 16:9 header from a one-line prompt.

Content creator at a tidy desk with a mirrorless camera and softbox

Try It Yourself on Picasso IA

An assistant wired to LinkedIn saves hours of searching, but the result still needs words and visuals that sound like you. Take the next draft your assistant produces, open Picasso IA, and build the header image for it. Describe the scene in plain language, pick a model, generate a few variations, and keep the one that fits the post.

Start with something small: a photo-style banner for your next job update or a clean image for a company announcement. Two or three experiments will show you which prompts and models suit your style.

Designer smiling at a monitor showing a blurred gallery of photographs

Share this article