Skip to main content
Glama
DE-BARY-LLC

debary-mcp-compliance

Official
by DE-BARY-LLC

debary-mcp-compliance

tests

Un servidor MCP que da a un modelo de lenguaje acceso a un motor de reglas de vivienda justa y publicidad para texto de anuncios inmobiliarios en EE. UU. — sin darle la decisión.

El motor es determinista: 81 reglas de frases, 35 elementos obligatorios, seis estados, ningún modelo en la ruta de decisión. Este servidor lleva la pregunta hacia dentro y el veredicto hacia fuera. El modelo al otro lado recibe cada hallazgo, la ley que lo respalda y la redacción que la base de reglas propone en su lugar. Lo que no recibe es permiso para discrepar.

Esa es la razón por la que esto es un servidor MCP y no un endpoint REST con una descripción bonita. Un modelo necesita una herramienta con la que no pueda discutir, y MCP es el protocolo que pone esa herramienta a su alcance sin ponerla dentro de su juicio.

Creado por DE BARY LLC. El motor que envuelve se ejecuta en gate.debary.us.


Pruébalo

Sin configuración, sin base de reglas, sin red:

pip install -e .
python demo.py

La demo inicia el servidor como subproceso, habla MCP con él y recorre un anuncio que falla, la ley detrás de cada hallazgo, una corrección y la nueva comprobación que detecta lo que la corrección aún no había resuelto.

⚠️ Sin nada configurado, el servidor se ejecuta con una base de reglas de muestra — seis reglas y cuatro elementos obligatorios, escritos para este repositorio para que cualquiera pueda ejecutarlo y probarlo. Se etiqueta a sí mismo: cada resultado lleva backend: "sample" y rules_version: "sample-1". Es ilustrativo y no es una herramienta de cumplimiento. Apunta GATE_APP_DIR o GATE_URL a la base real para obtener respuestas reales.


Qué expone

MCP tiene tres primitivas. Este servidor usa las tres, y cada una está aquí porque es la forma adecuada para lo que transporta.

Herramientas — cosas que el modelo pide al motor que haga

Herramienta

Propósito

check_listing

Ejecuta el texto del anuncio a través del motor. Devuelve hallazgos, elementos obligatorios faltantes y un veredicto blocking para ramificar.

explain_rule

La regla completa detrás de un hallazgo, incluida la ley. Así un modelo cita la autoridad en lugar de recordarla.

suggest_rewrite

Desplazamientos de caracteres de cada tramo problemático más la redacción de reemplazo aprobada. Deliberadamente no reescribe — componer texto es trabajo del modelo, verificarlo es del motor.

get_receipt

Una comprobación almacenada: qué se examinó, contra qué versión de reglas y el SHA-256 del texto exacto.

Recursos — material que el modelo puede leer directamente

URI

Contenidos

gate://rules

El índice de la base de reglas: cada regla y elemento obligatorio por id, gravedad y categoría

gate://rules/{rule_id}

Una regla completa, con autoridad y documento fuente

gate://elements/{state}

Elementos de divulgación que un anuncio debe llevar en ese estado

gate://receipt/{receipt_id}

Una comprobación pasada con su bloque de anclaje

Prompts — los flujos de trabajo, para que cada cliente no los reinvente

Prompt

Qué impone

review_listing

comprobar → citar → reescribir → volver a comprobar la reescritura. El último paso es el que se omite cuando un modelo improvisa.

explain_verdict

Convertir un recibo en algo que un agente con licencia pueda usar, incluido lo que el motor no pudo verificar mecánicamente.


Notas de diseño

El veredicto no es negociable. blocking es verdadero cuando se activa cualquier regla de alta gravedad o falta cualquier elemento obligatorio. La descripción de la herramienta lo dice, las instrucciones del servidor lo dicen, y el prompt review_listing le dice al modelo que informe de una reescritura fallida con claridad en lugar de presentarla como arreglada.

blocking: false no es una autorización. Significa que no se activó ninguna regla. elements_manual enumera lo que el motor no puede comprobar mecánicamente — eso aún necesita una persona. Una herramienta que informa silenciosamente de éxito sobre lo que no examinó es peor que ninguna herramienta.

Cada hallazgo lleva su autoridad. Un hallazgo sin cita es una opinión, y un motor de reglas que tiene opiniones es un modelo de lenguaje con pasos extra. Esto se aplica en la suite de pruebas, no solo como intención.

Tres backends, una interfaz. LocalBackend importa el motor y evalúa en proceso — sin red, y el texto del anuncio nunca sale de la máquina. RemoteBackend llama a un gate en ejecución por HTTP. SampleBackend lleva una pequeña base de reglas propia para que el servidor funcione en un clon nuevo. Los tres devuelven la misma forma, así que la capa MCP nunca sabe cuál respondió.

