
How to add LinkedIn MCP Server to Claude Desktop
Lets agents read LinkedIn profiles, companies, jobs and messages through your own logged-in browser session. Paste the config into ~/Library/Application Support/Claude/claude_desktop_config.json and restart Claude Desktop.
Last updated June 14, 2026 ยท 2.6kโ ยท stdio ยท no auth
Claude Desktop config for LinkedIn MCP Server
uvx mcp-server-linkedin@latest{
"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.
Setup steps
- 1Open Claude Desktop โ Settings โ Developer โ Edit Config (this opens ~/Library/Application Support/Claude/claude_desktop_config.json).
- 2Paste the LinkedIn MCP Server config below under the top-level "mcpServers" key.
- 3Fill in any placeholder secrets (API keys, paths) in the snippet.
- 4Save the file, then fully quit and reopen Claude Desktop.
- 5Open a chat and confirm LinkedIn MCP Server's tools appear under the ๐ tools menu.
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
What LinkedIn MCP Server can do in Claude Desktop
get_person_profileGet a person's profile with explicit section selection (experience, education, skills, posts, contact info and more)
get_my_profileGet the authenticated user's own LinkedIn profile
connect_with_personSend or accept a connection request, with optional note (known open issues)
get_sidebar_profilesExtract profile URLs from sidebar recommendation sections on a profile page
get_inboxList recent conversations from the LinkedIn messaging inbox
get_conversationRead a specific messaging conversation by username or thread ID
search_conversationsSearch messages by keyword
send_messageSend a message to a LinkedIn user (requires confirmation)
Security
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 + Claude Desktop FAQ
Where is the Claude Desktop config file?
Claude Desktop reads MCP servers from ~/Library/Application Support/Claude/claude_desktop_config.json. Paste the LinkedIn MCP Server config there under the "mcpServers" key and restart the client.
Is LinkedIn MCP Server safe to use with Claude Desktop?
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.
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.