job-search-mcp
Discovers job listings via Google Jobs search.
Fetches exact application fields from Greenhouse ATS to generate tailored applications.
Allows searching and discovering job listings from Indeed, a major job board.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@job-search-mcpFind new job listings matching my profile."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
job-search-mcp
Infrastructure for running a job search with Claude Code. Point it at a folder with your CV + a small config; it discovers roles, fetches each company's exact application fields, drafts non-trivial applications (positioning, not just autofill), and renders a navigable, offline dashboard with one-click copy for every field. Nothing is auto-submitted — you review and send.
Works two ways: as a set of Claude Code skills + an MCP server (talk to Claude), or as a CLI.
What it does
Step | Module | Output |
CV → structured profile JSON |
|
|
Discover roles (LinkedIn/Indeed/Naukri/Google) |
|
|
Fetch a job's exact required fields |
| Greenhouse + Ashby = full; Lever/Workday = standard |
Fill an application against those fields |
|
|
Make it non-trivial (reframe + product teardown + proof-map) |
| a |
Render everything to one offline page |
|
|
Design principle — human-in-the-loop. It prepares applications; you submit them. Fully-automated apply bots violate LinkedIn policy (permanent-ban risk) and are out of scope by design.
Related MCP server: Job Search MCP Server
Your data folder
You keep your inputs and outputs in one folder, separate from this repo. Point the tool at it with
--data-dir or the JOBSEARCH_DATA env var.
my-jobsearch/
profile.json # from parse-cv, or copy examples/profile.example.json
config.json # optional; copy examples/config.example.json
companies.json # optional; a curated target list (Claude can research one)
nontrivial_kits.json # optional; pre-authored per-company kits
output/jobs.json # written by the tool
applications/*.json # written by the tool
dashboard.html # written by the toolSetup
python3 -m venv .venv && source .venv/bin/activate # Python 3.10+
pip install -r requirements.txt
export ANTHROPIC_API_KEY=… # optional: LLM CV-parsing + auto-drafted non-trivial kitsUse it — CLI
D=~/my-jobsearch
python -m src.cli --data-dir $D parse-cv --cv ~/MyCV.pdf # CV -> profile.json
python -m src.cli --data-dir $D scrape # -> output/jobs.json
python -m src.cli --data-dir $D apply --url "<job_url>" # -> applications/<company>.json (+ non-trivial kit)
python -m src.cli --data-dir $D dashboard # -> dashboard.html
open $D/dashboard.html # or: python -m http.server -d $DUse it — Claude Code (MCP + skills)
Add the MCP server (see
.mcp.json) and setJOBSEARCH_DATAto your folder.In a Claude Code session in this repo, just ask: "find jobs", "apply to ", "make this application non-trivial", "build my dashboard". The skills in
.claude/skills/drive the backend; the MCP server (src/mcp_server.py) exposes the same as callable tools (get_profile,read_jobs,refresh_jobs,get_application_fields,generate_application,make_nontrivial,score_triviality,build_dashboard,list_companies).
What "non-trivial" means
A trivial application restates your CV in the form's fields — the axis an ATS reduces to keywords.
A non-trivial one changes what the reader thinks they're hiring for: it reframes the role onto
an axis where you win, carries a witness only you could produce (a short teardown of their
product through your lens), and maps every claim to a real fact in your CV (the honesty gate —
unbacked claims are flagged, never invented). See src/nontrivial.py and the make-nontrivial skill.
Tests
python -m tests.adversarial # offline
python -m tests.adversarial --net # + live ATS probesHonest caveats
Scraping ToS: Naukri/LinkedIn/Indeed prohibit automated scraping. For personal, low-volume use the practical risk is IP rate-limiting, not litigation — run modestly and pair with each board's own saved-search alerts. If a board returns nothing, it's likely a temporary block.
Fetch failures are surfaced, never hidden. If a company's real form can't be loaded, the template is flagged
fetch_failedand the dashboard shows a red banner — verify on the apply page.Salary/notice/relocation are marked
TODO_CONFIRMand surfaced for review; the tool never guesses them.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zetetic-Dhruv/job-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server