Skip to main content

atomno-mcp-fns-check

MCP-сервер проверки российских контрагентов: ЕГРЮЛ, банкротство, налоговые долги, приставы и арбитражные дела. Для разведки компаний — подключается к Cursor, Claude и любому клиенту MCP.

Russian counterparty check for AI agents.

build version license mcp tests coverage Glama

mcp-fns-check MCP server

Готов к подключению в Claude Desktop, Cursor, Claude Code, Cline и любой другой клиент, совместимый с Model Context Protocol (MCP).


Зачем

AI-агент (Claude, Cursor, etc.) обычно ничего не знает о российских контрагентах: ЕГРЮЛ не индексируется поисковиками нормально, данные в Прозрачном бизнесе ФНС — за POST-запросами и CAPTCHA, ЕФРСБ отдаёт HTML. Этот MCP-сервер даёт агенту семь тулзов, через которые он за один вызов получит полную картину:

  • Кто это: наименование, адрес, ОКВЭД, руководитель.
  • Жив ли: действующее, в ликвидации, банкротство, ликвидировано, реорганизация.
  • Безопасно ли с ним работать: массовый адрес, массовый руководитель, дисквалификация, банкротство, налоговые долги, исполнительные производства, арбитражные дела.

Главный тул — check_contractor(identifier) — принимает ИНН или ОГРН и возвращает агрегированный отчёт с вердиктом (safe_to_proceed / manual_review_required / high_risk_do_not_proceed / impossible_contractor_defunct) и список конкретных рекомендаций.


Быстрый старт

Установка

pip install atomno-mcp-fns-check

Или через uv / pipx:

uv pip install atomno-mcp-fns-check
# или
pipx install atomno-mcp-fns-check

Проверка работы

atomno-mcp-fns-check --version
# → atomno-mcp-fns-check 0.1.1

atomno-mcp-fns-check --help
# → полный список флагов: --transport / --host / --port / --log-level

По умолчанию пакет запускается как stdio-MCP-сервер: агент общается с ним через stdin/stdout JSON-RPC. Напрямую из шелла вы его не «потыкаете» — подключите к MCP-клиенту. Для сетевых сценариев доступен флаг --transport {http,sse,streamable-http} с --host/--port.


Подключение к MCP-клиентам

Cursor

Отредактируйте mcp.json (Cursor → Settings → Cursor Settings → MCP):

{
  "mcpServers": {
    "fns-check": {
      "command": "atomno-mcp-fns-check"
    }
  }
}

Перезапустите Cursor. В чате спросите: «Проверь контрагента ИНН 7707083893» — агент сам вызовет check_contractor.

Claude Desktop

Отредактируйте claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "fns-check": {
      "command": "atomno-mcp-fns-check"
    }
  }
}

Перезапустите Claude Desktop.

Claude Code (CLI)

claude mcp add fns-check atomno-mcp-fns-check

Cline (VS Code)

В cline_mcp_settings.json:

{
  "mcpServers": {
    "fns-check": {
      "command": "atomno-mcp-fns-check",
      "disabled": false,
      "autoApprove": []
    }
  }
}

Тулзы

Тул Назначение Вход Источники
check_contractor Главный. Полная проверка по одному идентификатору + детерминированный вердикт и рекомендации identifier: str (ИНН 10/12 или ОГРН 13/15) все 5
check_inn Базовая карточка ЕГРЮЛ inn: str egrul.nalog.ru
check_ogrn Базовая карточка по ОГРН/ОГРНИП ogrn: str egrul.nalog.ru
get_legal_status Жизненный статус с обогащением inn или ogrn ЕГРЮЛ + ЕФРСБ
get_okveds Коды ОКВЭД с расшифровкой inn или ogrn ЕГРЮЛ + словарь ОКВЭД-2
get_directors_history Текущий руководитель (+ история по мере Open Data) inn: str ЕГРЮЛ
check_for_red_flags 7 проверок риска (4 базовые + 3 расширенные) inn: str все источники

Используемые публичные источники:

  • egrul.nalog.ru — ЕГРЮЛ/ЕГРИП, карточка контрагента.
  • bankrot.fedresurs.ru — ЕФРСБ (Единый федеральный реестр сведений о банкротстве).
  • Открытые данные ФНС, набор «debtam» — налоговая задолженность (локальная выгрузка).
  • service.nalog.ru — живой реестр дисквалифицированных лиц.
  • fssp.gov.ru — Банк данных исполнительных производств ФССП.
  • kad.arbitr.ru — Картотека арбитражных дел.
  • Локальные срезы реестров ФНС — массовые адреса, массовые руководители, дисквалифицированные лица (загружаются скриптом atomno-mcp-fns-etl из Open Data ФНС).

