hh-mcp: 52 tools for hh.ru
hh-mcp
An MCP server with 52 tools over the official hh.ru API: vacancy search with no token, employer resumes and applications with one, and salary statistics
Medium risk
We rate an entry medium when the tool runs code, makes network calls or reads project files. Check what exactly it does before installing.
Why this level
- With an employer token it returns candidate resumes and application correspondence
- There are no tools to submit applications or send messages, only reading, but the token should still be kept secret
Install
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/andreytepaykin-hh-mcpDetects the agents on your machine, checks the risk and pins the version.
Other ways to install
Run in a terminal
claude mcp add --transport stdio hh -- npx -y @andrey-tepaykin/hh-mcpOr add to the file .mcp.json, in the project
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
The button opens the agent and offers to add the server. If nothing happens, copy the config below.
Add to the file ~/.cursor/mcp.json, for all projects
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the mcpServers key. For a single project, put the same block into .cursor/mcp.json.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
The button opens the agent and offers to add the server. If nothing happens, copy the config below.
Run in a terminal
code --add-mcp '{"name":"hh","type":"stdio","command":"npx","args":["-y","@andrey-tepaykin/hh-mcp"]}'Or add to the file .vscode/mcp.json, in the project
{
"servers": {
"hh": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the servers key.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Run in a terminal
codex mcp add hh -- npx -y @andrey-tepaykin/hh-mcpOr add to the file ~/.codex/config.toml, for all projects
[mcp_servers.hh]
command = "npx"
args = ["-y", "@andrey-tepaykin/hh-mcp"]If the file already exists, append the block to the end.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file ~/.gemini/settings.json, for all projects
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file ~/.config/devin/mcp_config.json, for all projects
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the mcpServers key. Legacy Cascade keeps the MCP config in ~/.codeium/windsurf/mcp_config.json.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Formerly Windsurf.
Add to the file cline_mcp_settings.json, for all projects
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the mcpServers key. Open the settings file in Cline: MCP Servers tab, Configure MCP Servers.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file .roo/mcp.json, in the project
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
A fork of Roo Code, same .roo folders.
Add to the file opencode.json, in the project
{
"mcp": {
"hh": {
"type": "local",
"command": [
"npx",
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the mcp key.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file ~/.config/zed/settings.json, for all projects
{
"context_servers": {
"hh": {
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the context_servers key.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add to the file .codeassistant/mcp.json, in the project
{
"mcpServers": {
"hh": {
"command": "npx",
"args": [
"-y",
"@andrey-tepaykin/hh-mcp"
]
}
}
}If the file already exists, add the server inside the mcpServers key.
Keys and settings
HH_ACCESS_TOKENsecret, optional
Replace the values in angle brackets with your own. Keys never go into install links and are not stored by us.
Add the server with claude mcp add hh -- npx -y @andrey-tepaykin/hh-mcp for tokenless search, or claude mcp add hh -e HH_ACCESS_TOKEN=your-token -- npx -y @andrey-tepaykin/hh-mcp for resume and application access; get a token at dev.hh.ru/admin.
Other ways from the author
claude mcp add hh -- npx -y @andrey-tepaykin/hh-mcpTokenless install, only public vacancy search is available.
This is third-party code. Review the repository files before installing.
What it does
The server wraps the official hh.ru API (dev.hh.ru) in 52 tools. Without a token you get vacancy search by keyword, region, role, salary and experience, a vacancy card, similar and related vacancies, employer profiles and vacancies, salary statistics from listings, and every reference dictionary: regions, industries, metro stations, languages, skills. With an employer token (HH_ACCESS_TOKEN) you additionally get resume search, application cards, an ATS pipeline by stage, candidate messaging history and manager statistics. However, resume search and ATS further require a paid resume-database subscription, otherwise hh.ru returns 403. Responses default to compact LLM-friendly summaries; raw: true returns the full hh.ru JSON. A built-in limiter respects hh.ru's 5 requests-per-second cap and retries on 429 and 5xx with exponential backoff. There's a separate stateless HTTP mode with DNS-rebinding protection, plus a bundled Claude Code /job-search skill with a ready-made search-and-triage workflow.
Who it is for. For job seekers who search vacancies and compare salaries through an agent, and for recruiters with paid hh.ru access who want their application pipeline in chat.
Good fit when
- You need to search hh.ru vacancies by salary, region and experience right from an agent, no token needed
- You need a median salary estimate by role and region
- You have an hh.ru employer token with a paid resume database and need to triage applications and candidate messages
Not a fit when
- You need resume search or application triage but have no employer token with a paid resume-database subscription: hh.ru will return 403
- You want the agent to submit applications or message candidates itself: there are no tools for that, only reading
- You need salary statistics from the official paid data bank without a token and area_id: without them it falls back to an estimate from listings
Example request
Find remote Python developer jobs in Moscow from 300,000 rubles and show the median salaryLimitations
Based on @theyahia/hh-mcp, this is a reworked fork rather than an original idea. Resume search and ATS need not just an employer token but a paid resume-database subscription. Job-seeker and anonymous tokens get 403. The built-in limiter is shared per process, so in HTTP mode with multiple clients they share one 5-requests-per-second budget. HTTP mode listens on localhost only by default; exposing it externally requires configuring HH_ALLOWED_HOSTS, HH_ALLOWED_ORIGINS and authentication yourself.
How to disable. Run claude mcp remove hh in Claude Code, or remove the hh block from mcpServers in your client configuration.
MCP
- Transport
- stdio, http
- Authentication
- API key
| Environment variables | |
|---|---|
| HH_ACCESS_TOKEN secret | An hh.ru OAuth 2.0 bearer token needed for resumes, ATS and employer-scoped endpoints, issued at dev.hh.ru/admin. |
| HH_USER_AGENT | A custom HH-User-Agent that hh.ru requires, recommended format your-app/1.0 (you@example.com). |
| HH_MAX_SCAN_PAGES | Page limit for hh.ru when scanning filtered applications, defaults to 10. |
Security check
- With an employer token it returns candidate resumes and application correspondence
- There are no tools to submit applications or send messages, only reading, but the token should still be kept secret
README in short
The README lists all 52 tools by section (vacancies, resumes, ATS/applications, employers, reference data, salaries), a table of tokenless vs. token modes, install instructions for Claude Desktop, Claude Code, VS Code/Cursor, Windsurf and a separate HTTP mode, environment variables and demo prompts. It states the project is based on @theyahia/hh-mcp. MIT license.
FAQ
Is a token required for vacancy search?
No, vacancy search, cards, reference data and the listing-based salary estimate all work without a token.
Is a plain employer token enough for resume search?
No, it also requires a paid resume-database subscription, otherwise hh.ru returns 403 even with a valid token.
Related
A self-hosted knowledge base with block-level references and a built-in MCP server for connecting AI agents to your notes
A CLI for every Google Workspace API with JSON output and agent skills: Drive, Gmail, Calendar, Sheets and more
Local search over Markdown notes, docs and meeting transcripts: keywords, semantic search and reranking, with an MCP server
A task manager for AI-driven development: breaks a PRD into dependent tasks and guides the agent through them via MCP or CLI