Skip to content

Releases: SanthaKumar-K-2004/linkedin-mcp-zero

v0.4.8: Online Cloud Hosting, Remote Client Configs & Strict Type Safety

Choose a tag to compare

@SanthaKumar-K-2004 SanthaKumar-K-2004 released this 30 Oct 09:26

Highlights in v0.4.8

  • Online Cloud Hosting Out-of-the-Box: Production blueprints and 1-click configs for Render (render.yaml), Railway (railway.json), Fly.io (fly.toml), Docker GHCR (docker run), and Kubernetes (deploy/k8s.yaml).
  • Remote AI Client Integration: Production configuration recipes for Anthropic Claude Desktop, Cursor IDE, VS Code, and Google Antigravity connecting over remote SSE with API key security.
  • Strict Type Safety: Resolved all static type checking diagnostics and parameter annotations across all 59 repository files with zero regressions.
  • Defense-in-Depth Security: Unprivileged non-root Docker container (UID 1001), timing-safe API key validation, sliding-window rate limiting, and zero-login safe mode by default.
  • Verification: 100% test pass rate (151/151 tests), zero Mypy issues, zero Bandit security vulnerabilities.

v0.4.7: Google Antigravity Integration & Production Release

Choose a tag to compare

@SanthaKumar-K-2004 SanthaKumar-K-2004 released this 30 Oct 08:55

Changelog

[0.4.7] - client integration & clean packaging

Added

  • Native Google Antigravity IDE & agent framework support via --install-client antigravity
  • Idempotent PyPI release publishing with skip-existing: true
  • Clean production repository packaging, removing internal audit notes and scratch files
  • Dedicated tool integration badges and documentation for Claude, Cursor, VS Code, and Google Antigravity

[0.4.6] - hardening release

Fixed (search)

  • co company filter was sent as LinkedIn f_C (needs a numeric id) so company names were ignored; now filtered client-side, numeric ids still use f_C
  • Duplicate jobs in results (deduped per page and across pages); results now include an ISO posted date
  • Retries: only 429/5xx are retried, Retry-After is honored, 404/403 fail fast and no longer trip the circuit breaker
  • Results are re-ranked by title relevance to the query (stable, never drops rows)

Added (skills)

  • config/skill_taxonomy.py: aliases (k8s, golang, postgres...), categories and curated relations incl. IT-support/helpdesk/CRM/automation skills
  • Fast single-regex extraction, canonical names, guards for ambiguous words (Go, R, C, AI, Spring...)
  • expand_skill_cluster works on a fresh install (curated + learned, ranked, 2-hop adjacent); skill_gap() with transferable-skill credit
  • Multi-word skills are no longer split by whitespace when indexing jobs

Security

  • Constant-time API key comparison, brute-force throttling before key check, safe header decoding
  • OAuth now fails closed (missing/unverifiable token => 401); OAuth mode no longer also demands the API key
  • API key file created with 0600 atomically; secrets hidden from settings repr/logs
  • Resume reader blocks hidden paths and files over 10 MB
  • Safe mode (default): browser session, li_at, Voyager and the stealth Patchright fallback are disabled; set LINKEDIN_MCP_SAFE_MODE=false to opt in (account-ban risk)
  • Removed User-Agent rotation (evasion + mismatched TLS fingerprint); stable UA
  • fastmcp pinned <5 (unpinned install broke with mcp 2.x)

Earlier changes

Added

  • Semantic job matching with sentence-transformers
  • MCP Resources, Prompts, Sampling, and Elicitation
  • IBM Docling AI resume parsing
  • API key auth + CORS + rate limiting for HTTP transport

Fixed

  • Path traversal vulnerability in resume parsing
  • Browser engine race condition
  • Duplicate return in get_job_details

Changed

  • Replaced httpx with curl_cffi for TLS impersonation
  • Replaced BeautifulSoup with selectolax (10x faster)
  • Heavy deps moved to optional extras

v0.4.6: Security Hardening & Skill Taxonomy Overhaul

Choose a tag to compare

