PluginBench
MCP Server
Maintained
MIT

mcp-fns-check MCP Server

io.github.atomno-mcp/mcp-fns-check

Russian tax authority counterparty checks: status, debts, blocks, bankruptcy—due diligence for AI agents.

What is the mcp-fns-check MCP server?

The mcp-fns-check MCP server provides comprehensive due diligence checks on Russian companies and sole proprietors using public FNS (Russian tax authority) data. It aggregates EGRUL registration, bankruptcy status, tax debts, disqualifications, enforcement proceedings, and arbitration cases into a single risk verdict and actionable recommendations.

This server gives AI agents like Claude and Cursor access to seven tools for vetting Russian counterparties. The main tool, `check_contractor()`, accepts an INN or OGRN and returns an aggregated report with a deterministic verdict (safe_to_proceed / manual_review_required / high_risk_do_not_proceed / impossible_contractor_defunct) plus specific red flags and recommendations. It queries public FNS registries, bankruptcy records, tax debt data, disqualification lists, enforcement proceedings, and arbitration case databases—all without requiring credentials.

How to install mcp-fns-check

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp-fns-check": {
      "command": "uvx",
      "args": [
        "atomno-mcp-fns-check"
      ]
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • check_contractor — Main tool: full counterparty check by INN or OGRN, returns aggregated report with verdict and recommendations
  • check_inn — Basic EGRUL card lookup by INN
  • check_ogrn — Basic EGRUL/EGRNIP card lookup by OGRN
  • get_legal_status — Legal status with enrichment (active, liquidation, bankruptcy, reorganization)
  • get_okveds — OKVED industry codes with descriptions
  • get_directors_history — Current director and historical data
  • check_for_red_flags — 7-point risk check: mass address, mass director, disqualification, bankruptcy, tax debt, enforcement proceedings, arbitration cases

Use cases

  • Verify a Russian company before signing a contract or payment
  • Check if a counterparty has tax debts, bankruptcy, or disqualification issues
  • Identify mass-address or mass-director red flags indicating shell companies
  • Retrieve OKVED codes and director information for due diligence
  • Automate compliance checks on multiple Russian contractors

mcp-fns-check MCP server FAQ

What does mcp-fns-check do?

It checks Russian companies and sole proprietors against public FNS registries—EGRUL, bankruptcy records, tax debts, disqualifications, enforcement proceedings, and arbitration cases—returning a risk verdict and recommendations.

Is it free?

Yes. It uses only public FNS data and requires no credentials or API keys.

How do I install it in Cursor?

Edit `mcp.json` in Cursor Settings → MCP and add: `{"mcpServers": {"fns-check": {"command": "atomno-mcp-fns-check"}}}`, then restart Cursor.

How do I install it in Claude Desktop?

Edit `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/`, Windows: `%APPDATA%\Claude\`) and add the same config block, then restart Claude Desktop.

What data sources does it use?

Public FNS data: EGRUL (egrul.nalog.ru), bankruptcy registry (bankrot.fedresurs.ru), tax debt open data, disqualified persons (service.nalog.ru), enforcement proceedings (fssp.gov.ru), and arbitration cases (kad.arbitr.ru).

What are the main limitations?

EFRSB (bankruptcy) and FSSP (enforcement) are protected by CAPTCHA/antibot and often cannot be queried automatically. KAD (arbitration) is protected by DDoS-Guard. Local registries (mass addresses, mass directors) require manual ETL updates from FNS open data.

README (reference)

Source of truth, from the repository.

<!-- mcp-name: io.github.atomno-mcp/mcp-fns-check -->

atomno-mcp-fns-check

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

Russian counterparty check for AI agents.

build version license mcp tests coverage Glama

<a href="https://glama.ai/mcp/servers/atomno-mcp/mcp-fns-check"> <img width="380" height="200" src="https://glama.ai/mcp/servers/atomno-mcp/mcp-fns-check/badge" alt="mcp-fns-check MCP server" /> </a>

Готов к подключению в 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: stregrul.nalog.ru
check_ogrnБазовая карточка по ОГРН/ОГРНИПogrn: stregrul.nalog.ru
get_legal_statusЖизненный статус с обогащениемinn или ogrnЕГРЮЛ + ЕФРСБ
get_okvedsКоды ОКВЭД с расшифровкойinn или ogrnЕГРЮЛ + словарь ОКВЭД-2
get_directors_historyТекущий руководитель (+ история по мере Open Data)inn: strЕГРЮЛ
check_for_red_flags7 проверок риска (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_HOURSTTL кэшированных карточек, часов168 (7 суток)
MCP_FNS_HTTP_TIMEOUTТаймаут HTTP, секунд15
MCP_FNS_USER_AGENTUser-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-выгрузки открытых данных ФНС. Без загруженной выгрузки эти проверки отвечают «не выполнена» и не влияют на вердикт так, будто источник ответил. В поставке есть учебный файл registries_seed.json только для тестов; сервер его в рабочую базу не подгружает.

Для рабочих проверок загрузите срезы через 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.


Ссылки

Related MCP servers

MCmcp-fssp logo

mcp-fssp

Maintained

MCP server for Russian FSSP enforcement proceedings lookup and debtor search.

0
Python
MIT
View repository →
MCmcp-newbuild logo

mcp-newbuild

Maintained

New-build MCP on the client's EISZHS contract. Spec is closed.

0
Python
MIT
View repository →
MCmcp-pharma logo

Drug reference: GRLS, VEDL prices, Roszdravnadzor series recalls. Not medical advice.

0
Python
MIT
View repository →
MCmcp-rosreestr logo

mcp-rosreestr

Maintained

MCP server for Russian Rosreestr cadastral data: lookup by number, address or coordinates.

0
Python
MIT
View repository →

Sanctions/watchlist screening (RF, OFAC, EU, UK, UN) with confidence levels for KYC/AML.

View repository →
MCmcp-seo-audit logo

mcp-seo-audit

Maintained

Technical SEO site audit MCP: health score, issues, robots, sitemap, JSON-LD.

1
Python
MIT
View repository →