mcp-sudact

io.github.atomno-mcp由 GitHub 账号 atomno-mcp 发布v0.2.0更新于 Nov 7, 2026

Court practice and FAS case cards via hosted API. Coverage depends on the connected service.

概览

AI 生成的概览

通过托管的 ATOMNO API 检索俄罗斯法院判例与 FAS 案件卡片的轻量 MCP 客户端,需使用服务密钥。

可以做什么
  • 按文本、案号、法院类型、法条和日期检索案件,并保留来源与警告信息
  • 按机关、法律、文书类型和日期检索 FAS 决定卡片
  • 查询已连接服务器支持的板块、筛选条件和分页能力
  • 在有限样本中解析法院名称候选,并标明歧义
  • 按 URL 或案件 ID 获取文书或卡片正文,可选匿名化
适用场景
当助手需要查询俄罗斯法院判例或 FAS 案件卡片,且你已开通 ATOMNO 服务时适用。它只是轻量客户端而非完整语料库,适合定向查询而非穷尽式法律检索。
运行要求
本地 Python 包(需 Python 3.11 及以上),通常用 uvx 或 pip 运行。需要密钥 MCP_SUDACT_TOKEN;API 地址由 MCP_SUDACT_API_BASE 设置(默认指向 ATOMNO 端点),超时由 MCP_SUDACT_TIMEOUT 设置。需要能访问托管 API 的网络。
安装前请注意
MCP_SUDACT_TOKEN 中的密钥不应提交到代码仓库。访问权限、配额与计费由服务合同决定,拿到密钥并不自动开通所有来源。每次调用只尝试一次,即使超时也可能被计入,且不会自动重试。覆盖范围、全文与匿名化均有限,由后端决定。

安装

在 SourceWeft 中

  1. 打开 控制台中的 mcp-sudact,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

atomno-mcp-sudact

MCP-клиент для поиска судебной практики и карточек дел ФАС через подключённый API ATOMNO. Это тонкий клиент, а не собственная полная база судебных решений. Python >=3.11.

Установка и подключение

sh
pip install atomno-mcp-sudactatomno-mcp-sudact --helpatomno-mcp-sudact --version

Для подключения используйте ключ и адрес активированной услуги из кабинета/инструкции. Ключ задаётся переменной MCP_SUDACT_TOKEN, адрес — MCP_SUDACT_API_BASE. По умолчанию адрес https://api.atomno-mcp.ru/sudact; конкретный доступ и подключённые источники определяет услуга. MCP_SUDACT_TIMEOUT задаёт HTTP-таймаут в секундах (по умолчанию 60).

json
{"mcpServers":{"sudact":{"command":"atomno-mcp-sudact","env":{"MCP_SUDACT_TOKEN":"YOUR_API_KEY","MCP_SUDACT_API_BASE":"https://api.atomno-mcp.ru/sudact"}}}}

Не сохраняйте настоящий ключ в репозитории. Получение ключа не означает автоматическое подключение всех источников.

Инструменты

  • search_cases: текст от 3 символов или отдельный case_number, court_type=any|vs|arbitr|soyu|fas, статьи norms, даты YYYY-MM-DD, limit=1..50. Исходные поля, предупреждения, provenance и сведения о лимитах сохраняются.
  • get_search_capabilities: возможности подключённого сервера, разделы, фильтры и доступность пагинации. Требует действующий ключ и не запускает поиск.
  • resolve_court_name: кандидаты названий судов из ограниченной выдачи одного раздела. Возвращает карточки, точное совпадение, неоднозначность и границы выборки. Это один обычный учитываемый поиск; возвращённые карточки учитываются как в search_cases.
  • search_fas_decisions: карточки ФАС; текст, орган body, закон law (44-ФЗ/223-ФЗ/135-ФЗ/38-ФЗ), вид акта act_type, даты, лимит. Передаётся /v1/search с court_type=fas. Карточка не обязательно содержит полный текст решения.
  • get_citation: url или case_id из выдачи, include_full_text, anonymize_level=none|physical_persons|all_persons. Наличие полного текста и результат анонимизации определяет backend.

У search_cases есть соответствующие поля fas_body, fas_law, fas_act_type, допустимые только для any/fas. Виды актов: решение, предписание, постановление, постановление о штрафе, определение, предупреждение, жалоба, уведомление.

Структурированные фильтры требуют один раздел. Они передаются в отдельные поля формы Sudact и проверяются по текущей форме перед поиском. Если источник убрал поле или значение неоднозначно, сервер возвращает ошибку. Фильтры не снимаются при сбое: такой запрос не переключается на другой источник и не дополняется индексами RAS/ФАС.

РазделОтдельные поляregioninstance
arbitrcase_number, court, judgeсудебный округany
soyucase_number, court, judgeсубъект РФany, first, appeal, cassation, supervision
vscase_number, judgeне поддерживаетсяany

region принимает точное имя или код из формы выбранного раздела. Один числовой код может означать разные значения в разных разделах; общего справочника кодов нет. court принимает точное имя суда. Наличие поля поиска не означает полный справочник судов.

Пример поиска по реквизитам: search_cases(court_type="arbitr", case_number="А40-12345/2024") — query можно опустить. Номер отправляется отдельным фильтром, не заменяется текстовым запросом.

