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
🎨 System Flow
🔌 Works With
- ✅ Claude Desktop (Fully verified)
- ✅ Claude Code (Fully verified)
- ✅ Cursor (Fully verified)
- ✅ VS Code + Copilot (Fully verified)
- ✅ Cline / Roo Code (Fully verified)
- ✅ Any standard Stdio/HTTP MCP client
📊 Feature Comparison
Compare LinkedIn MCP Zero against the next most popular alternatives:
| Feature | stickerdaniel (2.3k★) | Other MCP Servers | LinkedIn MCP Zero (10/10) |
|---|---|---|---|
| Zero-Login Public Tools | ❌ None | ⚠️ 0-2 tools | ✅ 30+ Public Tools |
| Semantic AI Resume Matching | ❌ None | ❌ None | ✅ Yes (TF-IDF & LLM-guided) |
| Local DOCX/PDF Parsing | ❌ None | ❌ None | ✅ Yes (Docling & PyMuPDF) |
| Iterative Progress Reporting | ❌ None | ❌ None | ✅ Yes (MCP Context.report_progress) |
| Wired OpenTelemetry Traces | ❌ None | ❌ None | ✅ Yes (Batch OTel Tracing) |
| Enterprise OAuth 2.1 Security | ❌ None | ❌ None | ✅ Yes (Remote Introspection Middleware) |
| One-Click Diagnostic CLI | ❌ None | ❌ None | ✅ Yes (--doctor verification) |
| Interactive CLI setup | ❌ None | ❌ None | ✅ Yes (Automated Configurator) |
| Zero-Configuration Setup | ❌ None | ⚠️ Complex docker | ✅ Yes (Pure Python / uvx direct) |
Install In One Command
| Client | Command |
|---|---|
| Claude Desktop | uvx --refresh-package linkedin-mcp-zero linkedin-mcp-zero --install-client claude-desktop |
| Claude Code | uvx --refresh-package linkedin-mcp-zero linkedin-mcp-zero --install-client claude-code |
| Cursor | uvx linkedin-mcp-zero --install-client cursor |
| VS Code | uvx linkedin-mcp-zero --install-client vscode |
| Any stdio client | uvx linkedin-mcp-zero |
uvx linkedin-mcp-zero --doctor
Verify after install:
uvx --refresh-package linkedin-mcp-zero linkedin-mcp-zero --verify-client claude-desktop
Browser mode:
uvx --refresh-package linkedin-mcp-zero linkedin-mcp-zero --install-client claude-desktop --with-extra browser
Tool Inventory
Default Tools: 30 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 |
| 24 | smart_match_jobs |
AI-powered job matching using client LLM | Local/public |
| 25 | generate_cover_letter |
Tailored cover letter using client LLM | Local/public |
| 26 | analyze_salary_offer |
AI-powered salary analysis using client LLM | Local/public |
| 27 | personalized_job_hunt |
Interactive job search preferences | Local/public |
| 28 | confirm_export |
Export jobs with user confirmation | Local |
| 29 | get_resume_insights_advanced |
Advanced AI-powered resume insights | Local |
| 30 | deep_industry_analysis |
Full industry analysis with progress updates | Local/public |
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 |
|---|---|---|
| 31 | get_my_profile |
Read your profile |
| 32 | get_person_profile |
Read a public/person profile page |
| 33 | search_people |
People search through browser |
| 34 | get_my_connections |
Read your connection list |
| 35 | get_inbox |
Recent conversations list |
| 36 | get_conversation |
Read a conversation thread |
| 37 | get_feed |
Read home feed posts |
| 38 | get_notifications |
Read notifications |
| 39 | get_sidebar_profiles |
Suggested/sidebar profiles |
| 40 | get_company_employees |
Company people page |
| 41 | check_session |
Check CDP/login readiness |
Gated Private-Risk Tool: +1
| # | Tool | Feature |
|---|---|---|
| 42 | get_profile_voyager |
Voyager/private API placeholder, disabled by default |
Default mode exposes 30 usable tools: 29 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 | 30 | Safe local/public tools; no LinkedIn login required |
| Browser enabled | 41 | Adds 11 read-only browser tools; needs Chrome/CDP login |
| Browser + Voyager | 42 | 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 linkedin-mcp-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 linkedin-mcp-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 linkedin-mcp-zero --print-config --client claude-desktop
uvx linkedin-mcp-zero --print-config --client vscode
Claude Desktop and Cursor use:
{
"mcpServers": {
"linkedin-zero": {
"command": "/absolute/path/to/uvx",
"args": ["linkedin-mcp-zero"]
}
}
}
VS Code uses:
{
"servers": {
"linkedin-zero": {
"command": "/absolute/path/to/uvx",
"args": ["linkedin-mcp-zero"]
}
}
}
Doctor
uvx linkedin-mcp-zero --doctor
uvx linkedin-mcp-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/linkedin_mcp_zero-0.3.2*
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 linkedin_mcp_zero-0.3.3.tar.gz.
File metadata
- Download URL: linkedin_mcp_zero-0.3.3.tar.gz
- Upload date:
- Size: 962.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"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 |
e84221dd421383414a44145017fd9bc58954f12c9e30141613c9f6af894b793a
|
|
| MD5 |
23673eb60176006b4d601f0c767dc629
|
|
| BLAKE2b-256 |
f25f564bf2bbd13031b5f58895e903c804d017ad80a19314127c83204773f78e
|
File details
Details for the file linkedin_mcp_zero-0.3.3-py3-none-any.whl.
File metadata
- Download URL: linkedin_mcp_zero-0.3.3-py3-none-any.whl
- Upload date:
- Size: 62.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"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 |
fc113e4aeddb7b1424c0fb7ce92ee30d0d5a39d03586bb58f6fa7820105cf650
|
|
| MD5 |
5a1b04f6f98c06233301af50614638d4
|
|
| BLAKE2b-256 |
12b738830486c3f45698a055f8f27d240c19accb204896bbfb85b374e87ef1e8
|