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