JobLens MCP

JobLens MCP

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

Category
Visit Server

README

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):

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:

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.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured