JobLens MCP

rohith-jpg/joblens-mcp
0 starsMITCommunity

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Provides job search, local resume parsing, and resume-to-job matching via official APIs and local file processing.

README.md

JobLens MCP

A Model Context Protocol (MCP) server that gives Claude (or any MCP-compatible AI assistant) structured, live context about jobs and careers: search real job postings, parse a resume locally, and score how well a resume matches a given job — all through official, ToS-compliant APIs and local file parsing. No scraping, no stored platform passwords, no automated browser logins.

Why this exists

Most "LinkedIn scraper" MCP servers automate a real login through Selenium and scrape profile/job pages — which violates LinkedIn's Terms of Service and puts your account at risk. JobLens solves the same underlying problem (give an AI assistant rich job-market context) using a free, official job-search API and local resume parsing instead.

Features

  • Live Job Search — query real job postings (title, company, location, salary range, description) via the Adzuna Jobs API
  • Resume Parsing — extract skills, email, and phone from a local PDF or text resume, entirely on your machine
  • Resume-to-Job Match Scoring — transparent skill-overlap score (0–100) between a parsed resume and any job description, with matched/missing skills listed
  • Search + Match — one call that searches jobs and ranks them by fit to your resume

Architecture

joblens-mcp/
├── src/joblens_mcp/
│   ├── server.py       # MCP server + tool definitions (FastMCP)
│   ├── jobsource.py    # Adzuna API client (swap for any job-board API)
│   └── resume.py        # Local resume parsing + match scoring
├── main.py              # Entry point
├── pyproject.toml
└── requirements.txt

jobsource.py is intentionally isolated from server.py — swapping Adzuna for USAJobs, Indeed's Publisher API, RemoteOK, or Jooble means editing one file, not the MCP tool layer.

Installation

Prerequisites

  • Python 3.10+
  • A free Adzuna API app_id and app_key (instant signup, no scraping involved)

Step 1: Clone the repository

git clone https://github.com/<your-username>/joblens-mcp
cd joblens-mcp

Step 2: Set up environment & install dependencies

Using uv (recommended): ``bash curl -LsSf https://astral.sh/uv/install.sh | sh uv venv source .venv/bin/activate # macOS/Linux uv pip install -e . ``

Or with plain pip: ``bash python -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``

Step 3: Add your API credentials

cp .env.example .env
# then edit .env with your ADZUNA_APP_ID and ADZUNA_APP_KEY

Running the server

uv run main.py
# or
python main.py

Configure Claude Desktop

Add this to your Claude Desktop config (Settings → Developer → Edit Config):

{
  "mcpServers": {
    "joblens": {
      "command": "/path/to/uv",
      "args": ["--directory", "/path/to/joblens-mcp", "run", "main.py"],
      "env": {
        "ADZUNA_APP_ID": "your_app_id",
        "ADZUNA_APP_KEY": "your_app_key"
      }
    }
  }
}

Restart Claude Desktop, then look for the tools (hammer) icon to confirm JobLens is connected.

Example prompts

  • "Search for remote data engineer jobs and tell me which ones best match my resume at /Users/me/resume.pdf."
  • "Parse my resume and tell me what skills I'm missing for a Senior Backend Engineer role."
  • "What job categories does the search API support for the UK?"

Roadmap ideas

  • Swap in additional job-board sources (USAJobs, RemoteOK, Greenhouse public job boards)
  • Add a cover_letter_draft tool that uses match results to draft a tailored cover letter
  • Add caching/rate-limit handling for high-volume searches

License

MIT — see LICENSE.

Acknowledgements

Built using the Model Context Protocol Python SDK and the Adzuna Jobs API.

--- Note: This project deliberately avoids any LinkedIn scraping or automated login. All data sources used are official, public APIs or files the user provides locally.

Related MCP servers

Browse all →