Skip to main content

Token-optimized, zero-risk LinkedIn jobs MCP server.

Project description

██╗     ██╗███╗   ██╗██╗  ██╗███████╗██████╗ ██╗███╗   ██╗
██║     ██║████╗  ██║██║ ██╔╝██╔════╝██╔══██╗██║████╗  ██║
██║     ██║██╔██╗ ██║█████╔╝ █████╗  ██║  ██║██║██╔██╗ ██║
██║     ██║██║╚██╗██║██╔═██╗ ██╔══╝  ██║  ██║██║██║╚██╗██║
███████╗██║██║ ╚████║██║  ██╗███████╗██████╔╝██║██║ ╚████║
╚══════╝╚═╝╚═╝  ╚═══╝╚═╝  ╚═╝╚══════╝╚═════╝ ╚═╝╚═╝  ╚═══╝
             MCP ZERO - public-first LinkedIn intelligence

LinkedIn MCP Zero

32 MCP tools for jobs, resumes, matching, alerts, exports, and optional read-only browser intelligence.

No Docker required · Public-first · Low-RAM friendly · FastMCP · PyPI published

PyPI Python License MCP

The Promise

LinkedIn MCP Zero gives AI agents useful LinkedIn intelligence while staying honest about risk:

Principle What it means
Public-first Job search/details use public LinkedIn guest endpoints. No account required.
Read-only No automated posting, applying, connecting, or messaging.
Local by default Resume parsing, alerts, matching, exports, and state live on your machine.
Lazy browser Chrome/CDP tools load only when called, then auto-unload after idle time.
Low-spec friendly The server detects RAM/disk and recommends full, balanced, or lean.
Easy install Claude Code, Claude Desktop, Cursor, and custom MCP clients work with one command.

Install In 10 Seconds

Check your system:

uvx mcp-server-linkedin-zero --doctor

Run as an MCP server:

uvx mcp-server-linkedin-zero

Use the latest GitHub source instead of PyPI:

uvx --from git+https://github.com/SanthaKumar-K-2004/linkedin-mcp-zero mcp-server-linkedin-zero --doctor

One-Line Agent Setup

Claude Code:

claude mcp add linkedin-zero -- uvx mcp-server-linkedin-zero

Claude Desktop:

uvx mcp-server-linkedin-zero --install-client claude-desktop

Cursor, run inside the project where you want .cursor/mcp.json:

uvx mcp-server-linkedin-zero --install-client cursor

Custom MCP clients:

uvx mcp-server-linkedin-zero

Streamable HTTP:

uvx mcp-server-linkedin-zero --transport streamable-http --host 127.0.0.1 --port 8000

GitHub-source agent setup:

claude mcp add linkedin-zero -- uvx --from git+https://github.com/SanthaKumar-K-2004/linkedin-mcp-zero mcp-server-linkedin-zero

Safe Auto Config

The installer does not overwrite your whole MCP config. It:

  • Finds the right config path for Claude Desktop or Cursor.
  • Creates missing folders.
  • Reads existing JSON.
  • Preserves every other MCP server.
  • Adds or updates only linkedin-zero.
  • Creates a timestamped .bak backup before saving.
  • Writes JSON atomically.

Manual config:

{
  "mcpServers": {
    "linkedin-zero": {
      "command": "uvx",
      "args": ["mcp-server-linkedin-zero"]
    }
  }
}

Print the config without editing files:

uvx mcp-server-linkedin-zero --print-config

Platform Matrix

Platform Command
Claude Code claude mcp add linkedin-zero -- uvx mcp-server-linkedin-zero
Claude Desktop uvx mcp-server-linkedin-zero --install-client claude-desktop
Cursor uvx mcp-server-linkedin-zero --install-client cursor
Custom stdio client uvx mcp-server-linkedin-zero
HTTP client uvx mcp-server-linkedin-zero --transport streamable-http --port 8000
Docker Not required
Low-spec laptop Supported, browser tools stay lazy

What --doctor Checks

uvx mcp-server-linkedin-zero --doctor

It detects:

  • OS and Python version.
  • Python executable.
  • CPU count.
  • Total and available RAM.
  • Free disk.
  • Local data directory.
  • Chrome, Chromium, Brave, or Edge.
  • CDP URL.
  • Docker/display state.
  • Optional packages: JobSpy, PyMuPDF, Playwright, Patchright.
  • Recommended mode: full, balanced, or lean.

Example:

{
  "python": "3.12.13",
  "cpu_count": 8,
  "ram_total_mb": 7135,
  "ram_available_mb": 2539,
  "chrome": "/usr/bin/google-chrome",
  "mode": "full",
  "notes": ["Browser tools need `uv sync --extra browser`."]
}

Tool Inventory