El fallback se anuncia a sí mismo. Una muestra que suplanta silenciosamente a la real sería una trampa. Esta pone sample en cada resultado y sample-1 en el campo de versión, y hay una prueba que falla si falta cualquiera de las dos etiquetas.

Dos transportes. stdio para un cliente de escritorio, streamable-http para el contenedor. sse todavía se acepta para clientes antiguos; está obsoleto en el protocolo y no debería elegirse para nada nuevo.

Requiere el SDK 2.x. El SDK de Python renombró FastMCP a MCPServer en 2.0 y lo movió de mcp.server.fastmcp a mcp.server.mcpserver; los campos de resultado pasaron de structuredContent a structured_content. Este servidor solo apunta a 2.x. Se consideró y rechazó soportar ambas versiones mayores detrás de un shim — añadiría una capa de compatibilidad a un proyecto cuyo argumento principal es que la ruta de decisión se mantiene simple.


Ejecutarlo

Contra una base de reglas local

pip install -e .
GATE_APP_DIR=/path/to/compliance-gate/app debary-mcp-compliance

Contra un gate en ejecución

GATE_URL=https://gate.debary.us GATE_TOKEN=… debary-mcp-compliance

GATE_APP_DIR gana si ambos están configurados: evaluar en proceso es más rápido y mantiene el texto del anuncio fuera de la red.

En Docker

docker compose up -d

El contenedor escucha en :8765/mcp (HTTP streamable) y se publica en el puerto del host 8766, vinculado a loopback. Pon un túnel delante en lugar de abrir un puerto. La base de reglas se monta de solo lectura — el contenedor puede evaluar reglas, no cambiarlas.

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

Configuración

Variable

Significado

GATE_APP_DIR

Directorio que contiene engine.py y rules.json. Selecciona el backend local.

GATE_URL

URL base de un gate en ejecución. Selecciona el backend remoto.

(ninguno configurado)

Cae a la base de reglas de muestra integrada.

GATE_TOKEN

Token Bearer para ese gate, si su API está cerrada.

MCP_TRANSPORT

stdio (predeterminado), streamable-http o sse.

MCP_HOST / MCP_PORT

Dirección de enlace para los transportes HTTP. Predeterminado 0.0.0.0:8765.


Pruebas

pip install -e ".[dev]"
pytest -q                                            # 21 protocol tests, no setup
GATE_APP_DIR=/path/to/compliance-gate/app pytest -q  # + 3 production tests

Las pruebas no importan las funciones de las herramientas y las llaman. Lanzan el servidor como subproceso, completan el protocolo de enlace por stdio y lo manejan como cliente — porque una herramienta que funciona en proceso y falla por la red es una herramienta que no funciona.

Lo que comprueban, más allá del camino feliz:

  • cada herramienta declara un esquema de salida, para que los llamadores ramifiquen por campos en lugar de por prosa

  • cada hallazgo lleva una autoridad y una redacción de reemplazo

  • los hallazgos nunca se superponen, para que nada se cuente dos veces y ninguna reescritura se corrompa

  • los desplazamientos de reescritura indexan realmente el texto que dicen coincidir

  • el resumen es del texto exacto enviado, no de una copia normalizada

  • un id de regla desconocido es un error, no una respuesta vacía

  • un elemento que el motor no puede verificar vuelve como manual, nunca como aprobado

  • el backend de muestra se etiqueta como tal

Las tres pruebas de producción se omiten a menos que GATE_APP_DIR esté configurado. Afirman la versión de reglas y los recuentos que este proyecto declara públicamente, y que los veredictos difieren por estado — afirmaciones que ninguna muestra puede sustituir.


Alcance y límites

⚠️ No es asesoramiento legal. Las reglas se compilaron a partir de leyes públicas, orientación de agencias y política de la industria; cada una lleva su fuente y la fecha en que se leyó. El cumplimiento lo deciden reguladores y tribunales, no este servidor.

⚠️ Seis estados: TX, CA, NY, FL, IL, WA. Una comprobación ejecutada contra el estado equivocado aplica silenciosamente los elementos obligatorios incorrectos — el argumento state no es cosmético.

⚠️ La base de reglas de muestra no es el producto. Seis reglas contra leyes públicas, escritas para que cualquiera pueda ejecutar este repositorio. La base detrás de gate.debary.us es más grande, está compilada a partir de documentos con fuentes y fechas de lectura, y se mantiene por separado.

⚠️ Los hallazgos de asesoramiento están limitados por estado. Una frase que es vinculante en un estado puede volver como advisory en otro. Eso es el motor siendo preciso, no incierto.


Apache-2.0 · DE BARY LLC, Austin TX

-
license - not tested
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

Latest Blog Posts

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