Проверки непредставления налоговой отчётности в наборе нет: публичного источника этих сведений не существует, а отвечать «отчётность сдаётся» без данных сервис не будет.

Пример ответа check_contractor

{
  "identifier": "7707083893",
  "identifier_type": "inn",
  "inn": "7707083893",
  "ogrn": "1027700132195",
  "card": {
    "name": {"full": "ПАО СБЕРБАНК", "short": "СБЕРБАНК"},
    "status": "active",
    "address": {"full": "117997, Г.Москва, УЛ. ВАВИЛОВА, Д. 19", "is_mass_address": false},
    "director": {"full_name": "Греф Г. О.", "position": "Президент"},
    "okved_main": {"code": "64.19", "name": "Денежное посредничество прочее"}
  },
  "legal_status": {"status": "active", "status_label_ru": "Действующее", "sources_checked": ["egrul", "efrsb"]},
  "risks": {"overall_risk_level": "low", "overall_risk_score": 0, "flags": [], "errors": []},
  "verdict_action": "safe_to_proceed",
  "verdict_reason_ru": "Статус «Действующее», уровень риска — low (score 0/100). Препятствий к заключению сделки по открытым источникам не найдено.",
  "recommendations": [
    "По открытым источникам препятствий к заключению сделки не обнаружено. Соблюдайте стандартные меры должной осмотрительности (ст. 54.1 НК РФ): копия устава, приказ на руководителя, договор."
  ],
  "sources": {"sources_queried": ["efrsb", "egrul", "fssp", "kad", "pb_fns", "registries"]},
  "tier": "open",
  "checked_at": "2026-04-24T20:15:00Z"
}

Поведение при сбоях источников

  • ЕГРЮЛ — единственный blocking-источник. Если он недоступен, check_contractor поднимает SourceUnavailableError (агент получит человекочитаемое сообщение).
  • Остальные источники подмешиваются best-effort: CAPTCHA на ФССП, antibot на КАД, 5xx на pb.nalog.ru — всё складывается в risks.errors[] и НЕ валит отчёт. Верхнеуровневый вердикт становится manual_review_required.

Конфигурация

Все настройки — через переменные окружения. Никаких креденшелов не требуется (источники публичные).

