MCP Directory

How to add LinkedIn MCP Server to Windsurf

Lets agents read LinkedIn profiles, companies, jobs and messages through your own logged-in browser session. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.

Last updated June 14, 2026 · 2.6k · stdio · no auth

Windsurf 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

  1. 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
  2. 2Paste the LinkedIn MCP Server config below.
  3. 3Fill in placeholder secrets, then save.
  4. 4Click Refresh in the MCP panel.
  5. 5LinkedIn MCP Server's tools become available to Cascade.

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 Windsurf

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)

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 + Windsurf FAQ

Where is the Windsurf config file?

Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_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 Windsurf?

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.

View repo Full LinkedIn MCP Server page