# Tool Engine Risk What it does
1 search_jobs E1 Zero Search LinkedIn jobs
2 search_jobs_multi E1 Zero Search LinkedIn, Indeed, Google, ZipRecruiter, Glassdoor
3 get_job_details E1 Zero Full public job details
4 get_company_jobs E1 Zero Public jobs at a company
5 get_company_profile E1 Zero Company signals from public jobs
6 search_companies E1 Zero Company search from job signals
7 get_job_salary E1 Zero Salary extraction
8 get_job_trends E1 Zero Role/location trend summary
9 get_industry_insights E1 Zero Industry job insights
10 search_jobs_advanced E1 Zero Search with filters
11 analyze_resume RE Zero Parse TXT, MD, DOCX, optional PDF
12 get_resume_insights RE Zero Skill gaps and suggestions
13 match_jobs_to_resume ME Zero Rank jobs against resume
14 compare_jobs ME Zero Compare 2-5 jobs
15 export_jobs LO Zero CSV/JSON export
16 save_job_alert ST Zero Save recurring search
17 get_saved_alerts ST Zero List alerts
18 check_saved_alerts E1+ST Zero Run alerts and find new matches
19 get_my_profile E2 Minimal Read your profile through Chrome CDP
20 get_person_profile E2 Minimal Read a public/person profile
21 search_people E2 Minimal LinkedIn people search
22 get_my_connections E2 Minimal Read connection list
23 get_inbox E2 Minimal Read inbox list
24 get_conversation E2 Minimal Read one thread
25 get_feed E2 Minimal Read home feed
26 get_notifications E2 Minimal Read notifications
27 get_sidebar_profiles E2 Minimal Read sidebar suggestions
28 get_company_employees E2 Low Read company people page
29 check_session E2 Minimal Check Chrome/CDP readiness
30 get_engine_status System Zero Runtime and engine status
31 get_help System Zero Tool documentation
32 get_profile_voyager E3 Low Gated off by default

Architecture

Claude / Cursor / Custom Agent
        |
        | MCP stdio or Streamable HTTP
        v
┌──────────────────────────────────────────────────────────────┐
│ LinkedIn MCP Zero                                            │
│                                                              │
│  FastMCP tool layer  ->  32 compact tools                    │
│          |                                                   │
│          +-- E1 Public APIs      LinkedIn guest jobs         │
│          +-- Resume Engine       local TXT/MD/DOCX/PDF       │
│          +-- Matching Engine     local scoring               │
│          +-- Storage             SQLite + exports            │
│          +-- E2 Browser          real Chrome via CDP         │
│          +-- E3 Voyager          off by default              │
│                                                              │
│  Shared: cache, rate limit, config, autodetect, logging      │
└──────────────────────────────────────────────────────────────┘

Hidden Gems Wired

Hidden gem Used for
LinkedIn Guest Jobs API Zero-login public job search/details
JobSpy Optional 5-board job search
JSON-LD Schema.org Stable salary, skills, dates, job detail parsing
FastMCP MCP server, schemas, stdio/HTTP transports
Chrome DevTools Protocol Real Chrome read-only profile/feed/inbox tools
Patchright Opt-in fallback when CDP is unavailable
python-docx + PyMuPDF Local resume parsing
pydantic-settings Type-safe environment config
structlog Structured logs

Full-Power Local Mode

Clone and install everything:

git clone https://github.com/SanthaKumar-K-2004/linkedin-mcp-zero.git
cd linkedin-mcp-zero
uv sync --extra dev --extra multi --extra pdf --extra browser

Run checks:

uv run pytest
uv run ruff check .
uv run linkedin-mcp-zero --doctor

Run server:

uv run linkedin-mcp-zero

Browser Tools

Start Chrome with CDP:

google-chrome --remote-debugging-port=9222

Then call:

check_session
get_my_profile
search_people
get_feed
get_inbox

Opt-in Patchright fallback:

LINKEDIN_MCP_ENABLE_PATCHRIGHT_FALLBACK=true uvx mcp-server-linkedin-zero

Low-Spec Mode

No Docker. No always-on browser. No heavy services.

If RAM or disk is low, the server still works:

  • Public job tools keep running.
  • Resume tools stay local.
  • Alerts use SQLite.
  • Browser tools wait until called.
  • Browser auto-unloads after idle time.
  • Optional extras are skipped unless installed.

Quality is not reduced; only engine loading is smarter.

Development And Release

Build:

uv build

Publish a new version:

uv publish

Run from PyPI:

uvx mcp-server-linkedin-zero

Run from GitHub source:

uvx --from git+https://github.com/SanthaKumar-K-2004/linkedin-mcp-zero mcp-server-linkedin-zero

Safety

This project intentionally avoids automated write actions. It does not apply to jobs, send messages, create posts, connect with people, or modify your LinkedIn account. Browser tools are read-only and require your own Chrome session.

Voyager is gated off by default because it is riskier than public APIs or real browser reading.

License

Apache 2.0. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_server_linkedin_zero-0.1.2.tar.gz (197.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_server_linkedin_zero-0.1.2-py3-none-any.whl (36.1 kB view details)

Uploaded Python 3

File details

Details for the file mcp_server_linkedin_zero-0.1.2.tar.gz.

File metadata

  • Download URL: mcp_server_linkedin_zero-0.1.2.tar.gz
  • Upload date:
  • Size: 197.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcp_server_linkedin_zero-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9ab2006571248c225791d5a575701a4d2fd03003b816c47b360b186c37d54af7
MD5 edd3f7342706bc4c592dee9c2eccc8b5
BLAKE2b-256 e44801bc0f92eea61e9de674af2fbc951c08e2b5cd8bda3bcb282867538b9421

See more details on using hashes here.

File details

Details for the file mcp_server_linkedin_zero-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: mcp_server_linkedin_zero-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 36.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.3","id":"zena","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mcp_server_linkedin_zero-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 dca2785e4e53c0661f4683bc0bcd2286164b8344c473e310b8ea336a88bf870b
MD5 da2b9725bfb60d2fa652b9f326c018f7
BLAKE2b-256 3b21b92352de9702b10f06f66d6d174fcd8790bd9aa7e1bc14d95ebfa20a9d58

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page