Переменная Описание По умолчанию
MCP_FNS_CACHE_DB Путь к SQLite-файлу кэша карточек каталог данных пользователя (%LOCALAPPDATA%/atomno/ или ~/.local/share/atomno/), не папка проекта
MCP_FNS_REGISTRIES_DB Путь к SQLite-файлу реестров (массовые адреса/руководители/дисквалификации) <cache>.registries.sqlite
MCP_FNS_CACHE_TTL_HOURS TTL кэшированных карточек, часов 168 (7 суток)
MCP_FNS_HTTP_TIMEOUT Таймаут HTTP, секунд 15
MCP_FNS_USER_AGENT User-Agent HTTP-клиента atomno-mcp-fns-check/0.1 (+https://github.com/atomno-mcp/mcp-fns-check)
MCP_FNS_LOG_LEVEL Уровень логирования (DEBUG/INFO/WARNING/ERROR) INFO

Шаблон — .env.example.


Локальные реестры ФНС

Реестры массовых адресов / руководителей / дисквалифицированных лиц — это CSV/XML-выгрузки Open Data ФНС. Пакет идёт со встроенным мини-сидом (registries_seed.json, синтетические тестовые записи) — его достаточно, чтобы тулзы работали «из коробки» и показывали флаги на тестовых ИНН.

Для production-проверок обновите реестры полными срезами через CLI atomno-mcp-fns-etl:

atomno-mcp-fns-etl --registry mass_addresses --source ./fns_open_data/ulm.csv --commit
atomno-mcp-fns-etl --registry mass_directors --source ./fns_open_data/uchredt.csv --commit
atomno-mcp-fns-etl --registry disqualified --source ./fns_open_data/disqualified.csv --commit

Источники Open Data:

По умолчанию CLI работает в --dry-run (парсит и печатает sample); для записи нужен явный --commit. Meta-поля <registry>.last_etl, <registry>.last_etl_source, <registry>.last_etl_count сохраняются автоматически — используйте их для cron-мониторинга свежести данных.


Разработка

git clone https://github.com/atomno-mcp/mcp-fns-check
cd mcp-fns-check
python -m venv .venv
source .venv/bin/activate    # Linux/macOS
# .venv/Scripts/activate     # Windows
pip install -e ".[dev]"
pytest -v --cov=src/atomno_mcp_fns_check

Внешние API в тестах никогда не вызываются напрямую — только через respx (мокинг httpx) + локальные фикстуры в tests/fixtures/.


Ограничения

  • Нет history для руководителей — ФНС не отдаёт историю смены через search-API; полная история появится после загрузки Open Data slice ЕГРЮЛ (планируется в v0.5+).
  • ЕФРСБ (банкротство юрлица) для программного запроса закрыт защитой Qrator (403 / проверка «человек или робот»). Автоматически эта проверка часто не выполняется; в отчёте это ошибка источника, а не «банкротства нет». Готового обхода нет — нужен официальный доступ Федресурса либо ручная проверка на bankrot.fedresurs.ru.
  • ФССП на публичном поиске отвечает окном с кодом с картинки. Код не разгадываем: проверка честно попадает в errors[] с причиной captcha_required.
  • КАД на программный поиск отвечает 451 (защита DDoS-Guard). Это не ошибка сертификата: сайт подписан Let's Encrypt. Официальный доступ — у оператора картотеки. В отчёте это «не проверено», не «судов нет».
  • Если часть проверок не ответила, итоговый уровень риска — «не определён» (unknown), а не «низкий». Пустой flags[] сам по себе не означает «чисто».
  • Налоговые долги берутся из открытых данных ФНС (набор «debtam»): суммы недоимки, пеней и штрафов есть, но данные публикуются срезом за отчётную дату, а не в реальном времени. Актуальную сумму подтверждайте справкой ИФНС.
  • Локальные реестры ФНС (массовые адреса, массовые руководители, дисквалифицированные) требуют регулярной загрузки. Если выгрузка пустая или устарела, проверка честно отвечает «не проверено» и попадает в errors[] — «совпадений нет» по устаревшим данным не выдаётся.
  • Непредставление налоговой отчётности не проверяется — публичного источника нет.

Pro-tier (hosted backend в atomno-mcp-fns-check-server — закрытый бэк) убирает эти ограничения через: кэш Redis 24h, ротация прокси для обхода CAPTCHA, полный срез Open Data ЕГРЮЛ, batch-проверки до 100 ИНН, AI-summary через LLM. Сам backend не опубликован.


Безопасность и юридический статус

  • Все источники — публично открытые данные ФНС и связанных реестров. Использование легально по 149-ФЗ «Об информации».
  • Юридические лица и ИП не подпадают под 152-ФЗ (О персональных данных).
  • ФИО физических лиц-руководителей публикуются ФНС в ЕГРЮЛ открыто; в outbound-ответах ИНН физлица-руководителя маскируется (формат XXX*****YY).
  • Никаких write-операций ни в один внешний API.
  • Никаких credential'ов / токенов не требуется — источники полностью публичные.

Дисклеймер

Сервис — агрегатор и удобный интерфейс над публичными данными ФНС. Не аффилирован с ФНС России, ЕФРСБ, КАД, ФССП. Используется на ваш риск.

Информация в ответах сервиса не заменяет полноценной юридической или финансовой оценки. Решение о заключении договора с контрагентом принимаете вы.


Лицензия

MIT — см. LICENSE.


Ссылки

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atomno_mcp_fns_check-0.1.11.tar.gz (141.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

atomno_mcp_fns_check-0.1.11-py3-none-any.whl (113.5 kB view details)

Uploaded Python 3

File details

Details for the file atomno_mcp_fns_check-0.1.11.tar.gz.

File metadata

  • Download URL: atomno_mcp_fns_check-0.1.11.tar.gz
  • Upload date:
  • Size: 141.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.11.4

File hashes

Hashes for atomno_mcp_fns_check-0.1.11.tar.gz
Algorithm Hash digest
SHA256 a31cbcf8c8b421716859f98ab3982fd0adfbde5c7640058a9156385830461a0b
MD5 fec34206fc91ab1791031830bb63709c
BLAKE2b-256 eb2bd8bd6ccfef1902a9d3d3269ef1d9af7165ddcf2c7f87da3f05e2670f6c27

See more details on using hashes here.

File details

Details for the file atomno_mcp_fns_check-0.1.11-py3-none-any.whl.

File metadata

File hashes

Hashes for atomno_mcp_fns_check-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 e42fc776073db6daf256ebe8dfea87f1ed6280c942f6aa771fc65d89cc9a0308
MD5 a197aa7aa2a6461b7bcd09c69030eef9
BLAKE2b-256 02c40f64ce0324aa7ae641524d2522310dbf242c0b0af9bf11ec0cd828e2a997

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.12

2 files

This release

0.1.11 This release

2 files

0.1.10

2 files

0.1.9

2 files

0.1.6

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page