mcp-fns-check
atomno-mcp-fns-check
Servidor MCP para verificar contrapartes rusas (entidades legales y empresarios individuales) a través de datos públicos del Servicio Federal de Impuestos (FNS): EGRUL/EGRIP, EFRSB, «Negocio Transparente», FSSP, KAD.
Listo para conectarse en Claude Desktop, Cursor, Claude Code, Cline y cualquier otro cliente compatible con el Protocolo de Contexto de Modelo (MCP).
¿Por qué?
Un agente de IA (Claude, Cursor, etc.) normalmente no sabe nada sobre las contrapartes rusas: el EGRUL no está indexado correctamente por los motores de búsqueda, los datos en el Negocio Transparente del FNS están detrás de solicitudes POST y CAPTCHA, y el EFRSB entrega HTML. Este servidor MCP le da al agente siete herramientas, a través de las cuales obtendrá una imagen completa en una sola llamada:
Quién es: nombre, dirección, OKVED, director.
Si está activo: en funcionamiento, en liquidación, quiebra, liquidado, reorganización.
Si es seguro trabajar con ellos: dirección masiva, director masivo, descalificación, quiebra, deudas fiscales, falta de presentación de informes, procedimientos ejecutivos, casos de arbitraje.
La herramienta principal — check_contractor(identifier) — acepta un INN o OGRN y devuelve un informe agregado con un veredicto (safe_to_proceed / manual_review_required / high_risk_do_not_proceed / impossible_contractor_defunct) y una lista de recomendaciones específicas.
Related MCP server: mcp-egrul
Inicio rápido
Instalación
pip install atomno-mcp-fns-checkO a través de uv / pipx:
uv pip install atomno-mcp-fns-check
# или
pipx install atomno-mcp-fns-checkVerificación de funcionamiento
atomno-mcp-fns-check --version
# → atomno-mcp-fns-check 0.1.1
atomno-mcp-fns-check --help
# → полный список флагов: --transport / --host / --port / --log-levelPor defecto, el paquete se ejecuta como un servidor MCP stdio: el agente se comunica con él a través de stdin/stdout JSON-RPC. No podrás "probarlo" directamente desde la shell; conéctalo a un cliente MCP. Para escenarios de red, está disponible la bandera --transport {http,sse,streamable-http} con --host/--port.
Conexión a clientes MCP
Cursor
Edita mcp.json (Cursor → Settings → Cursor Settings → MCP):
{
"mcpServers": {
"fns-check": {
"command": "atomno-mcp-fns-check"
}
}
}Reinicia Cursor. En el chat, pregunta: «Verifica la contraparte INN 7707083893» — el agente llamará automáticamente a check_contractor.
Claude Desktop
Edita claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"fns-check": {
"command": "atomno-mcp-fns-check"
}
}
}Reinicia Claude Desktop.
Claude Code (CLI)
claude mcp add fns-check atomno-mcp-fns-checkCline (VS Code)
En cline_mcp_settings.json:
{
"mcpServers": {
"fns-check": {
"command": "atomno-mcp-fns-check",
"disabled": false,
"autoApprove": []
}
}
}Herramientas
Herramienta | Propósito | Entrada | Fuentes |
| Principal. Verificación completa por un identificador + veredicto determinado y recomendaciones |
| las 5 |
| Tarjeta básica EGRUL |
| egrul.nalog.ru |
| Tarjeta básica por OGRN/OGRNIP |
| egrul.nalog.ru |
| Estado vital con enriquecimiento |
| EGRUL + EFRSB |
| Códigos OKVED con descripción |
| EGRUL + diccionario OKVED-2 |
| Director actual (+ historial según Open Data) |
| EGRUL |
| 8 verificaciones de riesgo (4 básicas + 4 extendidas) |
| las 5 |
Fuentes públicas utilizadas:
egrul.nalog.ru — EGRUL/EGRIP, tarjeta de contraparte.
bankrot.fedresurs.ru — EFRSB (Registro Federal Unificado de Información sobre Quiebras).
pb.nalog.ru — Negocio Transparente del FNS (deudas fiscales, falta de presentación de informes).
fssp.gov.ru — Banco de datos de procedimientos ejecutivos del FSSP.
kad.arbitr.ru — Archivo de casos de arbitraje.
Cortes locales de registros del FNS — direcciones masivas, directores masivos, personas descalificadas (cargadas mediante el script
atomno-mcp-fns-etldesde Open Data del FNS).
Ejemplo de respuesta de 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"
}Comportamiento ante fallos de fuentes
EGRUL es la única fuente bloqueante. Si no está disponible,
check_contractorlanza unSourceUnavailableError(el agente recibirá un mensaje legible por humanos).Las fuentes restantes se mezclan bajo best-effort: CAPTCHA en FSSP, antibot en KAD, 5xx en pb.nalog.ru — todo se acumula en
risks.errors[]y NO hace fallar el informe. El veredicto de alto nivel se convierte enmanual_review_required.
Configuración
Todos los ajustes se realizan a través de variables de entorno. No se requieren credenciales (las fuentes son públicas).
Variable | Descripción | Por defecto |
| Ruta al archivo SQLite de caché de tarjetas |
|
| Ruta al archivo SQLite de registros (direcciones/directores masivos/descalificaciones) |
|
| TTL de tarjetas cacheadas, horas |
|
| Tiempo de espera HTTP, segundos |
|
| User-Agent del cliente HTTP |
|
| Nivel de registro (DEBUG/INFO/WARNING/ERROR) |
|
La plantilla es .env.example.
Registros locales del FNS
Los registros de direcciones masivas / directores / personas descalificadas son volcados CSV/XML de Open Data del FNS. El paquete viene con un mini-seed incorporado (registries_seed.json, registros de prueba sintéticos) — es suficiente para que las herramientas funcionen "listas para usar" y muestren banderas en los INN de prueba.
Para verificaciones de producción, actualiza los registros con cortes completos a través de la 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 --commitFuentes de Open Data:
mass_addresses→ nalog.gov.ru/opendata/7707329152-massreg/mass_directors→ nalog.gov.ru/opendata/7707329152-massuchredt/disqualified→ service.nalog.ru/disqualified.do
Por defecto, la CLI funciona en --dry-run (analiza e imprime una muestra); para escribir se necesita un --commit explícito. Los meta-campos <registry>.last_etl, <registry>.last_etl_source, <registry>.last_etl_count se guardan automáticamente — úsalos para el monitoreo cron de la frescura de los datos.
Desarrollo
git clone https://github.com/atomno-labs/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_checkLas API externas en las pruebas nunca se llaman directamente — solo a través de respx (mocking de httpx) + fixtures locales en tests/fixtures/.
Limitaciones
No hay historial para directores — el FNS no entrega el historial de cambios a través de la API de búsqueda; el historial completo aparecerá después de cargar el corte de Open Data del EGRUL (planeado para v0.5+).
FSSP / KAD a veces bloquean con CAPTCHA / antibot. En este caso, la verificación cae en
errors[]y el veredicto general se convierte enmanual_review_required.Negocio Transparente solo entrega el hecho ("hay deuda" / "no hay informes"), sin el monto. El monto debe solicitarse en el IFNS.
El nivel Pro (backend alojado en atomno-mcp-fns-check-server — backend cerrado) elimina estas limitaciones mediante: caché Redis 24h, rotación de proxies para evitar CAPTCHA, corte completo de Open Data del EGRUL, verificaciones por lotes de hasta 100 INN, resumen de IA a través de LLM. El backend en sí no está publicado.
Seguridad y estatus legal
Todas las fuentes son datos abiertos públicamente del FNS y registros relacionados. El uso es legal según la ley 149-FZ "Sobre la información".
Las entidades legales y los empresarios individuales no están sujetos a la 152-FZ (Sobre datos personales).
Los nombres completos de las personas físicas directores son publicados por el FNS en el EGRUL abiertamente; en las respuestas salientes, el INN de la persona física director está enmascarado (formato
XXX*****YY).No hay operaciones de escritura en ninguna API externa.
No se requieren credenciales / tokens — las fuentes son completamente públicas.
Descargo de responsabilidad
El servicio es un agregador e interfaz conveniente sobre datos públicos del FNS. No está afiliado al FNS de Rusia, EFRSB, KAD, FSSP. Úsalo bajo tu propio riesgo.
La información en las respuestas del servicio no reemplaza una evaluación legal o financiera completa. La decisión de celebrar un contrato con una contraparte es tuya.
Licencia
MIT — ver LICENSE.
Enlaces
GitHub: atomno-labs/mcp-fns-check
Más servidores MCP bajo la marca atomno: catálogo atomno.ru (próximamente)
Especificación MCP: modelcontextprotocol.io
Maintenance
Related MCP Servers
- AlicenseAqualityAmaintenanceCentral Bank of Russia (CBR) data for AI agents — daily and historical currency rates, key rate, inflation, and macro statistics. Five typed MCP tools, in-memory TTL cache, MIT-licensed, no API key required.52MIT
- AlicenseAqualityAmaintenanceMCP server for the Russian state registries EGRUL (legal entities) and EGRIP (individual entrepreneurs), built on official Federal Tax Service open-data dumps. Self-hosted via local SQLite.82MIT
- AlicenseAqualityFmaintenanceMCP server that provides 31 tools for the DaData API, enabling address autocomplete, company lookup, bank details, phone/email/passport validation, car recognition, geocoding, and reference directory queries.31192MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for verifying Polish business entities from the National Court Register (KRS) and VAT White List. Allows querying by KRS, NIP, or REGON to retrieve official company data including name, address, board, and capital.Apache 2.0
Related MCP Connectors
Remote MCP server to enrich company profiles with structured B2B data and confidence scores.
A paid remote MCP for hosted MCP server, built to return verdicts, receipts, usage logs, and audit-r
Conformance checker for MCP servers. Free, no key, verdicts recomputable and re-measured daily.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/atomno-mcp/mcp-fns-check'
If you have feedback or need assistance with the MCP directory API, please join our Discord server