Для помощника укажите name, один court_type=arbitr|soyu|vs и, по возможности, query или case_number, задающие полезную выборку. Без них текстом поиска становится name. exact означает точное совпадение среди полученных имён; unique_candidate — один частичный кандидат, требующий выбора; ambiguous — несколько; not_found_in_sample — имени нет в этой выборке. Только exact заполняет resolved_name. Ни один статус не доказывает полноту справочника. Доступно не более 50 карточек и пяти поисков страниц источника.

page=1..5 допустим только для одного раздела vs/arbitr/soyu, без фильтров ФАС, при page*limit<=50. Такой запрос не смешивает корпуса и fallback. Обёртка проверки норм на конкретной услуге может отклонить page с 422 — в этом случае запросите без page. Клиент не отключает серверную проверку норм.

source и collegium не являются подтверждёнными фильтрами действующего REST-контракта и не экспортируются. Поле source в ответе — происхождение записи. Выбор раздела или ФАС и установленный клиент не гарантируют права на все источники, полный корпус или свежесть всех данных. Новый MCP-клиент не предлагает неподтверждённый раздел ks. Старые REST-запросы с этим значением получают явный типизированный отказ до обращения к источнику.

Ошибки и учёт

Пустая успешная выдача отличается от ошибки источника. 401/403/429/5xx сохраняются как backend_error со статусом; таймаут/сетевая ошибка — unavailable. Ошибочный/необъектный JSON не становится пустым результатом. Отсутствующий ключ — missing_token, неправильный ключ не называется отсутствующим.

Каждый вызов выполняет одну попытку POST. Автоматического повтора при timeout, 429 или 502–504 нет: повтор может быть новым учитываемым запросом. Таймаут не доказывает, что сервер не учёл обращение; клиент не обещает возврат квоты. Права и учёт определяет действующая услуга.

get_search_capabilities выполняет одну попытку GET. resolve_court_name выполняет одну попытку POST. При недоступности добавочного индекса основной ответ сохраняется, а search_meta.partial_errors и warnings явно отмечают неполную выдачу источников. Ошибка основного источника, CAPTCHA, незавершённый поиск и повреждённая страница не выдаются за отсутствие дел.

Перед каждым поиском с новыми структурированными фильтрами и перед resolve_court_name клиент проверяет контракт сервера одним GET capabilities. Если старый сервер, откат или повреждённый ответ не подтверждает возможности, поисковый POST не отправляется (unsupported_backend). Положительный ответ не кэшируется между вызовами. Обычные текстовые запросы обходятся одним POST и работают с прежним сервером. Выкладка сервера должна атомарно сохранять заявленный контракт во время обработки запроса.

Запуск

По умолчанию — stdio. Поддерживаются --transport/-t stdio|http|sse|streamable-http, --host, --port, --log-level/-l DEBUG|INFO|WARNING|ERROR|CRITICAL, --version/-V. Для HTTP-транспортов по умолчанию используются 127.0.0.1:8000; публичное размещение требует отдельной настройки доступа. Уровень CLI имеет приоритет над MCP_SUDACT_LOG_LEVEL; неправильный уровень — ошибка запуска. Баннер не попадает в stdio.

Разработка

sh
pip install -e ".[dev,release]"ruff check .pytest --cov=atomno_mcp_sudact --cov-fail-under=85python -m buildpython -m twine check dist/*

Тесты используют изолированные HTTP-ответы, а не доказывают работу production или платного клиентского доступа. MIT распространяется на клиентский код; условия источников и услуги определяются отдельно.

Документация · Ошибки · Изменения

来源:README.md,提交 7380e2d

工具

5

search_cases

Поиск подключённых источников с исходными provenance/предупреждениями. Доступ к soyu определяется услугой; ks не подтверждён и отклоняется. Полный корпус не гарантируется. source/collegium не поддерживаются как фильтры API. Даты/лимиты/метаданные не переписываются.

输入参数pagecourtjudgelimitnormsqueryregiondate_tofas_lawfas_bodyinstancedate_from另有 3 个

get_search_capabilities

Текущие разделы, поддержка фильтров и доступность page на подключённом сервере.

无需输入参数。

resolve_court_name

Кандидаты судов из ограниченной выборки карточек, с явной неоднозначностью. Если query и case_number не заданы, name становится текстовым запросом. Это не полный справочник. Один поиск, обычный учёт вызова и возвращённых карточек.

输入参数name必填limitquerycourt_type必填case_number

search_fas_decisions

Карточки базы решений ФАС через /v1/search court_type=fas. Не обещает полный текст решения. Источник, дата сведений и предупреждения сохраняются. Текст карточки можно запросить через get_citation.

输入参数lawbodylimitquery必填date_toact_typedate_from

get_citation

Текст акта или карточки; полный текст доступен не для каждой записи. Нужен url/case_id. Анонимизация и её ограничения определяются backend.

输入参数urlcase_idanonymize_levelinclude_full_text

版本历史

3
  1. v0.2.0最新Nov 4, 2026
  2. v0.1.10Nov 3, 2026
  3. v0.1.8Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分