Skip to main content
Glama
kheidkamp

legal-research-mcp

by kheidkamp

Legal Research MCP MVP 0.2-dev — Render Free

Готовый к развёртыванию на Render исследовательский MCP только для чтения для запланированного исследовательского слоя legal-tax-advisor-de v2.3.0.

Что добавляет 0.2-dev

0.2-dev сохраняет консервативный контракт истории поправок из 0.1 и добавляет одну целевую возможность извлечения:

  • get_official_document_text: открывает уже идентифицированный официальный немецкий PDF/HTML-документ из строгого allowlist HTTPS-хостов, ищет локатор/запрос и возвращает evidence с учётом страниц и хэшами содержимого.

Это закрывает пробел D1, наблюдавшийся в Copilot Studio: агент мог идентифицировать Bundesrat-Drucksache 5/26, но не мог открыть Art. 30 Nr. 1, чтобы проверить конкретную команду о внесении поправки.

Related MCP server: de-eli-mcp

Инструменты

search_primary_sources

Контролируемый поиск по небольшому проверенному реестру законодательства (KStG, EStG, AO, GewStG). Только поиск.

get_norm

Извлекает текущую официальную консолидированную норму с gesetze-im-internet.de и возвращает метаданные структуры/evidence.

trace_norm_amendments

Безопасная реализация подключения к истории поправок. Может предоставлять заголовок поправок ко всему закону как поисковую подсказку, но намеренно остаётся partial/unknown, пока не будет реализован резолвер цепочек для конкретных норм.

get_official_document_text

Открывает идентифицированный официальный документ и извлекает точный фрагмент.

Принимаемые входные данные:

  • один из url или document_id;

  • locator и/или query;

  • необязательные max_passages и context_chars.

Поддерживаемые сокращения document-id:

  • BR-Drs. 5/26 -> PDF сервера документов Бундесрата;

  • BT-Drs. 21/3343 -> PDF сервера документов Бундестага;

  • BGBl. 2026 I Nr. 33 -> официальная страница публикации recht.bund.de.

Пример цели проверки поправки:

get_official_document_text(
  document_id="BR-Drs. 5/26",
  locator="Artikel 30",
  query="§ 8b Absatz 6 Satz 2"
)

Успешное совпадение по нормализованному запросу возвращает coverage_status=complete и evidence фрагмента с full_checked. Результат только по локатору является навигационным evidence и не должен рассматриваться как доказательство запрашиваемой формулировки поправки.

Безопасность SSRF / загрузки

get_official_document_text намеренно ограничен:

  • только HTTPS;

  • точный allowlist официальных хостов;

  • каждый переход по редиректу повторно проверяется;

  • учётные данные и нестандартные порты отклоняются;

  • размер загрузки ограничен 20 МБ;

  • только извлечение текста из PDF, без JavaScript/выполнения браузера;

  • только запросы на чтение.

Текущие разрешённые семейства включают официальный сервер документов Бундестага/Бундесрата, recht.bund.de, gesetze-im-internet.de, веб-хосты Бундестага/Бундесрата и сайт Федерального министерства финансов.

Развёртывание на Render

Используйте включённый Blueprint render.yaml. Сервис остаётся настроенным как:

  • Web Service;

  • Docker runtime;

  • Free plan;

  • регион Frankfurt;

  • проверка здоровья /health;

  • динамическая привязка к PORT Render;

  • конечная точка MCP на /mcp;

  • явный allowlist хостов из RENDER_EXTERNAL_HOSTNAME.

Подробные шаги: docs/render-free-deploy.md.

Локальная настройка

python -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
python -m pytest -q
uvicorn app:app --reload --port 8080

Локальные конечные точки:

  • Health: http://localhost:8080/health

  • MCP: http://localhost:8080/mcp

Всё ещё не реализовано

  • резолвер исторических версий законов;

  • полный резолвер цепочек поправок для конкретных норм;

  • автоматическое обнаружение всех документов Bundesgesetzblatt/Bundestag/Bundesrat;

  • поиск судебной практики;

  • комплексный поиск руководств BMF;

  • производственная аутентификация.

Граница безопасности DEV

Развёртывание Render Free остаётся намеренно неаутентифицированным для DEV-тестирования. Не публикуйте агента Copilot и не отправляйте конфиденциальные факты клиентов/дел через конечную точку.

Бесплатные Web Services Render могут выключаться после бездействия и не являются производственной целью.

Обновление 0.1 -> 0.2

  1. Замените файлы репозитория этим пакетом и закоммитьте/запушьте в ветку, которую развёртывает Render.

  2. Дождитесь, пока развёртывание Render станет Live.

  3. Проверьте, что /health возвращает версию 0.2.0-dev.

  4. В Copilot Studio откройте существующую конфигурацию MCP-сервера Legal Research DE и проверьте, что get_official_document_text доступен/включён.

  5. Запустите тест извлечения поправок D1 и проверьте Activity Trace.

Подробную последовательность обновления/тестирования см. в docs/render-free-deploy.md.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for accessing and searching German federal law documents from gesetze-im-internet.de. Provides tools to retrieve specific paragraphs, perform full-text searches, and list available laws.
    10
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Searches and retrieves German federal legislation from NeuRIS, the official legal information portal, providing verifiable ELI identifiers and German citations.
    15
    248 PyPI
    4
    Apache 2.0
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides LLM-friendly access to German federal legislation via the NeuRIS API, enabling tool-based retrieval of laws, norms, and statutory text.
    18 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides read-only access to current German federal law, supporting legislation search, provision retrieval, and citation handling.
    Apache 2.0