Token-optimized, public-first LinkedIn jobs MCP server.
Project description
██╗ ██╗███╗ ██╗██╗ ██╗███████╗██████╗ ██╗███╗ ██╗
██║ ██║████╗ ██║██║ ██╔╝██╔════╝██╔══██╗██║████╗ ██║
██║ ██║██╔██╗ ██║█████╔╝ █████╗ ██║ ██║██║██╔██╗ ██║
███████╗██║██║ ╚████║██║ ██╗███████╗██████╔╝██║██║ ╚████║
MCP ZERO - public-first LinkedIn intelligence
LinkedIn MCP Zero
A public-first MCP server for LinkedIn jobs, resumes, matching, alerts, exports, and opt-in read-only browser intelligence.
No Docker required · Claude Desktop ready · Claude Code ready · Low-RAM friendly · PyPI published
Install In One Command
| Client | Command |
|---|---|
| Claude Desktop | uvx --refresh-package mcp-server-linkedin-zero mcp-server-linkedin-zero --install-client claude-desktop |
| Claude Code | uvx --refresh-package mcp-server-linkedin-zero mcp-server-linkedin-zero --install-client claude-code |
| Cursor | uvx mcp-server-linkedin-zero --install-client cursor |
| VS Code | uvx mcp-server-linkedin-zero --install-client vscode |
| Any stdio client | uvx mcp-server-linkedin-zero |
uvx mcp-server-linkedin-zero --doctor
Verify after install:
uvx --refresh-package mcp-server-linkedin-zero mcp-server-linkedin-zero --verify-client claude-desktop
Browser mode:
uvx --refresh-package mcp-server-linkedin-zero mcp-server-linkedin-zero --install-client claude-desktop --with-extra browser
Tool Inventory
Default Tools: 23 Working
These work without LinkedIn login or browser setup.
| # | Tool | Feature | Risk |
|---|---|---|---|
| 1 | search_jobs |
Search public LinkedIn jobs | Public no-login |
| 2 | search_jobs_multi |
Multi-board search; LinkedIn fallback by default | Public no-login |
| 3 | get_job_details |
Full public job details | Public no-login |
| 4 | get_company_jobs |
Public jobs for a company | Public no-login |
| 5 | get_company_profile |
Company signals inferred from public jobs | Public no-login |
| 6 | search_companies |
Company discovery from public job data | Public no-login |
| 7 | get_job_salary |
Salary extraction from job detail pages | Public no-login |
| 8 | get_job_trends |
Role/location hiring trends | Public no-login |
| 9 | get_industry_insights |
Market signals for an industry | Public no-login |
| 10 | search_jobs_advanced |
Job search with filters | Public no-login |
| 11 | analyze_resume |
Local PDF/DOCX/text resume parsing | Local |
| 12 | get_resume_insights |
Local skill gaps and suggestions | Local |
| 13 | match_jobs_to_resume |
Rank public jobs against a resume | Local/public |
| 14 | compare_jobs |
Compare selected jobs | Local/public |
| 15 | export_jobs |
Export jobs to CSV/JSON/XLSX | Local |
| 16 | save_job_alert |
Save a recurring search | Local |
| 17 | get_saved_alerts |
List saved searches | Local |
| 18 | check_saved_alerts |
Run alerts and find new matches | Local/public |
| 19 | get_engine_status |
Runtime, engine, token, cache status | Local |
| 20 | get_help |
Tool documentation | Local |
| 21 | get_usage_stats |
Local response-size/token estimates | Local |
| 22 | get_tool_usage_summary |
Aggregate local usage by tool | Local |
| 23 | reset_usage_stats |
Clear local usage metrics | Local |
Browser Tools: +11
Enable with --with-extra browser or --enable-browser. These are read-only,
but they use your logged-in browser session.
| # | Tool | Feature |
|---|---|---|
| 24 | get_my_profile |
Read your profile |
| 25 | get_person_profile |
Read a public/person profile page |
| 26 | search_people |
People search through browser |
| 27 | get_my_connections |
Read your connection list |
| 28 | get_inbox |
Recent conversations list |
| 29 | get_conversation |
Read a conversation thread |
| 30 | get_feed |
Read home feed posts |
| 31 | get_notifications |
Read notifications |
| 32 | get_sidebar_profiles |
Suggested/sidebar profiles |
| 33 | get_company_employees |
Company people page |
| 34 | check_session |
Check CDP/login readiness |
Gated Private-Risk Tool: +1
| # | Tool | Feature |
|---|---|---|
| 35 | get_profile_voyager |
Voyager/private API placeholder, disabled by default |
Default mode exposes 23 usable tools: 22 core local/public tools plus
search_jobs_multi, which falls back to LinkedIn-only results unless the
multi extra is installed. Browser tools appear only with --enable-browser or
--with-extra browser in an installed client config. Voyager/private API mode is
hidden unless explicitly enabled.
Tool counts:
| Mode | Exposed Tools | Notes |
|---|---|---|
| Default | 23 | Safe local/public tools; no LinkedIn login required |
| Browser enabled | 34 | Adds 11 read-only browser tools; needs Chrome/CDP login |
| Browser + Voyager | 35 | Adds gated private-API placeholder |
Safety Model
| Mode | Label | Account Risk |
|---|---|---|
| Local resume/alerts/exports | local_zero_account_risk |
None |
| Public no-login job data | public_no_login_read_only |
No LinkedIn login required |
| Browser tools | browser_readonly_account_risk |
Opt-in account risk |
| Voyager/private API | disabled_private_api_risk |
Disabled by default |
No tool posts, likes, connects, follows, applies, or sends messages.
Browser Mode
Install browser dependencies into the isolated uvx runtime:
uvx mcp-server-linkedin-zero --install-client claude-desktop --with-extra browser
Start Chrome with remote debugging and log in manually:
google-chrome --remote-debugging-port=9222
Then call check_session from your MCP client.
Global Playwright installs do not count for uvx; use --with-extra browser.
Token Usage Tracking
Claude Desktop has no built-in per-MCP token counter. This server provides a privacy-safe tracker instead:
- Estimated tokens:
ceil(response_chars / 4), always on. - Exact-style counts: optional Anthropic
/v1/messages/count_tokens. - Full tool responses are not stored in the metrics database.
- Exact-style counting sends the counted response text to Anthropic only when
ANTHROPIC_API_KEYandLINKEDIN_MCP_EXACT_TOKEN_COUNT=trueare both set.
Enable exact-style counting:
ANTHROPIC_API_KEY=sk-ant-... LINKEDIN_MCP_EXACT_TOKEN_COUNT=true uvx mcp-server-linkedin-zero
Use a different token-count model if needed:
LINKEDIN_MCP_TOKEN_COUNT_MODEL=claude-sonnet-4-5
Usage tools:
get_usage_stats
get_tool_usage_summary
reset_usage_stats
Avoid terminal transcript logging as a token strategy; it can expose private profile, inbox, resume, or job data.
Client Config
Print without editing files:
uvx mcp-server-linkedin-zero --print-config --client claude-desktop
uvx mcp-server-linkedin-zero --print-config --client vscode
Claude Desktop and Cursor use:
{
"mcpServers": {
"linkedin-zero": {
"command": "/absolute/path/to/uvx",
"args": ["mcp-server-linkedin-zero"]
}
}
}
VS Code uses:
{
"servers": {
"linkedin-zero": {
"command": "/absolute/path/to/uvx",
"args": ["mcp-server-linkedin-zero"]
}
}
}
Doctor
uvx mcp-server-linkedin-zero --doctor
uvx mcp-server-linkedin-zero --doctor --json
Checks OS, Python, RAM, disk, Chrome, CDP URL, display state, optional extras, and recommended mode.
Development
uv sync --extra dev
uv run --extra dev ruff check .
uv run --extra dev pytest
uv build
Publish only the new version files:
UV_PUBLISH_TOKEN=... uv publish dist/mcp_server_linkedin_zero-0.2.0*
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_server_linkedin_zero-0.2.0.tar.gz.
File metadata
- Download URL: mcp_server_linkedin_zero-0.2.0.tar.gz
- Upload date:
- Size: 204.9 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1a93af8ec71c23b9df22f077a7da05e44a4df02125a4c975da1270ad3805dec8
|
|
| MD5 |
c953ca251ef18e7a6acd8bab457b408b
|
|
| BLAKE2b-256 |
2c2317cf68598c96bb9ac7306917be7702e910cb885cb5812861f4c16c26ce87
|
File details
Details for the file mcp_server_linkedin_zero-0.2.0-py3-none-any.whl.
File metadata
- Download URL: mcp_server_linkedin_zero-0.2.0-py3-none-any.whl
- Upload date:
- Size: 43.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bb65028568222fd422e80b19d22509382a13a363955c2cf8501895adced0327
|
|
| MD5 |
3303a29acc1f8432a03798c2d6292853
|
|
| BLAKE2b-256 |
29ecf42d8b01ffda29676e5f905cdafeff63778ef777e46eebbed2d5d608e670
|