Skip to main content
Glama
ComPanS

hh-vacancy-mcp

by ComPanS
README.md
# HH Vacancy MCP

MCP server for Claude Code that searches HH.ru using an authenticated browser session and returns vacancies matching a resume.

## Features

- TypeScript MCP server over stdio.
- Playwright browser control.
- Chrome/Edge CDP connection to reuse an existing logged-in session.
- Persistent profile mode for Chrome, Edge, or Firefox.
- Local deterministic 0–100 resume matching score.
- Default minimum score: **70**; change it with `set_min_score` or the bundled Claude Code skill.
- No HH.ru credentials are collected or stored.

## Install

```bash
npm install
npx playwright install chromium firefox
npm run build
```

## Claude Code MCP configuration

Add the built server to Claude Code's MCP configuration:

```json
{
  "mcpServers": {
    "hh-vacancy-mcp": {
      "command": "node",
      "args": ["C:/Users/nazmi/Documents/GitHub/hh-vacancy-mcp/dist/src/index.js"]
    }
  }
}
```

## Reuse a logged-in Chrome or Edge session

Close the normal browser instance, then start a separate instance with remote debugging and a dedicated profile. Example on Windows:

```bash
"C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe" --remote-debugging-port=9222 --user-data-dir="C:\\Users\\<you>\\hh-mcp-profile"
```

For Edge, use `msedge.exe` and set browser to `edge` with `set_browser`.
Open `https://hh.ru`, log in manually, then use `set_browser` with mode `cdp` and search. Cookies remain in the browser profile and are never returned by this server.

## Persistent profile mode

Use `set_browser` with `mode: "persistent"` and a profile directory. Open HH.ru and authenticate manually once. Firefox should use persistent mode because it does not provide the CDP connection used here.

## Typical workflow

1. `set_browser` if the default Chrome/CDP settings do not fit.
2. `set_resume` with the resume text.
3. `set_min_score` with a value from 0 to 100, or keep 70.
4. `search_hh_vacancies` with a query and optional area/page limit.

Search is read-only and limited to five result pages per call. HH.ru markup can change; if no cards are found, check the browser session and report the issue rather than guessing.

## Development

```bash
npm run typecheck
npm test
npm run build
```

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct concern: reading settings, updating the score threshold, choosing the browser, storing the resume, and running the search. There is no meaningful overlap between any of the five tools.

Naming Consistency5/5

The naming follows a clear and consistent verb-based pattern: get_settings, set_min_score, set_browser, set_resume, and search_hh_vacancies. The set_ prefix is used uniformly for configuration changes, and the search tool is action-oriented.

Tool Count5/5

Five tools is well-scoped for this focused MCP server. Each tool represents one essential capability for configuring and running HH.ru vacancy searches against a resume.

Completeness5/5

The tool surface covers the full workflow: configure the match threshold, select an authenticated browser, set the resume text, view current settings, and execute the search. No obvious dead ends or missing lifecycle steps are present for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues