salary-mcp
Salary MCP Server (salary-mcp)
Сервер Model Context Protocol (MCP), предоставляющий LLM прямой программный доступ к реальным публичным зарплатным бенчмаркам IT-рынка из Djinni (djinni.co) и DOU (jobs.dou.ua/salaries/).
⚡ Быстрый старт (опубликованный пакет на PyPI)
salary-mcp опубликован на PyPI и может быть запущен мгновенно, без ручного клонирования репозитория.
1. Запуск через Stdio (по умолчанию)
Стандартный ввод/вывод для настольных AI-клиентов (Claude Desktop, Cursor, Antigravity, Zed):
# Instant run with uvx (no installation needed)
uvx salary-mcp
# Or with pipx
pipx run salary-mcp
# Or install via pip
pip install salary-mcp
salary-mcp2. Запуск через HTTP / SSE (удалённый сервер)
Режим Server-Sent Events (SSE) для удалённых развёртываний, контейнеров и веб-клиентов:
# Start SSE HTTP server on port 8000
uvx salary-mcp --transport sse --host 0.0.0.0 --port 8000Ваш MCP-клиент может подключиться к: http://localhost:8000/sse
Related MCP server: PayHub MCP Server
🔌 Конфигурации MCP-клиентов
Claude Desktop (claude_desktop_config.json)
Режим Stdio (рекомендуется):
{
"mcpServers": {
"salary-mcp": {
"command": "uvx",
"args": ["salary-mcp"]
}
}
}Режим HTTP / SSE:
{
"mcpServers": {
"salary-mcp": {
"url": "http://localhost:8000/sse"
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"salary-mcp": {
"command": "uvx",
"args": ["salary-mcp"]
}
}
}🌐 Источники данных и архитектура извлечения
Сервер получает данные исключительно с действующих официальных веб-порталов Djinni и DOU:
1. Djinni (https://djinni.co/salaries/)
Формат эндпоинта:
https://djinni.co/salaries/?category={category}&exp={exp}&english_level={level}Метод извлечения: скрапинг в реальном времени по запросу скользящих 30-дневных метрик найма платформы Djinni.
Извлекаемые данные:
Ожидания кандидатов: зарплатные ожидания между 25-м и 75-м перцентилями и рассчитанная медиана.
Вакансии компаний: диапазоны зарплатных предложений в активных вакансиях.
Активность рынка: счётчики в реальном времени активных онлайн-кандидатов и открытых вакансий.
Распределение зарплат: полная гистограмма зарплатных корзин, извлечённая напрямую из данных встроенных графиков.
2. DOU (https://jobs.dou.ua/salaries/)
Источник эндпоинта: основной набор данных виджета, напрямую загружаемый страницей
https://jobs.dou.ua/salaries/(https://s.dou.ua/files/lenta/salary-widget_jun_2026_v3/data/swd-medians.csv).Метод извлечения: извлекает срезы официальных статистических квартилей ($q1$, $median$, $q3$), размеры выборок респондентов ($count$) и уровни грейдов ($title$).
Поддержка исторических данных: доступны запросы к конкретным историческим волнам опросов через параметр
as_of_date(например,'2025-12','2026-06'); по умолчанию используется последняя доступная волна.
❓ Почему данные провайдера DOU могут отличаться от того, что показывает веб-интерфейс сайта
При запросах к DOU через salary-mcp вы можете иногда замечать небольшие различия между возвращаемой статистикой и тем, что отображается в интерактивном интерфейсе jobs.dou.ua/salaries/:
Пороговые значения размера выборки во фронтенде:
На публичном сайте скрипты построения графиков DOU часто применяют минимальный порог размера выборки (обычно $\ge 15-20$ респондентов).
Когда в конкретной группе по опыту респондентов меньше (например, $11$ респондентов для 9 лет опыта в Data Science), график на сайте скрывает или затеняет столбец с пометкой "Недостатньо анкет" (недостаточно данных).
Базовый аналитический набор данных DOU сохраняет точное рассчитанное значение медианы для этих респондентов, которое
salary-mcpвозвращает корректно.
Агрегация категорий и фильтрация по конкретной должности:
Выбор широкой категории (например, "Data & Analytics" или "Management") в веб-интерфейсе агрегирует все суброли вместе.
Запросы по конкретным должностям (например,
Middle Data ScientistилиJunior HR Specialist) сопоставляются с конкретным уровнем должности в наборе данных.
Выпуски волн опросов:
По умолчанию
salary-mcpвсегда выбирает самую последнюю официальную волну опроса (например,2026-06). Если веб-интерфейс сайта отображает более раннюю волну или другую статью, указаниеas_of_dateобеспечивает полное соответствие.
🛠️ Справочник MCP-инструментов
get_djinni_salaries
Получает из Djinni зарплатные ожидания кандидатов и распределения зарплатных предложений по вакансиям в реальном времени.
Аргументы:
role(string, required): целевая роль (например,"Software Engineer","QA","DevOps","HR").specialization(string, optional): технология или область (например,"Python","React","HR").experience_years(integer, optional): годы опыта (например,0,2,5).english_level(string, optional): уровень владения английским (например,"intermediate","advanced").
get_dou_salaries
Получает из DOU официальные бенчмарки и перцентили зарплатных опросов.
Аргументы:
role(string, required): роль или категория (например,"Software Engineer","Data Science").specialization(string, optional): язык или суброль (например,"Python","Data Scientist").experience_years(integer, optional): годы профессионального опыта.seniority(string, optional): уровень грейда ("Junior","Middle","Senior","Lead","Architect").city(string, optional): фильтр по локации (например,"Kyiv","Lviv","Remote").as_of_date(string, optional): дата опроса в форматеYYYY-MM(например,"2025-12","2026-06"). По умолчанию — последняя доступная.
compare_salaries
Сравнивает зарплатные бенчмарки Djinni и DOU бок о бок с дифференциальным анализом.
Аргументы:
role(string, required): целевая роль.specialization(string, optional): технология или специализация.experience_years(integer, optional): годы опыта.seniority(string, optional): уровень грейда для сопоставления с DOU.as_of_date(string, optional): целевая дата опроса для сравнения с DOU.
list_specializations
Выводит список доступных ролей, технологий, грейдов, локаций и исторических дат опросов.
Аргументы:
provider(string, optional): область выбора ("all","djinni","dou"). По умолчанию —"all".
🛠️ Локальная разработка
# Clone and install dependencies
git clone https://github.com/propsi4/salary-mcp.git
cd salary-mcp
poetry install
# Run test suite
poetry run pytest
# Run linter and type checks
poetry run ruff check . --fix
poetry run ruff format .
poetry run mypy src tests📄 Лицензия
Лицензия MIT. Подробности см. в LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
CareerProof MCP gives AI agents direct access to a professional-grade career and workforce intelligence platform. Two namespaces: atlas_* for HR/TA teams (candidate evaluation, batch shortlisting, competency scoring, interview generation, JD analysis, custom eval frameworks, research reports) and ceevee_* for professionals (CV optimization, career positioning, salary intelligence, market reports). Backed by RAG knowledge from 50+ premium research sources (McKinsey, BCG, HBR, Gartner, WEF)
Search remote jobs, compare salaries, create alerts, and request user-confirmed apply links.
SEO & marketing toolkit for AI agents: GA4, Search Console, AdSense, GTM, PageSpeed, Trends.
EU pay transparency (Directive 2023/970) and French Egapro readiness assistant. Public data only.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceUS + EU salary benchmarking, pay transparency compliance, and semantic endpoints. 1,400+ US occupations, 28 EU countries. MCP server for AI agents.MIT
- FlicenseNot gradedqualityDmaintenanceEnables querying real disclosed salary data across 20 regions, with tools to search jobs, retrieve salary statistics, and find similar roles.-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to search and analyze LinkedIn jobs with advanced filters, salary requirements, and market insights through natural language.21 npmMIT
- AlicenseAqualityBmaintenanceEnables querying open job postings directly from company applicant-tracking systems (Greenhouse, Ashby, Lever), finding a company's job board, listing and comparing roles, and accessing salary data, all without scraping or API keys.322 PyPIMIT