MCP-сервер для проверки контрагентов через открытые данные ФНС

· 2 мин чтения
mcp ai-agents claude-code compliance tools python
📂 Исходный код на GitHub

MCP-сервер на Python для проверки российских контрагентов через публичные данные ФНС: ЕГРЮЛ/ЕГРИП, ЕФРСБ, Прозрачный бизнес, ФССП и КАД. Выдаёт агрегированный отчёт с вердиктом (safe_to_proceed / manual_review_required / high_risk_do_not_proceed) и рекомендациями по due diligence.

MCP-сервер для проверки контрагентов через открытые данные ФНС

Проверка контрагентов — рутинная часть работы юристов, бухгалтеров и compliance-специалистов. Нужно зайти в ЕГРЮЛ, проверить ЕФРСБ на банкротства, открыть картотеку арбитражных дел, заглянуть в базу ФССП, а потом ещё и в Прозрачный бизнес заглянуть. Каждый источник — отдельный сайт, авторизация, CAPTCHA, ручное копирование данных.

atomno-mcp-fns-check — это MCP-сервер, который автоматизирует весь процесс. AI-агент (Claude, Cursor, Cline, Claude Code) получает семь инструментов и за один вызов собирает полную картину по контрагенту из пяти публичных источников ФНС.

Как это работает

Сервер подключается к любому MCP-совместимому клиенту через stdio (JSON-RPC). В ответ на check_contractor(identifier) он параллельно опрашивает все доступные источники, агрегирует данные и возвращает структурированный отчёт.

Пример вызова агентом в Cursor или Claude Desktop:

Проверь контрагента ИНН 7707083893

Агент сам определяет, что это запрос на проверку, и вызывает тул check_contractor. В ответ приходит:

{
  "identifier": "7707083893",
  "identifier_type": "inn",
  "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": "Действующее"},
  "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 НК РФ)."
  ]
}

Вердикт приходит одним из четырёх значений: safe_to_proceed (можно работать), manual_review_required (требуется ручная проверка), high_risk_do_not_proceed (высокий риск), impossible_contractor_defunct (контрагент ликвидирован).

Семь инструментов сервера

Сервер предоставляет агенту семь тулзов, каждый из которых заточен под конкретный запрос. Главный — check_contractor — агрегирует данные из всех источников, но можно использовать и отдельные инструменты для точечных проверок.

Инструмент Назначение Входные данные
check_contractor Полная проверка с вердиктом и рекомендациями ИНН или ОГРН
check_inn Базовая карточка из ЕГРЮЛ ИНН
check_ogrn Базовая карточка по ОГРН/ОГРНИП ОГРН
get_legal_status Жизненный статус (действует, банкрот, ликвидирован) ИНН или ОГРН
get_okveds Коды ОКВЭД с расшифровкой ИНН или ОГРН
get_directors_history Текущий руководитель и история (по мере Open Data) ИНН
check_for_red_flags Восемь проверок риска ИНН

Источники данных

Сервер агрегирует данные из пяти публичных источников:

  • egrul.nalog.ru — ЕГРЮЛ/ЕГРИП, основной реестр юрлиц и ИП.
  • bankrot.fedresurs.ru — ЕФРСБ, единый реестр сведений о банкротстве.
  • pb.nalog.ru — Прозрачный бизнес ФНС (налоговые долги, непредставление отчётности).
  • fssp.gov.ru — банк данных исполнительных производств ФССП.
  • kad.arbitr.ru — картотека арбитражных дел.

Дополнительно используются локальные срезы реестров ФНС — массовые адреса, массовые руководители, дисквалифицированные лица. Они загружаются утилитой atomno-mcp-fns-etl из Open Data ФНС. Пакет идёт со встроенным сидом для тестирования, чтобы работало «из коробки».

Отказоустойчивость

Сервер спроектирован с учётом нестабильности публичных API. ЕГРЮЛ — единственный blocking-источник: если он недоступен, check_contractor поднимает ошибку и агент получает человекочитаемое сообщение.

