naukri-mcp
# naukri-mcp
A local MCP server for **your own** Naukri.com account: search jobs, view job
details, save/apply to jobs, check applied jobs, read your profile, and read
recruiter messages. Modeled on the same pattern as your existing LinkedIn MCP
server (`~/.linkedin-mcp`): a `patchright`-driven stealth Chromium browser
with a persistent profile under `~/.naukri-mcp`, so you log in once by hand
and every tool call afterward reuses that session.
## Before you install: read this
- **This automates your personal Naukri account from your own machine.**
It's the same idea as your LinkedIn setup, not something new in kind.
- **Naukri's Terms of Service, like most job sites, restrict automated /
bot access to accounts.** Using this is a judgment call you're making
about your own account, same as you already made for LinkedIn. Keep call
volume reasonable (don't loop `search_jobs` in a tight loop, don't mass
-apply) to avoid tripping anti-bot defenses or a manual account review.
- **This never sees or handles your password.** `naukri_login` opens a real,
visible Chrome window and you log in (including any OTP) yourself; the
tool only watches for the session cookie that appears afterward.
- **v1 caveat:** the DOM selectors in `extract.py` are my best current read
of naukri.com's markup, not something I could verify against a live,
logged-in session (I don't have your credentials and can't run this from
the cloud without looking like a bot). Some tools may need small selector
fixes after your first real run — that's expected, and I can fix them fast
once you tell me what came back oddly.
## 1. Install (run this yourself — needs your machine's network)
```bash
cd ~/naukri-mcp # wherever you put this folder
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
python3 -m patchright install chromium
```
I can't run `pip install` or the browser download for you — my remote shell
has no network access to your machine, only to my own cloud sandbox (which
is where I could syntax-check the code but not install patchright, since
even my sandbox doesn't have it allowlisted). This one step is on you, same
as it would've been for the original LinkedIn install.
## 2. Register it with Claude Desktop
Open (or create) `~/Library/Application Support/Claude/claude_desktop_config.json`
and add an entry under `mcpServers` — alongside whatever entry is already
there for `linkedin`:
```json
{
"mcpServers": {
"naukri": {
"command": "/absolute/path/to/naukri-mcp/.venv/bin/naukri-mcp",
"args": []
}
}
}
```
Use the absolute path to the `naukri-mcp` script inside the virtualenv you
just created (`which naukri-mcp` after activating `.venv` will print it).
Restart Claude Desktop afterward so it picks up the new server.
If you tell me the exact shape of your existing `"linkedin"` entry (I
couldn't read that file myself — it's outside the folders I'm allowed to
access), I'll match its style exactly instead of guessing the format above.
## 3. First login
From this chat (once the `naukri` tools show up), call:
```
naukri_login
```
A real Chrome window opens on your Mac at naukri.com's login page. Log in
normally. The tool polls for up to 5 minutes and saves your session to
`~/.naukri-mcp/cookies.json` and the persistent profile once it detects
you're in. After that, `naukri_session_status` will report `logged_in: true`
and every other tool runs headless.
## Tool list
| Tool | What it does |
|---|---|
| `naukri_login` | Interactive login handoff |
| `naukri_session_status` | Check if the saved session is still valid |
| `naukri_close_session` | Close the browser to free resources |
| `search_jobs` | Search listings by keywords / location / experience |
| `get_job_details` | Full JD for one job URL |
| `get_recommended_jobs` | Naukri's "recommended for you" list |
| `save_job` | Bookmark a job |
| `get_saved_jobs` | List bookmarked jobs |
| `apply_to_job` | Apply using your existing profile/resume |
| `get_applied_jobs` | List jobs you've applied to |
| `get_my_profile` | Headline, key skills, resume status |
| `get_profile_views` | Who's viewed your profile recently |
| `get_inbox` | Recent recruiter conversations |
| `get_conversation` | Read one conversation's messages |
| `send_message` | Reply to a recruiter |
| `search_companies` | Search the company directory |
| `get_company_profile` | One company's overview/ratings/open roles |
Naukri doesn't have a real equivalent of LinkedIn's social graph (feed,
connections, company employee lists), so those didn't carry over 1:1 —
`apply_to_job` / `get_applied_jobs` / `save_job` / `get_saved_jobs` replace
them with Naukri's actual core value (the job pipeline itself).
## If something breaks on first run
Send me whatever the tool returned (most tools include a `raw_text` or
`note` field precisely for this) and I'll adjust the selectors in
`extract.py`, `tools_jobs.py`, `tools_messages.py`, etc. to match.
TDQS
Scored across 17 tools
Every tool has a clearly distinct purpose: session management, job search/detail/save/apply, profile, messaging, and company search. No two tools overlap in functionality, so an agent can easily select the right one.
Naming is a mix of conventions: some tools use the 'naukri_' prefix (login, status, close) while others use bare verbs like 'search_jobs' or 'get_job_details'. Verb patterns are inconsistent (search vs get vs save), but names remain readable and predictable enough for navigation.
17 tools is slightly above the typical sweet spot but justified for a comprehensive job portal client covering sessions, job actions, profile, messaging, and companies. It never feels bloated or sparse.
The tool surface covers the core job-seeker lifecycle: search, view, save, apply, track applications, manage profile, view recommendations, and message recruiters. Minor gaps exist (no update/delete for saved jobs, no profile editing, no withdrawal of applications) but these are non-critical and easily worked around.