ats-mcp-server: jobs from hh.ru and ATS platforms

ats-mcp-server

An MCP server that aggregates vacancies from hh.ru and the public Greenhouse, Ashby, Lever, Workable and Bayt APIs into one format without HTML scraping

MCP server

Low risk

We rate an entry low when it mostly gives the agent instructions and reference material.

Why this level

  • Only reads public job listings and does not submit applications on the user's behalf
  • The local database and search run on the user's own infrastructure; only requests to source APIs go outside
All reasons and checks
Russian stack

alexvozhak/ats-mcp-server

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/ats-mcp-server

Detects the agents on your machine, checks the risk and pins the version.

Other ways to install

Assembled automatically, review before installing.

Run in a terminal

claude mcp add --transport stdio --env 'API_KEY=<your API_KEY>' --env NODE_ENV=production ats-mcp-server -- node

Or add to the file .mcp.json, in the project

{
  "mcpServers": {
    "ats-mcp-server": {
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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": {
    "ats-mcp-server": {
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

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

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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":"ats-mcp-server","type":"stdio","command":"node","args":[],"env":{"API_KEY":"<your API_KEY>","NODE_ENV":"production"}}'

Or add to the file .vscode/mcp.json, in the project

{
  "servers": {
    "ats-mcp-server": {
      "type": "stdio",
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

If the file already exists, add the server inside the servers key.

Keys and settings

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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 ats-mcp-server --env 'API_KEY=<your API_KEY>' --env NODE_ENV=production -- node

Or add to the file ~/.codex/config.toml, for all projects

[mcp_servers.ats-mcp-server]
command = "node"
args = []
env = { API_KEY = "<your API_KEY>", NODE_ENV = "production" }

If the file already exists, append the block to the end.

Keys and settings

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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

gemini mcp add -s user -e 'API_KEY=<your API_KEY>' -e NODE_ENV=production ats-mcp-server node

Or add to the file ~/.gemini/settings.json, for all projects

{
  "mcpServers": {
    "ats-mcp-server": {
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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": {
    "ats-mcp-server": {
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

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

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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": {
    "ats-mcp-server": {
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

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

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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": {
    "ats-mcp-server": {
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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": {
    "ats-mcp-server": {
      "type": "local",
      "command": [
        "node"
      ],
      "environment": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

If the file already exists, add the server inside the mcp key.

Keys and settings

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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": {
    "ats-mcp-server": {
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

If the file already exists, add the server inside the context_servers key.

Keys and settings

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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": {
    "ats-mcp-server": {
      "command": "node",
      "args": [],
      "env": {
        "API_KEY": "<your API_KEY>",
        "NODE_ENV": "production"
      }
    }
  }
}

If the file already exists, add the server inside the mcpServers key.

Keys and settings

API_KEYsecret, required
API ключ для доступа к провайдерам
ANOTHER_KEYsecret, 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 26, 2026, commit db46d22.

Text for your agent

Clone https://github.com/alexvozhak/ats-mcp-server, run npm ci, copy .env.example to .env and fill in keys, start Meilisearch with docker compose up -d, build with npm run build and run npm start, then call search_all or search_hh to search jobs.

Other ways from the author
npm ci && cp .env.example .env && docker compose up -d && npm run build && npm start

Full setup from the README: dependencies, Meilisearch infrastructure, build and run.

This is third-party code. Review the repository files before installing.

What it does

Each job source connects through its own provider behind a shared interface: four ATS platforms via their public APIs, plus two job boards, hh.ru and the Middle East board Bayt. The search_all tool searches every source at once, search_hh searches hh.ru alone, get_job_details returns a listing's details by id, get_stats computes statistics over the collected jobs, and exclude_jobs/unexclude_job hide or restore listings in results. Data is stored in SQLite, search runs on Meilisearch, and hh.ru responses use a dedicated typed Zod schema. Adding a new source, per the author, means writing one provider class.

Who it is for. For job seekers and recruiting-tool developers who want one MCP instead of scraping each job board and ATS separately.

Good fit when

  • You need to search several sources, including hh.ru, in a single query
  • You need structured job data without parsing an HTML page
  • You need to collect statistics or keep a local list of excluded listings

Not a fit when

  • You only need hh.ru: the server is broader than necessary and requires standing up Meilisearch and Docker infrastructure
  • You need resume search, applications or other hh.ru employer features: the server only searches vacancies
  • You need a stable library: part of the code sits in src/poc as experiments for individual providers

Example request

Find Python developer jobs in Moscow on hh.ru and across the international ATS sources at once

Limitations

The project is version 0.1.0 from a single author. Running it needs infrastructure: Docker Compose with Meilisearch, environment variables in .env for the sources. Some providers (Bayt) are scraped via Crawlee/Playwright rather than a pure API, which is more fragile to site changes. The provider proof-of-concept code lives in a separate src/poc folder and is not part of the main server.

How to disable. Stop the server (npm run mcp:stop or docker compose down) and remove it from your MCP client configuration.

MCP

Transport
stdio
Authentication
not required

Security check

  • Only reads public job listings and does not submit applications on the user's behalf
  • The local database and search run on the user's own infrastructure; only requests to source APIs go outside

README in short

The README describes an MCP server that aggregates jobs from public ATS and job-board APIs, including hh.ru, without HTML scraping. It lists five MCP tools, the stack (TypeScript, Node.js 24, MCP SDK, Zod, SQLite, Meilisearch, Vitest), and setup steps via npm and Docker Compose. It separately mentions provider proof-of-concept checks under src/poc. MIT license.

FAQ

Can I search hh.ru only?

Yes, the search_hh tool searches hh.ru exclusively, while search_all combines every connected source.

Do I need Docker to run it?

Yes, search runs on Meilisearch, which is started with docker compose up -d alongside supporting services.

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 AIats-mcp-server: jobs from hh.ru and ATS platforms

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