mcp-sudact

io.github.atomno-mcpPublished by GitHub account atomno-mcpv0.2.0Updated Nov 7, 2026

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

Overview

AI-generated overview

Thin MCP client for searching Russian court practice and FAS case cards through a hosted ATOMNO API, using a paid service key.

What you can do
  • Search court cases by text, case number, court type, legal articles and dates, with provenance and warnings kept
  • Search FAS decision cards by body, law, act type and dates
  • Check the connected server's sections, supported filters and pagination
  • Resolve court names to candidates from a limited sample, flagging ambiguity
  • Fetch the text of an act or card by URL or case ID, with optional anonymization
When to use it
Useful when an assistant needs to look up Russian court practice or FAS case cards and you already have access to an activated ATOMNO service. It is a thin client, not a complete corpus, so it suits targeted lookups rather than exhaustive legal research.
Requirements
Local Python package (Python 3.11 or newer), typically run with uvx or pip. Requires the secret MCP_SUDACT_TOKEN; the API base address is set with MCP_SUDACT_API_BASE (defaults to the ATOMNO endpoint) and the timeout with MCP_SUDACT_TIMEOUT. Network access to the hosted API is needed.
Before you install
The key in MCP_SUDACT_TOKEN should not be committed to a repository. Access, quotas and accounting are governed by the service contract, and a key does not automatically unlock all sources. Each call is a single attempt that may be counted even if it times out, with no automatic retry. Coverage, full texts and anonymization are limited and determined by the backend.

Installation

In SourceWeft

  1. Open mcp-sudact in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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 распространяется на клиентский код; условия источников и услуги определяются отдельно.

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

Source: README.md at commit 7380e2d

Tools

5

search_cases

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

Parameterspagecourtjudgelimitnormsqueryregiondate_tofas_lawfas_bodyinstancedate_from+3 more

get_search_capabilities

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

Takes no parameters.

resolve_court_name

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

Parametersnamerequiredlimitquerycourt_typerequiredcase_number

search_fas_decisions

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

Parameterslawbodylimitqueryrequireddate_toact_typedate_from

get_citation

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

Parametersurlcase_idanonymize_levelinclude_full_text

Version history

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

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts