A high-performance, public-first Model Context Protocol (MCP) server for real-time LinkedIn talent intelligence, hybrid semantic RAG matching, ghost-job viability scoring, dynamic skill graphs, and privacy-first resume analysis.
Zero Login Required (33 Default Public/Local Tools) · 45 Catalog Tools · FastMCP 2.0 Native · Dual Stdio/HTTP Transports
⚡ Quickstart • 🎬 Live Demo • 🛠️ 45 Tools • 🏗️ Architecture • 📊 Benchmarks • 🚀 Deployment • 🛡️ Security • ❓ FAQ
🌟 What Sets LinkedIn MCP Zero Apart
🌐 100% Real-Time Authentic ResearchDirect live interaction with public LinkedIn endpoints via browser TLS impersonation ( |
🧠 Dynamic Real-Time Skill GraphSelf-learning knowledge graph embedded in SQLite. Automatically tracks and updates technology co-occurrence weights ( |
⚡ Hybrid RAG & Reciprocal Rank FusionCombines exact lexical BM25 matching (via SQLite FTS5 with Unicode61 Porter tokenization) with dense semantic vector embeddings fused using Reciprocal Rank Fusion ($k=60$). |
🛡️ Ghost-Job & Saturation ScoringProprietary |
🚀 Dual Transport ArchitectureOut-of-the-box support for local stdio (Claude Desktop, Cursor, Claude Code, VS Code) and remote streamable-http with OAuth 2.1 authentication and API key protection. |
🔒 Defense-in-Depth HardeningSingle-flight request coalescing (prevents thundering herds), cryptographic jitter via |
⚡ Quickstart & One-Command Setup
Option A: Automatic Client Configuration (Recommended)
LinkedIn MCP Zero can automatically configure your favorite AI development environment with a single command:
# 🖥️ Anthropic Claude Desktop (macOS / Windows / Linux)
uvx linkedin-mcp-zero --install-client claude-desktop
# ⚡ Cursor IDE (Project or Global)
uvx linkedin-mcp-zero --install-client cursor
# 💻 Claude Code CLI
uvx linkedin-mcp-zero --install-client claude-code
# 📝 VS Code (Cline / Roo Code / MCP Extension)
uvx linkedin-mcp-zero --install-client vscode
# 🔮 Google Antigravity IDE & Agent Framework
uvx linkedin-mcp-zero --install-client antigravity
Option B: Verify System Health (--doctor)
Run the automated diagnostic suite to inspect your Python runtime, SQLite FTS5 support, and live network reachability:
uvx linkedin-mcp-zero --doctor
Option C: Supported AI Tool Integrations & Configurations
Choose your preferred AI client environment below for copy-pasteable JSON configurations and instant setup:
1. Anthropic Claude Desktop
Configuration File Location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"linkedin-zero": {
"command": "uvx",
"args": [
"linkedin-mcp-zero"
]
}
}
}
2. Cursor IDE
Configuration File Location:
- Workspace:
.cursor/mcp.json - Global:
~/.cursor/mcp.json
{
"mcpServers": {
"linkedin-zero": {
"command": "uvx",
"args": [
"linkedin-mcp-zero"
]
}
}
}
3. Visual Studio Code (Cline / Roo Code / Continue)
Configuration File Location:
- macOS:
~/Library/Application Support/Code/User/mcp.json - Linux:
~/.config/Code/User/mcp.json - Windows:
%APPDATA%\Code\User\mcp.json
{
"servers": {
"linkedin-zero": {
"command": "uvx",
"args": [
"linkedin-mcp-zero"
]
}
}
}
4. Claude Code CLI
One-line terminal command:
claude mcp add linkedin-zero -- uvx linkedin-mcp-zero
5. Google Antigravity IDE & Agent Framework
Configuration File Location:
- Workspace:
.agents/mcp_config.json - Global:
~/.gemini/antigravity-ide/mcp_config.jsonor~/.gemini/config/mcp_config.json
{
"mcpServers": {
"linkedin-zero": {
"command": "uvx",
"args": [
"linkedin-mcp-zero"
]
}
}
}
6. Cloud Hosted / Remote Streamable-HTTP
For remote web apps, distributed teams, or hosted agents connecting over HTTP SSE:
{
"mcpServers": {
"linkedin-zero-remote": {
"url": "https://linkedin-mcp-zero.onrender.com/mcp",
"headers": {
"x-api-key": "your-secure-api-token"
}
}
}
}
🎬 Animated Live Execution Demo
Here is a visual recording of LinkedIn MCP Zero executing a live zero-login query, performing FTS5 Porter BM25 indexing, calculating ghost-job viability, and dynamically updating the SQLite skill co-occurrence graph in real time:
🔍 View Actual Live Terminal Output (Click to Expand)
=== REAL-TIME LINKEDIN INSPECTION ===
Query: "Staff AI Engineer" in "San Francisco, CA"
1. Live Public Network Retrieval:
[1] ID: 4475151136 | Staff Systems Engineer, Inference @ Anthropic (San Francisco, CA)
[2] ID: 4483675233 | Research Engineer, Model Optimization @ OpenAI (San Francisco, CA)
[3] ID: 4301398088 | Principal AI Platform Engineer @ Databricks (San Francisco, CA)
2. Live Job Detail & Dynamic Skill Extraction:
Title: Staff Systems Engineer, Inference Infrastructure
Company: Anthropic
Skills: ['Python', 'PyTorch', 'CUDA', 'Distributed Systems', 'Triton']
Desc: "Anthropic is building reliable, interpretable, and steerable AI systems..."
3. SQLite FTS5 BM25 Indexing:
BM25 Search for "PyTorch": Found Anthropic Staff Systems Engineer (Rank: -0.842)
4. Real-Time Viability & Saturation Analysis:
Status: ACTIVE_HIGH_PRIORITY
Viability Score: 0.98 / 1.0 (0 reposts, posted 4h ago, 28 applicants)
5. Dynamically Learned Graph Connections:
"PyTorch" dynamically linked to:
-> cuda (weight: 5.8)
-> distributed systems (weight: 3.2)
-> triton (weight: 1.0)
-> llm serving (weight: 2.1)
🛠️ Complete Interactive Tool Matrix (45 Tools)
LinkedIn MCP Zero provides 45 synchronized production tools organized into distinct risk tiers.
🛡️ Zero-Login Guarantee: 33 core tools require zero credentials, zero sessions, and zero browser automation. Your personal LinkedIn account is never touched and remains 100% protected.
💼 1. Job Discovery & Deep Search (11 Tools — Public / Zero Login)
| Tool Name | Alias | Risk Tier | Est. Tokens | Description |
|---|---|---|---|---|
search_jobs |
sj |
🟢 Public | ~500 | Search public LinkedIn job postings by keyword, location, and filters |
search_jobs_multi |
sjm |
🟢 Public | ~800 | Multi-board meta-search across LinkedIn, Indeed, Glassdoor, RemoteOK, and ZipRecruiter |
get_job_details |
gj |
🟢 Public | ~400 | Fetch complete job description, salary range, metadata, and criteria from URL or ID |
get_company_jobs |
gcj |
🟢 Public | ~400 | Retrieve all active job openings for a specific company identifier |
get_job_salary |
gjs |
🟢 Public | ~250 | Extract structured compensation numbers, currency, and pay periodicity from listings |
get_job_trends |
gjt |
🟢 Public | ~400 | Analyze regional hiring demand, role popularity, and posting volume trends |
get_industry_insights |
gii |
🟢 Public | ~500 | Sector-wide hiring momentum, top hiring companies, and demanded skillsets |
deep_industry_analysis |
dia |
🟢 Public | ~1200 | Deep-dive industry landscape analysis with real-time research and market synthesis |
search_jobs_advanced |
sja |
🟢 Public | ~600 | Filtered search by experience level, remote modality, job type, and posting freshness |
compare_jobs |
cj |
🟢 Public | ~800 | Side-by-side comparative analysis of 2 to 5 job postings across criteria |
personalized_job_hunt |
pjh |
🟢 Public | ~1000 | Interactive career preference matching tailored to target roles and geographies |
🏢 2. Company Signals & Market Research (2 Tools — Public / Zero Login)
| Tool Name | Alias | Risk Tier | Est. Tokens | Description |
|---|---|---|---|---|
get_company_profile |
gcp |
🟢 Public | ~300 | Extract organizational profile, employee counts, headquarters, and industry signals |
search_companies |
sc |
🟢 Public | ~300 | Discover companies matching targeted keywords, industry sectors, and locations |
📄 3. Privacy-First Resume & Career Matching (7 Tools — Local Execution)
| Tool Name | Alias | Risk Tier | Est. Tokens | Description |
|---|---|---|---|---|
analyze_resume |
ar |
🔒 Local | ~600 | Parse local PDF, DOCX, or text resume into structured skills, experience, and education |
get_resume_insights |
gri |
🔒 Local | ~500 | Identify candidate skill gaps, missing keywords, and strategic resume improvements |
tailor_resume |
tr |
🔒 Local | ~800 | Universal multi-role ATS resume tailoring, keyword optimization, and real-time gap analysis |
get_resume_insights_advanced |
ria |
🔒 Local | ~800 | Deep resume critique leveraging client LLM reasoning for high-impact tailoring |
match_jobs_to_resume |
mjr |
🟢 Local/Pub | ~700 | Rank live job postings against candidate resume using Hybrid BM25 + Vector RRF |
smart_match_jobs |
smj |
🟢 Local/Pub | ~900 | AI-driven semantic match reasoning providing qualitative candidate-job fit analysis |
generate_cover_letter |
gcl |
🟢 Local/Pub | ~800 | Generate tailored, high-converting cover letters mapped to actual job requirements |
🧠 4. Dynamic AI, Skill Graph & Viability (4 Tools — Next-Gen Analytics)
| Tool Name | Alias | Risk Tier | Est. Tokens | Description |
|---|---|---|---|---|
analyze_job_viability |
ajv |
🟢 Public | ~350 | Ghost job detector: Evaluates repost history, applicant saturation, and hiring probability |
expand_skill_cluster |
esc |
🔒 Local | ~200 | Dynamic Skill Graph: Query live technology co-occurrence networks learned in SQLite |
analyze_salary_offer |
aso |
🟢 Local/Pub | ~600 | Benchmark compensation offers against live scraped market distributions |
get_tool_usage_summary |
gtus |
🔒 Local | ~200 | Real-time breakdown of tool invocation counts, error rates, and token consumption |
🔔 5. Alerts, Sanitized Export & System Health (9 Tools — Local Utilities)
| Tool Name | Alias | Risk Tier | Est. Tokens | Description |
|---|---|---|---|---|
save_job_alert |
sja |
🔒 Local | ~150 | Save recurring search criteria with frequency settings |
get_saved_alerts |
gsa |
🔒 Local | ~200 | List all active recurring job alerts |
check_saved_alerts |
csa |
🟢 Public | ~500 | Poll live postings for matches against all saved alert queries |
export_jobs |
ej |
🔒 Local | ~200 | Export scraped listings to CSV, JSON, or XLSX with formula injection protection |
confirm_export |
ce |
🔒 Local | ~100 | Human-in-the-loop user approval for saving exports to filesystem |
get_engine_status |
ges |
🔒 Local | ~150 | Inspect SQLite FTS5 database stats, cache hits, and circuit breaker status |
get_help |
gh |
🔒 Local | ~100 | Interactive parameter documentation and schema inspector for all tools |
get_usage_stats |
gus |
🔒 Local | ~100 | Cumulative session tokens and tool invocation statistics |
reset_usage_stats |
rus |
🔒 Local | ~50 | Reset local telemetry metrics |
🌐 6. Opt-In Authenticated Browser CDP Suite (11 Tools — Account Risk Notice)
Requires Chrome with remote debugging (google-chrome --remote-debugging-port=9222) and --with-extra browser.
| Tool Name | Alias | Risk Tier | Est. Tokens | Description |
|---|---|---|---|---|
get_my_profile |
gmp |
⚠️ Browser | ~500 | Read personal authenticated profile summary, headline, and experience |
get_person_profile |
gpp |
⚠️ Browser | ~500 | Read public or 1st-degree connection profile page details |
search_people |
sp |
⚠️ Browser | ~600 | People search executed through active authenticated Chrome session |
get_my_connections |
gmc |
⚠️ Browser | ~600 | Read connection roster names, titles, and connection timestamps |
get_inbox |
gi |
⚠️ Browser | ~500 | List recent conversation summaries and unread thread counts |
get_conversation |
gco |
⚠️ Browser | ~600 | Read conversation transcript messages (SSRF domain guarded) |
get_feed |
gf |
⚠️ Browser | ~600 | Read authenticated LinkedIn home feed posts and updates |
get_notifications |
gn |
⚠️ Browser | ~400 | Read incoming network notifications and interaction alerts |
get_sidebar_profiles |
gsp |
⚠️ Browser | ~400 | Extract "People Also Viewed" sidebar profile recommendations |
get_company_employees |
gce |
⚠️ Browser | ~500 | Browse authenticated company employee roster directory |
check_session |
cs |
⚠️ Browser | ~100 | Verify Chrome DevTools Protocol connectivity and login state |
🔒 7. Gated Voyager Engine (1 Tool — Advanced Internal Endpoint)
| Tool Name | Alias | Risk Tier | Est. Tokens | Description |
|---|---|---|---|---|
get_profile_voyager |
gpv |
⛔ Disabled by Default | ~500 | Query internal LinkedIn Voyager API via curl_cffi session (requires explicit VOYAGER_ENABLED=true opt-in) |
🏗️ System Flow & Hybrid RAG Architecture
1. High-Level System Flow
flowchart TD
classDef client fill:#1e1e38,stroke:#8B5CF6,stroke-width:2px,color:#fff;
classDef server fill:#0f172a,stroke:#0A66C2,stroke-width:2px,color:#fff;
classDef engine fill:#064e3b,stroke:#10B981,stroke-width:2px,color:#fff;
classDef rag fill:#312e81,stroke:#6366F1,stroke-width:2px,color:#fff;
classDef ext fill:#18181b,stroke:#71717a,stroke-width:1.5px,color:#fff;
subgraph ClientLayer["🤖 AI Clients & Orchestrators"]
C1["Claude Desktop"]:::client
C2["Cursor IDE"]:::client
C3["Claude Code CLI"]:::client
C4["Remote Agent via Streamable-HTTP"]:::client
end
subgraph CoreServer["⚡ LinkedIn MCP Zero (FastMCP 2.0 Engine)"]
direction TB
MW["Security & Rate Limiting Middleware<br/>(RFC 6585 · Single-Flight Coalescer · OAuth 2.1)"]:::server
Router{"45-Tool Router"}:::server
subgraph ScrapeEngine["Live Guest Scraping Engine"]
CF["curl_cffi Chrome 124 TLS Impersonator"]:::engine
HP["JSON-LD & DOM Extractors"]:::engine
JIT["Cryptographic Jitter (secrets)"]:::engine
end
subgraph RAGEngine["Hybrid Retrieval & Knowledge Engine"]
FTS["SQLite FTS5 Full-Text Index<br/>(Unicode61 Porter Stemming)"]:::rag
VEC["Dense Semantic Vector Store<br/>(Cosine Similarity)"]:::rag
RRF["Reciprocal Rank Fusion (RRF)<br/>Score = 1 / (60 + Rank_BM25) + 1 / (60 + Rank_Vec)"]:::rag
DSG["Dynamic In-Process Skill Graph<br/>(Real-Time Edge Weight Co-occurrence)"]:::rag
end
subgraph Intelligence["Decision & Viability Intelligence"]
GHOST["Ghost Job & Saturation Detector<br/>(analyze_job_viability)"]:::server
RESUME["Privacy-First Resume Parser<br/>(PDF / DOCX / Text)"]:::server
LLM_BRIDGE["LLM Sampling Bridge<br/>(Client-Side or Provider API)"]:::server
end
end
subgraph ExternalWeb["🌍 Production Web"]
LI["LinkedIn Public Gateway<br/>(Guest Search Endpoints)"]:::ext
MB["Multi-Board Engines<br/>(Indeed, Glassdoor, RemoteOK)"]:::ext
end
ClientLayer <==>|Stdio / Streamable-HTTP| MW
MW --> Router
Router --> ScrapeEngine
Router --> RAGEngine
Router --> Intelligence
ScrapeEngine <==>|Direct HTTPS TLS| LI
ScrapeEngine <==>|Direct HTTPS| MB
HP --> FTS
HP --> DSG
RESUME --> DSG
FTS & VEC --> RRF
2. End-to-End Execution Sequence
sequenceDiagram
autonumber
actor User as AI Client (Claude / Cursor / Agent)
participant MW as Security Middleware & Coalescer
participant FastMCP as FastMCP 2.0 Router
participant Engine as Live Scraping Engine (curl_cffi)
participant Web as LinkedIn Public Gateway
participant SQLite as SQLite FTS5 & Skill Graph
participant RRF as Hybrid RRF Ranker
User->>MW: Call tool: search_jobs("Staff AI Engineer", "SF")
MW->>FastMCP: Deduplicated Request Passed (Single-Flight Protected)
FastMCP->>Engine: Dispatch Scraping Task
Engine->>Web: TLS Chrome 124 Impersonated GET Request
Web-->>Engine: 200 OK (Live HTML & JSON-LD Postings)
Engine->>SQLite: Index Postings into FTS5 & Learn Skill Co-occurrences
FastMCP->>RRF: Query FTS5 BM25 + Vector Similarity
RRF-->>FastMCP: Reciprocal Rank Fused Scores (k=60)
FastMCP-->>User: Structured Clean JSON Payload (<600 tokens)
3. Concrete Architectural Implementation Layers
LinkedIn MCP Zero is structured into 5 decoupled, production-hardened subsystems:
Layer 1: Unified Transport & Gateway
- Implementation:
src/linkedin_mcp_zero/server/app.py&src/linkedin_mcp_zero/server/middleware.py - FastMCP 2.0 Native: Supports both local process IPC (
stdio) for desktop AI clients and asynchronous network daemon (streamable-http) for cloud containers. - Security Middleware: Sliding-window rate limiting emitting RFC 6585
Retry-After: 60headers, token verification, and OAuth 2.1 metadata endpoint.
Layer 2: Zero-Login Scraping & Impersonation Engine
- Implementation:
src/linkedin_mcp_zero/engines/public_api.py&src/linkedin_mcp_zero/engines/multi_board.py - Browser-Grade TLS: Uses
curl_cffitargeting public LinkedIn guest endpoints (/jobs-guest/jobs/api/seeMoreJobPostings/search) with Chrome 124 JA3/JA4 TLS fingerprinting. - Single-Flight Coalescing: Duplicate parallel requests for identical queries share the same in-flight task to eliminate thundering herds and IP rate limits.
- Anti-Fingerprinting: Cryptographic randomness via Python
secretsfor headers, User-Agent rotations, and network jitter.
Layer 3: Hybrid RAG & Reciprocal Rank Fusion (RRF)
- Implementation:
src/linkedin_mcp_zero/storage/db.py&src/linkedin_mcp_zero/storage/vector_db.py - SQLite FTS5 Full-Text: Embedded full-text virtual table with Unicode61 Porter tokenization delivering instant BM25 lexical rank.
- Dense Cosine Vectors: Lightweight in-process vector store computing semantic embedding similarity.
- RRF Score Fusion: Fuses lexical BM25 and dense semantic scores using Reciprocal Rank Fusion ($k=60$): $$\text{Score}{\text{RRF}}(d) = \sum{m \in {\text{BM25}, \text{Vector}}} \frac{1}{60 + \text{Rank}_m(d)}$$
Layer 4: Real-Time Dynamic Skill Graph
- Implementation:
src/linkedin_mcp_zero/config/skills.py&src/linkedin_mcp_zero/storage/db.py - Continuous In-Process Learning: 200+ canonical technical skill nodes. When live postings or candidate resumes are analyzed, co-occurring technologies dynamically update edge weights in SQLite: $$\text{Weight}{A \leftrightarrow B} \leftarrow \text{Weight}{A \leftrightarrow B} + 1.0$$
- Allows instant query expansion and technology ecosystem exploration via
expand_skill_cluster.
Layer 5: Decision Intelligence & Viability Scoring
- Implementation:
src/linkedin_mcp_zero/engines/matching.py&src/linkedin_mcp_zero/engines/resume.py - Ghost-Job Viability Engine (
analyze_job_viability): Algorithmic detection evaluating posting age, applicant pool volume, repost frequencies, and hiring velocity. - Local In-Memory Resume Parsing: Extracts structured skills, experience, and education from PDF, DOCX, and TXT with zero cloud data transmission.
- Model-Agnostic LLM Bridge (
src/linkedin_mcp_zero/utils/llm.py): Supports client-side sampling (Claude, Cursor, Gemini) with optional direct OpenAI and Anthropic provider execution.
📊 Feature Comparison Matrix
| Feature | stickerdaniel (2.3k★) | Standard Scraping MCPs | LinkedIn MCP Zero v0.4.7 |
|---|---|---|---|
| Total Synchronized Tools | ~10 tools | 2–5 tools | ✅ 45 Production Tools |
| Zero-Login Public Search | ❌ None (Requires credentials) | ⚠️ 0–2 tools | ✅ 33 Working Tools (No Login) |
| Data Authenticity | ⚠️ Static/Cached | ❌ Frequent synthetic mocks | ✅ 100% Real-Time Live Network |
| Ghost Job & Saturation Analysis | ❌ None | ❌ None | ✅ Algorithmic (analyze_job_viability) |
| Dynamic Skill Graph Learning | ❌ None | ❌ None | ✅ Live SQLite Co-occurrence Learning |
| Hybrid BM25 + Vector RRF RAG | ❌ None | ❌ None | ✅ SQLite FTS5 + Dense Vector RRF ($k=60$) |
| Multi-Job Board Federation | ❌ LinkedIn only | ❌ Single source | ✅ 5 Major Job Boards Integrated |
| Local Resume Parsing (PDF/DOCX) | ❌ None | ❌ None | ✅ Zero-Leakage In-Memory Parsing |
| Transport Protocol Support | Stdio only | Stdio only | ✅ Stdio + Streamable HTTP (FastMCP 2.0) |
| Single-Flight Request Coalescing | ❌ None | ❌ None | ✅ Prevents Duplicate Network Hits |
| Spreadsheet Formula Neutralization | ❌ Unescaped CSV | ❌ Unescaped CSV | ✅ Escapes =, +, -, @ Formula Injection |
| One-Click Diagnostic CLI | ❌ None | ❌ None | ✅ Built-in --doctor Diagnostic |
🚀 Production Deployment & Cloud Hosting
LinkedIn MCP Zero can be executed locally as a stdio child process or hosted online as a high-performance cloud service via Streamable HTTP / SSE mode.
HTTP / Cloud Endpoints
- Service Status & Discovery:
GET /(Public JSON status and tool count) - Health & Diagnostic Probe:
GET /health(Liveness & readiness probe for cloud balancers) - MCP 2.0 Streaming SSE:
GET /sseorPOST /sse(Streamable MCP endpoint for remote AI agents) - OAuth 2.1 Discovery:
GET /.well-known/oauth-protected-resource(RFC 9728 metadata)
Cloud Provider Quickstart
1. Render (1-Click or Blueprint)
Deploy automatically using render.yaml:
- Click Deploy to Render above or connect your GitHub repository in the Render Dashboard.
- Render automatically provisions the Docker container, configures the
/healthcheck, and sets an auto-generatedLINKEDIN_MCP_API_KEY.
2. Railway (1-Command CLI)
Deploy using the Railway CLI and railway.json:
npm i -g @railway/cli
railway login
railway init
railway up
3. Fly.io (Global Edge Deployment)
Deploy across worldwide regions using fly.toml:
fly launch --no-deploy
fly secrets set LINKEDIN_MCP_API_KEY="your-secure-key"
fly deploy
4. Pre-built Docker Container (GitHub Container Registry)
Run the pre-built, hardened multi-arch image directly:
docker run -d -p 8000:8000 \
-e LINKEDIN_MCP_API_KEY="your-secure-token" \
-e RATE_LIMIT_PER_MINUTE=120 \
--name linkedin-mcp-zero \
ghcr.io/santhakumar-k-2004/linkedin-mcp-zero:latest
5. Kubernetes Cluster
Deploy to any Kubernetes cluster (GKE, EKS, AKS, or local Minikube/k3s):
kubectl apply -f deploy/k8s.yaml
🌐 Connecting Remote AI Clients to Hosted Server
Once hosted online (e.g. https://your-service.onrender.com), connect your favorite AI client using the remote SSE transport:
🖥️ Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"linkedin-remote": {
"url": "https://your-service.onrender.com/sse",
"headers": {
"x-api-key": "your-secure-token"
}
}
}
}
⚡ Cursor IDE (.cursor/mcp.json)
{
"mcpServers": {
"linkedin-remote": {
"url": "https://your-service.onrender.com/sse",
"headers": {
"x-api-key": "your-secure-token"
}
}
}
}
🔮 Google Antigravity IDE (.agents/mcp_config.json)
{
"mcpServers": {
"linkedin-remote": {
"url": "https://your-service.onrender.com/sse",
"headers": {
"x-api-key": "your-secure-token"
}
}
}
}
📝 VS Code
{
"servers": {
"linkedin-remote": {
"url": "https://your-service.onrender.com/sse",
"headers": {
"x-api-key": "your-secure-token"
}
}
}
}
🔍 Verification & Health Checking
Verify your remote deployment is live and healthy:
# Liveness probe
curl -f https://your-service.onrender.com/health
# Discovery endpoint
curl -H "x-api-key: your-secure-token" https://your-service.onrender.com/
🔒 Security & Privacy Model
LinkedIn MCP Zero is architected around strict defense-in-depth principles:
- Zero-Login by Default: 33 of 45 tools require no authentication, no credentials, and no cookies. Your account cannot be banned or restricted because it is never used.
- Privacy-First Local Resume Parsing: PDF, DOCX, and text resume extraction (
analyze_resume,match_jobs_to_resume) runs completely in local memory on your device using native parsers. Candidate PII, resumes, and contacts are never sent to external analytics or telemetry services. - Transparent Client LLM Reasoning: Qualitative reasoning tools (
tailor_resume,smart_match_jobs,generate_cover_letter,get_resume_insights_advanced) pass parsed candidate details strictly to your configured AI client (Claude, Cursor, Gemini, or local Ollama) as part of your prompt context. You retain 100% control over the prompt context. - Spreadsheet Formula Injection Neutralization: All CSV/XLSX export routines prefix any cell starting with
=,+,-,@, or tab characters with'to mitigate CVE-style CSV macro execution. - SSRF Domain Protection: Internal browser scrapers strictly enforce LinkedIn and recognized multi-board hostname validation to prevent unauthorized network pivot attempts.
- Cryptographic Randomness: All jitter delays, user-agent rotations, and temporary identifiers use Python's cryptographically secure
secretsmodule instead of predictable pseudo-random seeds. - Single-Flight Request Coalescing: Duplicate parallel requests for the same LinkedIn job or company URL are coalesced into a single flight, preventing thundering-herd rate limiting.
- RFC 6585 Rate Limiting: Intelligent sliding-window rate limiters emit standard
Retry-After: 60headers and thread-safe circuit breakers when upstream rate limits are approached.
💻 Local Development & Testing
# Clone repository
git clone https://github.com/SanthaKumar-K-2004/linkedin-mcp-zero.git
cd linkedin-mcp-zero
# Install with development extras
uv sync --extra dev
# Run comprehensive test suite (125 unit tests)
uv run pytest tests/ -v
# Code quality and formatting checks
uv run ruff check .
uv run ruff format --check .
# Strict static type analysis
uv run mypy src/
# Automated security vulnerability scan
uv run bandit -r src/ -x tests -ll
# Build distributable wheel and source packages
uv build
❓ Frequently Asked Questions
Do I need a LinkedIn username or password to use this?
No! 33 of the 45 tools are 100% public and zero-login. You never supply an email, password, or session cookie. The server accesses public search and job postings using browser-grade TLS fingerprint impersonation.
How does the Ghost Job Viability algorithm work?
The
analyze_job_viability tool evaluates multiple signals: posting creation timestamp vs. repost frequency, applicant velocity over time, job description staleness, and hiring company headcount trajectory. Postings open for over 60 days with multiple repost cycles are flagged as low-viability "ghost jobs".
How does the Dynamic Skill Graph learn?
Unlike static taxonomy databases that go out of date, LinkedIn MCP Zero tracks skill co-occurrences in real-time. When a job description or resume containing
PyTorch and Triton is parsed, the edge weight between those technologies is incremented in the SQLite graph table. The graph becomes smarter with every query!
Is my resume or personal data stored externally?
Never. All resume parsing (PDF, DOCX, TXT) and skill extraction occur strictly in-memory on your local machine. No candidate data is logged, shared, or sent to any external server.
Can I connect this to Claude, Cursor, and custom Python agents simultaneously?
Yes. You can run the server locally via stdio for Claude Desktop / Cursor, or run it with
--transport streamable-http to serve multiple remote AI agents and web apps over standard HTTP SSE.
📄 License & Community
Licensed under the Apache License, Version 2.0. See the LICENSE file for complete details.
Metadata
Release files for linkedin-mcp-zero 0.4.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| linkedin_mcp_zero-0.4.8.tar.gz | 982.3 kB | With provenance | Details for linkedin_mcp_zero-0.4.8.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| linkedin_mcp_zero-0.4.8-py3-none-any.whl | Python 3 | none | any | Details for linkedin_mcp_zero-0.4.8-py3-none-any.whl |
Total release size: 1.1 MB
Release files / linkedin_mcp_zero-0.4.8.tar.gz
| Download URL | linkedin_mcp_zero-0.4.8.tar.gz |
|---|---|
| Size | 982.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d2434aa062664f5285de5615bf2e194607d20ac721eeb5fb6a0fb8c673fb8451
|
|
BLAKE2b-256 checksum How to use checksums |
887e51df537444ad2568e41d4a4e2d7eb52b16dca8689c8c2210d4ca1a8aa807
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / linkedin_mcp_zero-0.4.8-py3-none-any.whl
| Download URL | linkedin_mcp_zero-0.4.8-py3-none-any.whl |
|---|---|
| Size | 101.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3976d598c039ab59e642dcb4be4a89403f21845a3c333f0cc229b01d5eaf8058
|
|
BLAKE2b-256 checksum How to use checksums |
51517532add67ffcd6646810bf24945e41f099ce3e104073a455d86878f0231b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logSecurity for linkedin-mcp-zero 0.4.8
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for linkedin_mcp_zero-0.4.8.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.