mcp-fns-check

MCP-servidor para verificação de contrapartes russas (pessoas jurídicas e empreendedores individuais) através de dados públicos da FNS: EGRUL/EGRIP, EFRBS, "Negócio Transparente", FSSP, KAD.

Documentação

atomno-mcp-fns-check

Servidor MCP para verificação de contrapartes russas: EGRUL, falência, dívidas fiscais, oficiais de justiça e processos arbitrais. Para inteligência de empresas — conecta-se ao Cursor, Claude e qualquer cliente MCP.

Verificação de contrapartes russas para agentes de IA.

build version license mcp tests coverage Glama

mcp-fns-check MCP server

Pronto para conexão no Claude Desktop, Cursor, Claude Code, Cline e qualquer outro cliente compatível com Model Context Protocol (MCP).


Por quê

Um agente de IA (Claude, Cursor, etc.) normalmente não sabe nada sobre contrapartes russas: o EGRUL não é indexado adequadamente pelos mecanismos de busca, os dados no Negócio Transparente da Receita Federal estão atrás de solicitações POST e CAPTCHA, o EFRSB retorna HTML. Este servidor MCP dá ao agente sete ferramentas, através das quais ele obtém o quadro completo em uma única chamada:

  • Quem é: nome, endereço, OKVED, diretor.
  • Está ativo: ativo, em liquidação, falência, liquidado, reorganização.
  • É seguro trabalhar com ele: endereço em massa, diretor em massa, desqualificação, falência, dívidas fiscais, processos de execução, processos arbitrais.

A ferramenta principal — check_contractor(identifier) — aceita INN ou OGRN e retorna um relatório agregado com veredito (safe_to_proceed / manual_review_required / high_risk_do_not_proceed / impossible_contractor_defunct) e uma lista de recomendações específicas.


Início rápido

Instalação

pip install atomno-mcp-fns-check

Ou via uv / pipx:

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

Verificação de funcionamento

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

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

Por padrão, o pacote é executado como um servidor MCP stdio: o agente se comunica com ele via stdin/stdout JSON-RPC. Você não pode "testá-lo" diretamente do shell — conecte-o a um cliente MCP. Para cenários de rede, a flag --transport {http,sse,streamable-http} está disponível com --host/--port.


Conexão a clientes MCP

Cursor

Edite mcp.json (Cursor → Settings → Cursor Settings → MCP):

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

Reinicie o Cursor. No chat, pergunte: "Verifique a contraparte INN 7707083893" — o agente chamará check_contractor automaticamente.

Claude Desktop

Edite claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

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

Reinicie o Claude Desktop.

Claude Code (CLI)

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

Cline (VS Code)

Em cline_mcp_settings.json:

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

Ferramentas

FerramentaFinalidadeEntradaFontes
check_contractorPrincipal. Verificação completa por um único identificador + veredito determinístico e recomendaçõesidentifier: str (INN 10/12 ou OGRN 13/15)todas as 5
check_innCartão básico do EGRULinn: stregrul.nalog.ru
check_ogrnCartão básico por OGRN/OGRNIPogrn: stregrul.nalog.ru
get_legal_statusStatus de vida com enriquecimentoinn ou ogrnEGRUL + EFRSB
get_okvedsCódigos OKVED com descriçãoinn ou ogrnEGRUL + dicionário OKVED-2
get_directors_historyDiretor atual (+ histórico conforme Open Data)inn: strEGRUL
check_for_red_flags7 verificações de risco (4 básicas + 3 estendidas)inn: strtodas as fontes

Fontes públicas utilizadas:

  • egrul.nalog.ru — EGRUL/EGRIP, cartão da contraparte.
  • bankrot.fedresurs.ru — EFRSB (Registro Federal Unificado de Informações sobre Falências).
  • Dados abertos da Receita Federal, conjunto "debtam" — dívida tributária (download local).
  • service.nalog.ru — registro ativo de pessoas desqualificadas.
  • fssp.gov.ru — Banco de dados de processos de execução do FSSP.
  • kad.arbitr.ru — Arquivo de processos arbitrais.
  • Snapshots locais dos registros da Receita Federal — endereços em massa, diretores em massa, pessoas desqualificadas (carregados pelo script atomno-mcp-fns-etl a partir dos Dados Abertos da Receita Federal).

Verificações de não apresentação de declarações fiscais não estão no conjunto: não existe fonte pública dessas informações, e o serviço não responderá "declarações apresentadas" sem dados.

Exemplo de resposta 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"
}

Comportamento em falhas de fontes

  • EGRUL — a única fonte bloqueante. Se indisponível, check_contractor levanta SourceUnavailableError (o agente receberá uma mensagem legível).
  • As demais fontes são misturadas best-effort: CAPTCHA no FSSP, antibot no KAD, 5xx no pb.nalog.ru — tudo é adicionado a risks.errors[] e NÃO derruba o relatório. O veredito de nível superior torna-se manual_review_required.

Configuração

Todas as configurações — via variáveis de ambiente. Nenhuma credencial é necessária (as fontes são públicas).