@SanthaKumar-K-2004 SanthaKumar-K-2004 released this 30 Oct 08:34

Changelog

[0.4.6] - hardening release

Fixed (search)

  • co company filter was sent as LinkedIn f_C (needs a numeric id) so company names were ignored; now filtered client-side, numeric ids still use f_C
  • Duplicate jobs in results (deduped per page and across pages); results now include an ISO posted date
  • Retries: only 429/5xx are retried, Retry-After is honored, 404/403 fail fast and no longer trip the circuit breaker
  • Results are re-ranked by title relevance to the query (stable, never drops rows)

Added (skills)

  • config/skill_taxonomy.py: aliases (k8s, golang, postgres...), categories and curated relations incl. IT-support/helpdesk/CRM/automation skills
  • Fast single-regex extraction, canonical names, guards for ambiguous words (Go, R, C, AI, Spring...)
  • expand_skill_cluster works on a fresh install (curated + learned, ranked, 2-hop adjacent); skill_gap() with transferable-skill credit
  • Multi-word skills are no longer split by whitespace when indexing jobs

Security

  • Constant-time API key comparison, brute-force throttling before key check, safe header decoding
  • OAuth now fails closed (missing/unverifiable token => 401); OAuth mode no longer also demands the API key
  • API key file created with 0600 atomically; secrets hidden from settings repr/logs
  • Resume reader blocks hidden paths and files over 10 MB
  • Safe mode (default): browser session, li_at, Voyager and the stealth Patchright fallback are disabled; set LINKEDIN_MCP_SAFE_MODE=false to opt in (account-ban risk)
  • Removed User-Agent rotation (evasion + mismatched TLS fingerprint); stable UA
  • fastmcp pinned <5 (unpinned install broke with mcp 2.x)

Earlier changes

Added

  • Semantic job matching with sentence-transformers
  • MCP Resources, Prompts, Sampling, and Elicitation
  • IBM Docling AI resume parsing
  • API key auth + CORS + rate limiting for HTTP transport

Fixed

  • Path traversal vulnerability in resume parsing
  • Browser engine race condition
  • Duplicate return in get_job_details

Changed

  • Replaced httpx with curl_cffi for TLS impersonation
  • Replaced BeautifulSoup with selectolax (10x faster)
  • Heavy deps moved to optional extras

v0.4.5 - Critical Search Fixes, Rich Metadata & Parameter Docs

Choose a tag to compare

@SanthaKumar-K-2004 SanthaKumar-K-2004 released this 30 Oct 08:16

What's Changed in v0.4.5

🐛 Critical Bug Fixes & Improvements

  1. Search Result Deduplication: Fixed double-matching CSS selector in Lexbor parser (.base-card, .job-search-card) and introduced cross-pagination seen_ids set. Every job listing now appears exactly once.
  2. Robust Company Filtering: co filter now properly handles LinkedIn's guest search requirements. If numerical URN IDs are supplied, passes f_C; otherwise automatically appends company to keyword queries and applies client-side substring matching on company and title.
  3. Exact ISO Posting Dates: Search results now extract exact post dates (posted: YYYY-MM-DD) from the semantic HTML5 <time datetime="..."> tag alongside the relative age (age: 4d), eliminating vague "2mo" timestamps.
  4. Rich Metadata: Extracted hiring badges (benefits: Actively Hiring), compensation hints (sal), and verified applicant counts (applicants: Over 200 applicants) on job detail pages.
  5. Relevance Scoring: Added automated query relevance percentage scoring (relevance: 85%) to help AI agents prioritize exact keyword matches.
  6. Self-Documenting MCP Tool Parameters: Refactored all tool parameters using typing.Annotated and pydantic.Field(description=...). LLM agents no longer guess what kw, loc, co, or id mean.

