laws
Provides local, offline semantic search across 24 Russian Federation legal codes using natural-language queries, with tools to retrieve full articles by identifier and list available codes.
README
Кодексы РФ: поиск по смыслу
Поиск по 24 кодексам Российской Федерации обычными словами. Спрашиваете «что грозит за неуплату алиментов» — получаете статью 115 Семейного кодекса, хотя дословно этих слов в ней нет. Работает без интернета, целиком на вашей машине: ни запросы, ни тексты никуда не уходят.
Искать можно двумя способами: из терминала одной командой или подключив репозиторий к Claude Code как MCP-сервер — тогда поиск доступен прямо в разговоре.
Что внутри
data/ тексты 24 кодексов, разобранные по статьям (9 250 статей, каждая — отдельный JSON)
index/ векторный индекс: по нему и идёт поиск
src/ сам поиск — MCP-сервер, команда для терминала и общий код под ними
Кодексы выгружены 24 августа 2026 года — редакции актуальны на эту дату. Источник — официальный
портал pravo.gov.ru, консолидированные тексты из «Эталонного банка правовой информации».
Дата редакции каждого кодекса по отдельности видна командой --codes-list (см. ниже):
кодексы меняются в разное время, и у некоторых последняя редакция заметно старше даты выгрузки.
Подготовка (один раз)
Нужен Python 3.11 или новее. Видеокарта не нужна — всё считается на процессоре.
# создать виртуальное окружение
python -m venv .venv
Дальше самое простое — попросить Claude Code: /x-prepare-system. Скилл поставит
библиотеки, скачает модели и проверит, что всё работает.
То же самое одной командой, если Claude Code под рукой нет:
# Windows
.\setup.cmd --install
# Linux и macOS
./setup --install
Скачается поисковая модель (~2,3 ГБ) и вспомогательная модель-переоценщик (~0,5 ГБ). Это единственный шаг, которому нужен интернет. В репозиторий модели не входят — они слишком велики для git.
Проверить готовность в любой момент: та же команда без --install ничего не меняет,
только рассказывает, что на месте, а чего не хватает.
# Windows
.\setup.cmd
# Linux и macOS
./setup
Попробовать прямо в терминале
В комплекте есть короткая обёртка — она сама подставляет пути и кодировку:
# Windows
.\laws.cmd "что грозит за неуплату алиментов"
# Linux и macOS
./laws "что грозит за неуплату алиментов"
Ответ выглядит так:
=== что грозит за неуплату алиментов ===
1. sk-rf ст. 115 — Ответственность за несвоевременную уплату алиментов [0.0164]
РАЗДЕЛ V. АЛИМЕНТНЫЕ ОБЯЗАТЕЛЬСТВА > ГЛАВА 17. ПОРЯДОК УПЛАТЫ И ВЗЫСКАНИЯ | действует
1. При образовании задолженности по вине лица, обязанного уплачивать алименты...
Что ещё умеет команда (на Linux и macOS вместо .\laws.cmd пишите ./laws):
# несколько вопросов за один запуск: так быстрее, модель грузится один раз
.\laws.cmd "увольнение по собственному желанию" "продолжительность отпуска"
# статья целиком, по номеру
.\laws.cmd --article uk-rf:105
# искать только в одном кодексе
.\laws.cmd --code=koap-rf "превышение скорости"
# список кодексов с датами редакций
.\laws.cmd --codes-list
# точнее на расплывчатых вопросах, но на 4 секунды медленнее
.\laws.cmd --rerank "сосед залил квартиру кто возмещает ущерб"
# показать и статьи, утратившие силу: по умолчанию они скрыты
.\laws.cmd --repealed "запрос"
Первый запрос занимает около 6 секунд — столько грузится модель. Дальше, если вопросов несколько в одной команде, каждый следующий считается за 0,2 секунды.
Совет по формулировкам: пишите вопрос так, как спросили бы человека, а не ключевыми словами.
И помните, что одно и то же слово живёт в разных кодексах — «испытательный срок» найдёт
и трудовой, и условное осуждение из Уголовного кодекса. Если знаете, где искать, добавьте
--code=tk-rf.
Если обёртка почему-то не подходит, то же самое полной командой:
# Windows, PowerShell
$env:PYTHONPATH="src"; $env:PYTHONIOENCODING="utf-8"
.venv\Scripts\python.exe -m laws_mcp.cli "вопрос"
# Linux и macOS
PYTHONPATH=src .venv/bin/python -m laws_mcp.cli "вопрос"
Подключить к Claude Code (MCP-сервер)
Если поиском пользуетесь часто, удобнее поднять сервер: модель останется в памяти, и каждый запрос будет занимать доли секунды вместо шести.
Проще всего попросить Claude Code: /x-run-mcp — скилл подключит и проверит.
Вручную — одной строкой:
# Windows, PowerShell
claude mcp add laws -e PYTHONPATH=C:\путь\к\репозиторию\src -e LAWS_ROOT=C:\путь\к\репозиторию -e PYTHONIOENCODING=utf-8 -- C:\путь\к\репозиторию\.venv\Scripts\python.exe -m laws_mcp.server
# Linux и macOS
claude mcp add laws -e PYTHONPATH=/путь/к/репозиторию/src -e LAWS_ROOT=/путь/к/репозиторию -- /путь/к/репозиторию/.venv/bin/python -m laws_mcp.server
Пути обязательно полные: Claude Code запускает сервер из своего каталога, и относительные пути не найдутся. После подключения перезапустите сессию — список инструментов читается при старте.
Сервер даёт три инструмента: найти статьи по смыслу, показать статью целиком по номеру и перечислить кодексы.
Что этот поиск не умеет
Стоит знать заранее, чтобы не полагаться на него зря:
- Только кодексы. Отдельных федеральных законов (о защите прав потребителей, об ООО, об исполнительном производстве и прочих), подзаконных актов, судебной практики и разъяснений Пленума Верховного Суда здесь нет и найти их нельзя.
- Ответ верен на дату выгрузки. Право меняется; дату показывает
--codes-list. - Это поиск, а не юридическая консультация. Он показывает, что написано в законе; выводы и решения остаются за человеком.
- По умолчанию ищутся только действующие статьи. Утратившие силу — с флагом
--repealed.
Развернуть на сервере или доработать под себя
Claude Code с этим поможет: репозиторий устроен так, чтобы агент мог сам разобраться —
рядом лежит CLAUDE.md с описанием внутреннего устройства, а в комплекте есть Dockerfile
для сборки образа с поиском внутри.
Попросите его словами, например:
- «разверни этот поиск на моём сервере в docker»
- «подними MCP-сервер и подключи к моему Claude Code»
- «сделай веб-интерфейс к этому поиску»
- «проверь, всё ли готово к работе» — он запустит проверку и объяснит, чего не хватает
Из коробки есть образ, который включает и данные, и модели, так что контейнеру не нужен интернет:
# собрать образ и запустить сервер
docker build -t laws-mcp .
docker run -i --rm laws-mcp
Флаг -i у docker run обязателен: MCP-сервер общается через стандартный ввод и вывод,
без него контейнер сразу завершится. Перед сборкой образа выполните подготовку — модели
копируются в образ из папки models/.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.