Остальные источники работают по принципу best-effort. Если ФССП показывает CAPTCHA, КАД включает antibot, а Прозрачный бизнес возвращает 5xx — каждый такой сбой попадает в risks.errors[], но не валит весь отчёт. При сбоях некритичных источников вердикт меняется на manual_review_required, и агент сообщает пользователю, какие именно проверки не удалось выполнить.

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

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

MCP_FNS_CACHE_DB=./cache.sqlite         # путь к SQLite-кэшу карточек
MCP_FNS_CACHE_TTL_HOURS=168             # TTL кэша, 7 суток по умолчанию
MCP_FNS_HTTP_TIMEOUT=15                 # таймаут HTTP-запросов
MCP_FNS_LOG_LEVEL=INFO                  # уровень логирования

Кэширование устроено на SQLite: результаты предыдущих проверок сохраняются и отдаются мгновенно, без повторных запросов к источникам ФНС. По умолчанию TTL — 7 суток, что адекватно для due diligence-проверок.

Подключение к AI-агенту

Поддерживаются все основные MCP-клиенты. Настройка сводится к добавлению нескольких строк в конфигурационный файл.

Cursor: добавить в mcp.json:

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

Claude Desktop: добавить в claude_desktop_config.json тот же блок с командой.

Claude Code (CLI): одной командой:

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

Cline: добавить в cline_mcp_settings.json аналогичную конфигурацию.

После перезапуска агент получает доступ к инструментам проверки контрагентов — их можно вызывать в чате на естественном языке.

Установка и системные требования

Пакет на Python, устанавливается через pip:

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. По умолчанию сервер запускается в режиме stdio для MCP-клиентов, но поддерживаются и сетевые транспорты: --transport http, --transport sse, --transport streamable-http с флагами --host и --port.

Юридический статус

Все источники данных — публично открытые реестры ФНС и смежных ведомств. Использование легально по 149-ФЗ «Об информации». Юридические лица и ИП не подпадают под 152-ФЗ о персональных данных.

Важно: ФИО руководителей, публикуемые ФНС в ЕГРЮЛ открыто, в ответах сервера остаются как есть, но ИНН физического лица-руководителя маскируется в формате XXX*****YY. Никаких write-операций во внешние API сервер не производит.

Ограничения

Текущая версия (v0.1.x) имеет несколько архитектурных ограничений, связанных с природой публичных API:

  • История руководителей — ФНС не отдаёт историю смены через search-API. Полная история появится после загрузки Open Data slice ЕГРЮЛ (запланирована в v0.5+).
  • CAPTCHA на ФССП и КАД — часть источников может блокировать автоматические запросы. В этом случае проверка частично деградирует, а вердикт становится manual_review_required.
  • Прозрачный бизнес возвращает только бинарный факт (есть задолженность / нет отчётности), без сумм. Точную сумму нужно запрашивать в ИФНС.

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

Почему это важно для AI-агентов

MCP-серверы этого типа — пример того, как AI-агенты выходят за рамки генерации кода и начинают решать прикладные бизнес-задачи. Агент в Cursor или Claude Desktop становится не просто помощником программиста, а инструментом due diligence, способным за секунды собрать информацию, на которую человек потратил бы десятки минут ручного переключения между сайтами.

Архитектура проекта — хороший образец для тех, кто проектирует MCP-серверы, работающие с нестабильными публичными API: есть graceful degradation, кэширование на SQLite, best-effort для некритичных источников, тесты с мокингом внешних вызовов через respx (265 тестов, 86% покрытия).

Вывод

atomno-mcp-fns-check — специализированный MCP-сервер на Python, который решает конкретную бизнес-задачу (due diligence российских контрагентов) через AI-агента. Семь инструментов, пять источников данных, четыре уровня вердикта, детерминированные рекомендации. Подключается к любому MCP-клиенту одной строкой конфигурации. MIT-лицензия.

Источник: https://github.com/atomno-mcp/mcp-fns-check