🛡️ Architecture & Transparency

  • Explicit Account Risk Disclosures: Categorized all tools into clear tiers. Added prominent risk warnings on the 11 opt-in browser tools (--enable-browser) explaining that reading authenticated sessions carries platform risk, whereas the 33 default tools carry 100% zero account risk.
  • Privacy Model Transparency: Explicitly documented that all resume parsing (PDF/DOCX/TXT) executes strictly in-memory on local machines, with zero data sent to external servers unless the user triggers client LLM reasoning tools.
  • Reconciled Tool Catalog: Reconciled the 33 default tools vs 11 opt-in browser tools vs 1 voyager tool (45 total catalog tools).

🧪 Tests & Quality

  • Added tests/test_critique_bug_fixes.py covering deduplication, rich fields, applicant extraction, and parameter schemas.
  • 125 unit tests passing (100% pass rate).
  • Bandit security audit: 0 issues identified.
  • Strict mypy typecheck: clean across all 41 modules.

v0.4.4 - Production Cloud Hosting & Multi-Platform Deployment

Choose a tag to compare

@SanthaKumar-K-2004 SanthaKumar-K-2004 released this 30 Oct 07:31

What's Changed in v0.4.4

🚀 Production Cloud Hosting & Multi-Platform Deployment

  • Universal Cloud Port & Host Binding: Full support for standard PaaS environment variables (PORT, HOST, API_KEY, TRANSPORT, LOG_LEVEL) via Pydantic AliasChoices, ensuring instant plug-and-play on Render, Railway, Fly.io, AWS App Runner, and Google Cloud Run.
  • Container Health Check & Probe Bypass: Exempted public health endpoints (/, /health, /healthz, /ping) and discovery routes (/.well-known/*) from API key middleware and OAuth challenge, completely eliminating container crash loops and failed load balancer probes.
  • Root Service Status Route: Added public GET / endpoint returning real-time service health, version 0.4.4, and 45-tool MCP catalog status for instant browser verification.
  • Multi-Cloud Ready Configuration Files:
    • docker-compose.yml for single-command self-hosting with persistent SQLite cache.
    • fly.toml for Fly.io edge deployment (fly launch).
    • railway.json for Railway 1-click cloud deployment.
    • deploy/k8s.yaml for enterprise Kubernetes production clusters with configured liveness/readiness probes.
    • deploy/linkedin-mcp-zero.service for Linux systemd production service management.
  • 1-Click Render Deploy: Added verified Deploy to Render button and step-by-step setup in README.

💼 Integrated Universal ATS Resume Tailoring Engine (from v0.4.3)

  • Real-time ATS match scoring and job-description keyword extraction across all 9 industry disciplines (Software, Product, Marketing, Sales, Finance, Operations, HR, UX/UI Design, Healthcare/Pharma).
  • Full live support for 45 tools and zero synthetic/mock data.

Full Changelog: v0.4.3...v0.4.4

v0.4.3 - Universal Multi-Role ATS Resume Tailoring & Cross-Industry Engine

Choose a tag to compare

@SanthaKumar-K-2004 SanthaKumar-K-2004 released this 30 Oct 07:16

What's Changed in v0.4.3 🚀

  • Universal Multi-Role Resume Tailoring: Expanded from software-only to 16 standardized professional domains (Product Management, Data Analytics & BI, Growth & Digital Marketing, Sales & BD, Finance & Accounting, Operations & Supply Chain, Human Resources & Talent Acquisition, Design & Creative, Customer Success, and Healthcare & Clinical Nursing).
  • New MCP Tool: tailor_resume (tr): Evaluates resumes against live target jobs, calculates ATS compatibility score, generates Google XYZ accomplishment formulas, provides domain-specific action verbs, and recommends standard ATS section headings.
  • Synchronized Tool Catalog: Expanded production tools from 44 to 45 production tools (with 33 zero-login tools).
  • Zero Mock Data Guarantee: Authentic, research-backed skill taxonomies and live LinkedIn API extraction with zero synthetic placeholders.
  • Docker & Container Images: Live on GitHub Container Registry at ghcr.io/santhakumar-k-2004/linkedin-mcp-zero:0.4.3 and ghcr.io/santhakumar-k-2004/linkedin-mcp-zero:latest.
  • PyPI Release: Live on PyPI as pip install linkedin-mcp-zero==0.4.3.