MCPZT

OPEN SOURCE · AUTOALOJADO · MCP

Tus agentes actúan.
Tú pones las reglas.

Controla lo que pueden ejecutar. Comprueba qué evidencia deja cada acción.

Políticas, validaciones y aprobaciones delante de tus servidores MCP. Recibos firmados y comprobaciones externas para entender lo que ocurrió, con límites de confianza explícitos.

python -m pip install mcp-zero-trust-layer==0.6.0

Python 3.11–3.14 · Apache-2.0 · Sin servicio SaaS obligatorio

01 / EXPLORA LA EVIDENCIA

El timeout no es el final de la historia.

Una llamada pierde su respuesta. El gateway conserva el resultado desconocido y consulta el recibo sin repetir la acción. Después, un observador contrasta la declaración con una fuente configurada.

SIMULACIÓN LOCAL · SIN PAGOS NI LLAMADAS A STRIPE

Se intentó enviar la llamada, pero no se observó una respuesta. El efecto permanece desconocido.

Gateway
unknown
Destino
Observador

Traza de métodos del destino

tools/call

SIGNED EVIDENCE / v1 + v2

Cada firma tiene una relación que comprobar.

Explora los documentos del caso seleccionado. Los identificadores y compromisos enlazan la petición autorizada con el intento, el recibo y la observación posterior.

  1. 01 → 02Vincula la autorización
  2. 02 → 03Vincula el permiso completo
  3. 03 → 04Vincula la evidencia v1
Campos del fixturegateway-demo

Autoriza esta petición concreta; por sí sola no demuestra que se haya enviado.

Mapa de vínculos declarados en los fixtures. La verificación criptográfica se realiza con la CLI y tus claves públicas de confianza, no en esta página.

Contrato y recuperación paso a paso ↗

Datos sintéticos de los fixtures de 0.6.0. Administración compartida; independencia no demostrada. El navegador muestra registros, no verifica sus firmas. La verificación offline autentica al observador, no una firma de Stripe ni el estado externo actual.

Reproducir en un directorio nuevo
mcpzt evidence check-demo --directory ./mcpzt-check-demo

Usa una ruta nueva en cada ejecución. La demo genera claves locales: no publiques el directorio completo.

02 / GARANTÍAS CON ALCANCE

Saber qué sabes. Y qué falta por saber.

01 / CONTROL

Autoriza la llamada

Filtra el descubrimiento, valida los argumentos y exige aprobación cuando lo indique la política.

Permitir o enviar una llamada no demuestra su ejecución externa.

02 / RECIBO

Autentica la declaración

Vincula el recibo firmado a la misma autorización, petición e intento. Requiere un destino adaptado.

Un destino puede firmar una declaración incorrecta.

03 / OBSERVACIÓN

Contrasta una fuente

Un observador consulta una fuente configurada y añade su informe al historial de evidencia.

El informe depende del observador y de la fuente; no prueba independencia ni ejecución única.

Antes de enviar: la política decide.

Resultados de la configuración GitHub del repositorio, ejecutada contra un servidor simulado. Una denegación o una aprobación pendiente no envían la llamada al destino.

Permitido

github.search_issues

Llamadas al destino simulado: 1

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "Synthetic issue search result"
      }
    ]
  }
}
Denegado

github.delete_repository

Llamadas al destino simulado: 0

{
  "jsonrpc": "2.0",
  "id": 2,
  "error": {
    "code": -32001,
    "message": "Request denied by policy",
    "data": {
      "decision": "deny",
      "policy_id": null,
      "reason": "default decision: deny",
      "validation_errors": []
    }
  }
}
Requiere aprobación

github.merge_pull_request

Llamadas al destino simulado: 0

{
  "jsonrpc": "2.0",
  "id": 3,
  "error": {
    "code": -32010,
    "message": "Approval required",
    "data": {
      "decision": "require_approval",
      "policy_id": "critical-actions-need-approval",
      "reason": "matched policy critical-actions-need-approval",
      "approval_id": "appr_5d1d28d871464cbe99ce7901fe74a99d",
      "expires_at": "2026-09-17T19:22:12.134061+00:00"
    }
  }
}

