debary-mcp-compliance
Officialdebary-mcp-compliance
MCP-сервер, который даёт языковой модели доступ к движку правил fair housing и рекламных требований для текстов объявлений о недвижимости в США — но не передаёт ей само решение.
Движок детерминирован: 81 фразовое правило, 35 обязательных элементов, шесть штатов и ни одной модели по пути принятия решения. Этот сервер принимает вопрос на входе и отдаёт вердикт на выходе. Модель на другом конце получает каждое выявленное нарушение, закон, стоящий за ним, и формулировку, которую база правил предлагает взамен. Чего она не получает — так это права не согласиться.
Именно поэтому это MCP-сервер, а не REST-эндпоинт с красивым описанием. Модели нужен инструмент, с которым она не может спорить, и MCP — это протокол, который кладёт такой инструмент в пределы её досягаемости, не отдавая его в её суждение.
Создано DE BARY LLC. Движок, который сервер оборачивает, работает на gate.debary.us.
Попробовать
Никакой конфигурации, никакой базы правил, никакой сети:
pip install -e .
python demo.pyДемонстрация запускает сервер как подпроцесс, общается с ним по протоколу MCP и пошагово разбирает: объявление, которое не проходит проверку; закон, стоящий за каждым нарушением; исправление; и повторную проверку, которая вылавливает то, что исправление всё ещё упустило.
⚠️ Если ничего не настроено, сервер работает на демонстрационной базе правил — шести правилах и четырёх обязательных элементах, написанных для этого репозитория, чтобы его мог запустить и проверить любой желающий. Она себя маркирует: каждый результат содержит backend: "sample" и rules_version: "sample-1". Это иллюстрация и не инструмент комплаенса. Направьте GATE_APP_DIR или GATE_URL на настоящую базу, чтобы получить настоящие ответы.
Что он предоставляет
У MCP есть три примитива. Этот сервер использует все три, и каждый присутствует здесь потому, что это правильная форма для того, что он передаёт.
Tools — то, что модель просит движок выполнить
Tool | Какую задачу решает |
| Прогоняет текст объявления через движок. Возвращает найденные нарушения, отсутствующие обязательные элементы и вердикт |
| Полностью правило, стоящее за нарушением, включая нормативный акт. Модель цитирует источник, а не вспоминает его по памяти. |
| Символьные смещения каждого проблемного фрагмента плюс одобренная заменяющая формулировка. Сознательно не переписывает — сочинение текста — задача модели, а проверка — движка. |
| Сохранённая проверка: что именно было исследовано, относительно какой версии правил и каков SHA-256 точного текста. |
Resources — материалы, которые модель может читать напрямую
URI | Содержимое |
| Индекс базы правил: все нарушающие элементы и обязательные элементы по идентификатору, уровню серьёзности и категории |
| Одно правило в полном виде, с авторитетным источником и документом-первоисточником |
| Элементы раскрытия, которые обязана содержать реклама в этом штате |
| Прошлая проверка с её опорным блоком |
Prompts — готовые сценарии, чтобы каждый клиент не изобретал их заново
Prompt | Что он предписывает |
| проверка → цитата → переписывание → снова проверка переписанного текста. Последний шаг — ровно то, что пропустит, когда модель импровизирует. |
| Превращает квитанцию в результат, на который лицензированный агент может реально опереться, включая то, что движок не смог проверить автоматически. |
Заметки по разработке
Вердикт не является предметом обсуждения. blocking равно true, когда срабатывает любое правило высокого уровня серьёзности или отсутствует любой обязательный элемент. Описание инструмента говорит об этом, серверные инструкции говорят об этом, и промпт review_listing предписывает модели честно сообщать о неудачном переписывании, а не подавать его как исправленное.
blocking: false — ещё не допуск. Это означает лишь, что ни одно правило не сработало. элементы_ручные содержит список того, что движок не может проверить механически, — а это всё равно требует — требуется. Инструмент, который молча докладывает об успехе по тому, чего не проверил, хуже, чем инструмент вообще.
Каждое нарушения несёт свой источник. Нарушение без ссылки на него — просто мнение; движок правил, у которого есть мнения, — это языковая модель с лишними шагами. Это обеспечено в тестовом контуре, а не просто заявлено.
Три бэкенда — один интерфейс. LocalBackend подключает движок и проводит оценку в том же процессе — без сети, и текст объявления никогда не покидает машину. RemoteBackend вызывает запущенный сборочный узел по HTTP. SampleBackend несёт в себе небольшую базу правил, чтобы сервер поднимался в свежем клоне. Все три возвращают одну и ту же форму, поэтому слой MCP никогда не узнает, кто именно ответил.
Запасной план сам объявляет о себе. Образцовая база, которая тихо прикидывается настоящей, была бы ловушкой. Эта же ставит sample в каждый результат и sample-1 в поле версии, а также есть тест, который падает, если одна из меток пропадёт.
Два транспорта. stdio — для десктопного клиента, streamable-http — для контейнера. sse ещё принимается для старых клиента, но он объявлен устаревшим в протоколе, и для нового кода его выбирать не стоит.
Требуется SDK 2.x. Python SDK в 2.0 переименовал FastMCP в MCPServer и перенёс его из mcp.server.fastmcp в mcp.server.mcpserver; поля результата переехали с structuredContent на structured_content. Этот сервier предназначен только для 2.x. Поддержку обеих мажорных версий за прослойкой рассматривали и отодвинули: это добавило бы слой совместимости в проект, главный аргумент которого — в том, что путь принятия решения остаётся простым.
Запуск
С локальной базой правил
pip install -e .
GATE_APP_DIR=/path/to/compliance-gate/app debary-mcp-complianceЗапуск с работающим шлюзом
GATE_URL=https://gate.debary.us GATE_TOKEN=… debary-mcp-complianceЕсли заданы обе переменные, побеждает GATE_APP_DIR: оценка в рамках процесса быстрее и не гоняет текст объявления по сети сили.
В Docker
docker compose up -dКонтейнер слушает :8765/mcp (streamdle-streamable HTTP) и публикуется на хосте порту8766`, привязан к loopback. Ставьте перед ним туннель, а не открывайте порт наружу. База правил смонтирована в режиме только на чтение — из контейнера можно применять правила, но не изменять их.
Claude Desktop
{
"mcpServers": {
"debary-compliance": {
"command": "debary-mcp-compliance",
"env": { "GATE_APP_DIR": "/path/to/compliance-gate/app" }
}
}
}Claude Code
claude mcp add debary-compliance \
--env GATE_APP_DIR=/path/to/compliance-gate/app \
-- debary-mcp-complianceКонфигурация
Переменная | Значение |
| Каталог с |
| Базовый URL работающего шлюза. Выбирает удалённый бэкенд. |
(ни одно не задано) | Запасной вариант на встроенных демонстрационных правилах. |
| Bearer-токен для шлюза, если его API закрыт. |
|
|
| Адрес привязки для HTTP-транспортов. По умолчанию |
Тесты
pip install -e ".[dev]"
pytest -q # 21 protocol tests, no setup
GATE_APP_DIR=/path/to/compliance-gate/app pytest -q # + 3 production testsТесты не импортируют товар инструмент функции и не вызывают их сами. Они запускают сервер подпроцессом, проходят рукопожатие по stdio и водят его, как клиент. Потому что инструмент, работающий внутри процесса и ломающийся по сети, — это инструмент, который не работает.
Что они проверяют (помимо свертки с путёвкой):
каждый инструмент объявляет output schema, поэтому вызывающая сторона ветвится по полям, а не по прозе;
каждое нарушение несёт источник и заменяющие формулировки;
нарушения никогда не перекрываются, поэтому ничего не учитывается дважды и ни один перепис не искажается;
смещения переписывания действительно индексируют текст, с которыми они заявляют совпадение;
дайджест получается именно из отправленного текста, а не из нормализованной копии;
неизвестный идентификатор правила — ошибка, а не пустой ответ;
элемент, который движок не может проверить, возвращается как
manual, никогда как пропуск;демонстрационный бэкенд навешивает на себя ярлык демонстрационного бэкенда.
Три боевых теста пропускаются, если не установлена GATE_APP_DIR. Они проверяют версию правил и те количественные показатели, которые этот проект заявляет публично, а также то, что вердикты различаются по штатам, — то, чего никакая демонстрация заменить не может.
Область применения и ограничения
⚠️ Не юридическая консультация. Правила составлены из публичных законодательных актов, разъяснений органов и отраслевых политик; у каждого указан источник и дата его изучения. Соответствие правилам определяется регуляторами и судами, а не этим сервером.
⚠️ Шесть штатов: TX, CA, NY, FL, IL, WA. Проверка, проведённая для ошибочного штата, незаметно подставит предположительно не те обязательные элементы — аргумент state не декоративный.
⚠️ Демонстрационная база правил — это не результат продукта. Шесть правил по публичным источникам составлены так, чтобы репозиторий можно было запускать любому. База за gate.debary.us больше, собрана по первоисточникам с датами прочтения и поддерживается отдельно.
⚠️ Предупреждения имеют привязку к штату. С выработанной обязательностью в одном штате, в другом она может вернуться как advisory. Движок таким образом проявляет точность, а не неуверенность.
Apache-2.0 · DE BARY LLC, Austin TX
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Deterministic compliance and vertical knowledge bases for autonomous agents. Free 24hr trial.
Deterministic trust gate for AI output: leaked-secret, prompt-injection & PII in one call.
Deterministic validation for AI-generated artifacts: JSON Schema, OpenAPI response, SQL syntax.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DE-BARY-LLC/debary-mcp-compliance'
If you have feedback or need assistance with the MCP directory API, please join our Discord server