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_idandapp_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_drafttool 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.