Abrir fixture JSON ↗

03 / EMPIEZA CON UN CASO REALISTA

Tus herramientas. Tus límites.

Configuraciones de partida para adaptar a tu entorno. Los seis ejemplos básicos tienen la evidencia desactivada; los recibos y las comprobaciones se prueban en demos separadas.

01 / MCP

Filesystem

Lectura acotada y escritura con aprobación.

Node.js · raíz de archivos local

Ver configuración

02 / MCP

GitHub

Consultas permitidas y cambios sujetos a política.

Servidor MCP · credenciales de GitHub

Ver configuración

03 / MCP

PostgreSQL

Valida consultas SQL antes de enviarlas.

Servidor MCP · base de datos de prueba

Ver configuración

04 / MCP

OIDC + CRM

Permisos por grupo y redacción de campos de salida.

Proveedor OIDC · servidor CRM

Ver configuración

05 / MCP

HTTP protegido

Separa la identidad del cliente y la credencial del upstream.

Upstream HTTP · credencial del servidor

Ver configuración

06 / MCP

Multi-MCP

Políticas por capacidad para varios servidores.

Servicios de ejemplo · configuración local

Ver configuración

Catálogo y requisitos

El conector inicial cubre stripe.refund.status.v1. La demo simula el proveedor; ejecutar una prueba real requiere credenciales y un reembolso de sandbox preparado.

04 / ENTRE EL AGENTE Y EL SERVIDOR

Una frontera de control explícita.

  1. 01Identidad
  2. 02Política y validación
  3. 03Aprobación, si aplica
  4. 04Intención auditada
  5. 05Envío al destino
  6. 06Respuesta y evidencia

Esquema conceptual. El recibo requiere configuración de confianza; la reconciliación y la comprobación externa son pasos posteriores de solo lectura.

Políticas y datos

Control por capacidad, validadores de argumentos y redacción de salida. La protección depende de las políticas y del alcance de cada validador; revisa los ejemplos antes de aplicarlos a datos reales.

Aprobaciones y auditoría

Aprobaciones vinculadas a la petición y registros de intención y resultado. El perfil de evidencia required exige enforce, auditoría estricta y claves de confianza configuradas.

Transportes y clientes

HTTP JSON POST, sin passthrough SSE. Stdio POSIX acotado y serial; no admite mensajes iniciados por el servidor. Las sesiones HTTP viven en el proceso y requieren afinidad. Generar una configuración de cliente no equivale a certificar un proveedor.

Límites de la evidencia

Las firmas no demuestran verdad física, causalidad, liquidación bancaria, completitud global ni ejecución exactamente una vez. Las observaciones tienen alcance y tiempo; un informe histórico no acredita el estado actual.

Consultar el perfil soportado

05 / PRUÉBALO LOCALMENTE

De la política a la evidencia.

Instala la versión de esta página y elige una demo. No necesitas credenciales de proveedores para las simulaciones locales.

01Instala MCPZT

python -m pip install mcp-zero-trust-layer==0.6.0

Python 3.11–3.14

02Prueba un gateway HTTP

mcpzt demo --output ./mcpzt-http-demo
cd mcpzt-http-demo
bash run-demo.sh

Genera los archivos y ejecuta el script desde su directorio. La demo comprueba sus resultados.

03Explora un recibo tras un timeout

mcpzt evidence demo --directory ./mcpzt-receipt-demo

Usa una ruta nueva en cada ejecución. La demo genera claves locales: no publiques el directorio completo.

04Contrasta una fuente simulada

mcpzt evidence check-demo --directory ./mcpzt-check-demo

Usa una ruta nueva en cada ejecución. La demo genera claves locales: no publiques el directorio completo.

Docker / GHCR
docker run --rm ghcr.io/686f6c61/mcp-zero-trust-layer:0.6.0 --help