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

MCP server

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
All reasons and checks
Russian stack

andreytepaykin/hh-mcp

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/andreytepaykin-hh-mcp

Detects 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-mcp

Or 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.

Install in Cursor

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.

Install in VS Code

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-mcp

Or 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.

You will need: Node.js

Checked against the repository on Sep 25, 2026, commit d71ea92.

Text for your agent

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-mcp

Tokenless 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 salary

Limitations

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

Official

A self-hosted knowledge base with block-level references and a built-in MCP server for connecting AI agents to your notes

MCP serverMedium risk46.5KRepository stars
Editors’ pick

A CLI for every Google Workspace API with JSON output and agent skills: Drive, Gmail, Calendar, Sheets and more

CLIHigh risk31.2KRepository stars
Editors’ pick

Local search over Markdown notes, docs and meeting transcripts: keywords, semantic search and reranking, with an MCP server

CLIMedium riskNo VPN needed30.1KRepository stars
Editors’ pick

A task manager for AI-driven development: breaks a PRD into dependent tasks and guides the agent through them via MCP or CLI

MCP serverMedium risk28.1KRepository stars
Foxx AIhh-mcp: 52 tools for hh.ru

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.