用途
mcp-fns-check 是一个 Model Context Protocol(MCP)服务器,用于对俄罗斯交易对手进行尽职调查与企业情报搜集。其出发点是:AI 智能体(Claude、Cursor 等)通常不了解俄罗斯交易对手——ЕГРЮЛ 难以被搜索引擎正常索引,ФНС「Прозрачный бизнес」数据藏在 POST 请求和 CAPTCHA 之后,ЕФРСБ 只返回 HTML。该服务器为智能体提供 7 个工具,一次调用即可获得完整画像。
主要能力
通过工具调用可获取以下信息:
- 主体身份:名称、地址、ОКВЭД(经营活动分类)、负责人。
- 存续状态:经营中、清算中、破产、已注销、重组。
- 合作安全性:批量地址、批量负责人、资格取消、破产、税务欠款、执行程序、仲裁案件。
核心工具为 check_contractor(identifier),接受 ИНН 或 ОГРН,返回带裁决(verdict)的聚合报告,可能取值为 safe_to_proceed / manual_review_required / high_risk_do_not_proceed / impossible_contractor_defunct,并附带具体建议清单。
使用的公开数据源
egrul.nalog.ru— ЕГРЮЛ/ЕГРИП,交易对手卡片。bankrot.fedresurs.ru— ЕФРСБ(破产信息统一联邦登记册)。- ФНС 开放数据,数据集「debtam」— 税务欠款(本地导出)。
service.nalog.ru— 资格取消人员实时登记册。fssp.gov.ru— ФССП 执行程序数据库。kad.arbitr.ru— 仲裁案件卡库。- ФНС 登记册本地切片 — 批量地址、批量负责人、资格取消人员(通过
atomno-mcp-fns-etl脚本从 ФНС Open Data 加载)。
不包含「未提交税务申报」的检查:该信息没有公开来源,服务不会在没有数据的情况下回答「已申报」。
使用方式
默认以 stdio-MCP 服务器方式运行:智能体通过 stdin/stdout 的 JSON-RPC 与之通信,无法直接从 shell「点按」使用,需接入 MCP 客户端。网络场景下提供 --transport {http,sse,streamable-http} 及 --host / --port 参数。也可通过 uv / pipx 运行。
接入 MCP 客户端:
- Cursor:编辑
mcp.json(Settings → Cursor Settings → MCP),重启 Cursor。在对话中提问「Проверь контрагента ИНН 7707083893」,智能体会自动调用check_contractor。 - Claude Desktop:编辑
claude_desktop_config.json(macOS:~/Library/Application Support/Claude/;Windows:%APPDATA%\Claude\),重启 Claude Desktop。 - Claude Code(CLI)与 Cline(VS Code):在
cline_mcp_settings.json中配置。
所有配置通过环境变量完成,不需要任何凭据(数据源全部公开)。模板见 .env.example。
本地 ФНС 登记册
批量地址 / 负责人登记册是 ФНС 开放数据的 CSV 导出。未加载导出文件时,这些检查会回答「未执行」,并且不会像数据源已应答那样影响裁决。发行版中只有用于测试的教学文件 registries_seed.json,服务器不会将其载入工作数据库。
如需用于实际检查,通过 CLI atomno-mcp-fns-etl 加载切片:
- 批量地址 →
nalog.gov.ru/opendata/7707329152-masaddress/ - 批量负责人 →
nalog.gov.ru/opendata/7707329152-massleaders/ - 资格取消人员 →
service.nalog.ru/disqualified.do
该 CLI 默认以 --dry-run 运行(解析并打印样本);写入需显式加 --commit。元字段 <registry>.last_etl、<registry>.last_etl_source、<registry>.last_etl_count 会自动保存,可用作 cron 数据新鲜度监控。
测试中从不直接调用外部 API——仅通过 respx(mock httpx)+ tests/fixtures/ 本地固定数据。
故障行为
- ЕГРЮЛ 是唯一的 blocking 数据源。若不可用,
check_contractor抛出SourceUnavailableError(智能体收到人类可读消息)。 - 其余数据源为 best-effort:ФССП 的 CAPTCHA、КАД 的 antibot、
pb.nalog.ru的 5xx 都会记录到risks.errors[],不会使报告失败,但顶层裁决会变为manual_review_required。
限制与已知问题
- 负责人无历史记录:ФНС 不通过 search-API 提供变更历史;完整历史将在加载 ЕГРЮЛ Open Data 切片后出现(计划于 v0.5+)。
- ЕФРСБ(法人破产)对程序化查询受 Qrator 防护(403 /「人还是机器人」验证),自动检查常无法完成;报告中记为数据源错误,而非「无破产」。没有现成绕过方案,需 Федресурс 官方访问或在
bankrot.fedresurs.ru手动检查。 - ФССП 公开搜索返回带图片验证码的窗口,代码不破解:检查如实落入
errors[],原因captcha_required。 - КАД 对程序化搜索返回 451(DDoS-Guard 防护)。这不是证书错误:站点由 Let's Encrypt 签名。官方访问属于卡库运营商。报告中记为「未检查」,而非「无诉讼」。
- 若部分检查未应答,最终风险级别为「未确定」(
unknown),而非「低」。空的flags[]本身不等于「干净」。 - 税务欠款来自 ФНС 开放数据(「debtam」数据集):含欠税额、罚金与罚款,但按报告日切片发布,非实时。实际金额请以 ИФНС 证明为准。
- 本地 ФНС 登记册(批量地址、批量负责人、资格取消)需定期加载。若导出为空或过期,检查如实回答「未检查」并进入
errors[];不会基于过期数据给出「无匹配」。 - 未提交税务申报不检查——无公开来源。
- 关于 Pro-tier(
atomno-mcp-fns-check-server中的托管后端、闭源):通过 Redis 24h 缓存、绕过 CAPTCHA 的代理轮换、完整 ЕГРЮЛ Open Data 切片、最多 100 个 ИНН 的批量检查、通过 LLM 的 AI-summary 来消除上述限制。后端本身未公开。
安全与法律地位
- 所有数据源均为 ФНС 及相关登记册的公开数据。依据第 149-ФЗ《信息法》使用合法。
- 法人与个体户不适用第 152-ФЗ(个人数据法)。
- 自然人负责人的姓名由 ФНС 在 ЕГРЮЛ 中公开;在 outbound 响应中,自然人负责人的 ИНН 会被掩码(格式
XXX*****YY)。 - 不对外部 API 执行任何写操作。
- 不需要任何 credential / token——数据源完全公开。
- 本服务是 ФНС 公开数据之上的聚合器与便捷接口,与 ФНС России、ЕФРСБ、КАД、ФССП 无关联。使用风险自负。
- 服务响应中的信息不能替代完整的法律或财务评估。是否与交易对手签约由你决定。
许可证:MIT(见 LICENSE)。