VariávelDescriçãoPadrão
MCP_FNS_CACHE_DBCaminho para o arquivo SQLite de cache de cartõesdiretório de dados do usuário (%LOCALAPPDATA%/atomno/ ou ~/.local/share/atomno/), não a pasta do projeto
MCP_FNS_REGISTRIES_DBCaminho para o arquivo SQLite de registros (endereços/diretores/desqualificações em massa)<cache>.registries.sqlite
MCP_FNS_CACHE_TTL_HOURSTTL de cartões em cache, horas168 (7 dias)
MCP_FNS_HTTP_TIMEOUTTimeout HTTP, segundos15
MCP_FNS_USER_AGENTUser-Agent do cliente HTTPatomno-mcp-fns-check/0.1 (+https://github.com/atomno-mcp/mcp-fns-check)
MCP_FNS_LOG_LEVELNível de log (DEBUG/INFO/WARNING/ERROR)INFO

Modelo — .env.example.


Registros locais da Receita Federal

Os registros de endereços/diretores em massa são exportações CSV dos dados abertos da Receita Federal. Sem a exportação carregada, essas verificações respondem "não executada" e não afetam o veredito como se a fonte tivesse respondido. O pacote inclui um arquivo de exemplo registries_seed.json apenas para testes; o servidor não o carrega no banco de trabalho.

Para verificações de produção, carregue os snapshots via 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

Fontes de Dados Abertos:

Por padrão, a CLI opera em --dry-run (analisa e imprime amostra); para gravação, é necessário --commit explícito. Os meta-campos <registry>.last_etl, <registry>.last_etl_source, <registry>.last_etl_count são salvos automaticamente — use-os para monitoramento cron da atualidade dos dados.


Desenvolvimento

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

APIs externas nunca são chamadas diretamente nos testes — apenas via respx (mock de httpx) + fixtures locais em tests/fixtures/.


Limitações

  • Sem histórico para diretores — a Receita Federal não fornece histórico de mudanças via search-API; o histórico completo aparecerá após o carregamento do slice Open Data do EGRUL (planejado para v0.5+).
  • EFRSB (falência de pessoa jurídica) para consulta programática está protegido pelo Qrator (403 / verificação "humano ou robô"). Automaticamente, essa verificação frequentemente não é executada; no relatório, isso é um erro de fonte, não "sem falência". Não há solução pronta — é necessário acesso oficial ao Fedresurs ou verificação manual em bankrot.fedresurs.ru.
  • FSSP na busca pública responde com uma janela com código de imagem. O código não é decifrado: a verificação honestamente entra em errors[] com o motivo captcha_required.
  • KAD responde à busca programática com 451 (proteção DDoS-Guard). Isso não é um erro de certificado: o site é assinado por Let's Encrypt. Acesso oficial — com o operador do arquivo. No relatório, isso é "não verificado", não "sem processos".
  • Se parte das verificações não responder, o nível de risco final é "não determinado" (unknown), não "baixo". Um flags[] vazio por si só não significa "limpo".
  • Dívidas fiscais são obtidas dos dados abertos da Receita Federal (conjunto "debtam"): valores de débitos, multas e penalidades existem, mas os dados são publicados em snapshot na data de referência, não em tempo real. Confirme o valor atual com um certificado da Inspetoria Fiscal.
  • Registros locais da Receita Federal (endereços em massa, diretores em massa, desqualificados) exigem carregamento regular. Se a exportação estiver vazia ou desatualizada, a verificação honestamente responde "não verificado" e entra em errors[] — "sem correspondências" com base em dados desatualizados não é emitido.
  • A não apresentação de declarações fiscais não é verificada — não há fonte pública.

O nível Pro (backend hospedado em atomno-mcp-fns-check-server — backend fechado) remove essas limitações através de: cache Redis 24h, rotação de proxies para contornar CAPTCHA, snapshot completo do Open Data EGRUL, verificações em lote de até 100 INN, resumo por IA via LLM. O backend em si não é publicado.


Segurança e status legal

  • Todas as fontes — dados publicamente abertos da Receita Federal e registros relacionados. O uso é legal conforme a Lei Federal 149-FZ "Sobre Informação".
  • Pessoas jurídicas e empreendedores individuais não se enquadram na Lei Federal 152-FZ (Sobre Dados Pessoais).
  • Nomes completos de diretores pessoas físicas são publicados pela Receita Federal no EGRUL abertamente; nas respostas de saída, o INN da pessoa física diretora é mascarado (formato XXX*****YY).
  • Nenhuma operação de escrita em qualquer API externa.
  • Nenhuma credencial/token é necessária — as fontes são totalmente públicas.

Aviso legal

O serviço é um agregador e interface conveniente sobre dados públicos da Receita Federal. Não é afiliado à Receita Federal da Rússia, EFRSB, KAD, FSSP. Use por sua conta e risco.

As informações nas respostas do serviço não substituem uma avaliação jurídica ou financeira completa. A decisão de celebrar um contrato com uma contraparte é sua.


Licença

MIT — veja LICENSE.


Links