cMCP (Confidential MCP)

puerta de enlace MCP confidencial que ejecuta MCP dentro de un TEE (TPM, AMD SEV-SNP, Intel TDX, NVIDIA H100 CC, OPAQUE runtime), llevando la política Cedar al enclave y emitiendo registros de atestación TRACE firmados.

Documentación

cMCP

cMCP: Runtime Confidencial de MCP

Aplica la política de herramientas de MCP dentro de un TEE, donde el agente que gobierna no puede alcanzarlo

Documentation

Inicio Rápido · Arquitectura · Configuración · CLI · Registro de Cambios

CI License: MIT PyPI OpenSSF Scorecard Discord

Vista Previa para Desarrolladores - lanzado en la Cumbre de Computación Confidencial, 23 de junio de 2026. Puede tener cambios importantes antes de v1.0. Consulta STATUS.md para ver exactamente qué se incluye hoy frente a lo que está en la hoja de ruta.

cMCP (Runtime Confidencial de MCP) es la forma segura y confidencial de ejecutar MCP: una puerta de enlace de código abierto que aplica la política de llamadas a herramientas de MCP dentro de un Entorno de Ejecución Confiable (TEE) por hardware. Cada llamada a una herramienta es interceptada, evaluada contra un paquete de políticas Cedar y aplicada donde el proceso que gobierna no puede alcanzarla. Cada sesión produce una Reclamación TRACE firmada que un verificador comprueba sin confiar en el operador, atestiguada por hardware cuando la puerta de enlace se ejecuta en un TEE y solo firmada en modo de software. Si buscas una versión segura de MCP, este es el runtime de AgenTrust para ello.

En resumen - Apunta tu agente a la Puerta de Enlace cMCP. Evalúa cada llamada a una herramienta contra una política Cedar dentro de un TEE, bloquea o redacta lo que la política deniega y emite una Reclamación TRACE a prueba de manipulaciones como prueba. Ejecuta pip install cmcp-runtime y comienza en modo de software sin necesidad de hardware.

Tu agente llama a Snowflake, Salesforce, una docena de APIs. ¿Qué impide que filtre los datos de un cliente en una de esas llamadas? Si un regulador pregunta, ¿podrías demostrar que no lo hizo?


El problema

Un agente llama a una herramienta. El motor de políticas dice permitir. La llamada a la herramienta se realiza.

Nada de eso demuestra que el propio motor de políticas no haya sido comprometido. La gobernanza de MCP solo por software no puede garantizar:

  • Que la política Cedar en disco sea la que se ejecutó. Un administrador malintencionado puede intercambiar el paquete después de la aprobación; la verificación del hash se ejecuta dentro del mismo sistema operativo que controla el administrador.
  • Que la decisión de permitir/denegar no se haya alterado en memoria. Una CVE en la cadena de suministro del evaluador se ejecuta en el mismo espacio de direcciones que el atacante.
  • Que el registro de auditoría refleje lo que realmente sucedió. Cualquier parte que tenga la clave de firma del software puede reconstruir una cadena de auditoría válida después del hecho.

El plano de control que gobierna las llamadas a herramientas debe ejecutarse donde no pueda ser alcanzado por el proceso que gobierna.

Aplicación de políticas atestiguada por hardware para llamadas a herramientas de MCP. Cada llamada a una herramienta es interceptada, evaluada contra un paquete de políticas Cedar y aplicada por un motor de políticas que se ejecuta dentro de un Entorno de Ejecución Confiable (TEE). El hash del paquete de políticas se mide en el informe de atestiguación de hardware antes de que se ejecute cualquier código.

A diferencia de las soluciones de conectividad basadas en túneles, el Runtime cMCP procesa las cargas útiles de las llamadas a herramientas dentro del TEE. El proveedor de conectividad ve texto cifrado, no texto plano. Lo único que sale del enclave es la reclamación TRACE firmada.


Inicio Rápido

pip install cmcp-runtime

Crea cmcp-config.yaml:

attestation:
  provider: auto
  enforcement_mode: advisory   # advisory eases first-run tuning; the default is `enforcing`
listen_addr: "127.0.0.1:8443"  # pin loopback: dev mode runs without a bearer token
policy_bundle_path: ./policies/
catalog_path: ./catalog.json

listen_addr no es opcional aquí. CMCP_DEV_MODE=1 omite deliberadamente el requisito del token portador para que puedas probar rápidamente, y el enlace predeterminado sigue siendo 0.0.0.0:8443. En 0.3.0 esa combinación levantaba una puerta de enlace no autenticada en cada interfaz de tu máquina. Desde 0.4.0 se rechaza: el modo de desarrollo sin token solo puede vincularse a una dirección de bucle local, y un enlace no local requiere CMCP_BEARER_TOKEN. Fija listen_addr explícitamente y la configuración es correcta en ambos casos.

Inicia la puerta de enlace:

CMCP_DEV_MODE=1 cmcp start --config cmcp-config.yaml

Haz una llamada a una herramienta:

curl -X POST http://localhost:8443/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"salesforce.contacts","arguments":{"query":"Acme Corp"},"_cmcp":{"session_id":"s1","workflow_id":"demo-agent"}}}'

¿Prefieres una versión guiada? agentrust-io.com/quickstart recorre el mismo camino en unos diez minutos en una computadora portátil, sin hardware y sin registro: instala, escribe una regla Cedar forbid, observa cómo una llamada a una herramienta devuelve 403 POLICY_DENY antes de llegar a un proveedor ascendente y luego verifica el recibo firmado.

Consulta docs/quickstart.md para el tutorial completo: política Cedar, catálogo de herramientas, primera Reclamación TRACE y verificación (sin necesidad de TEE por hardware).


Cómo funciona

  1. El agente envía cada llamada a una herramienta a la Puerta de Enlace cMCP en lugar de directamente a los servidores MCP.
  2. Al inicio, la puerta de enlace mide el hash del paquete de políticas Cedar en el informe de atestiguación de hardware. No se ejecuta ningún código antes de esta medición.
  3. Cada llamada entrante a una herramienta es evaluada por el motor de políticas Cedar que se ejecuta dentro del TEE. El resultado es permitir, denegar o redactar. La llamada y su decisión se agregan a la cadena de auditoría sellada por hardware.
  4. Al final de la sesión, la puerta de enlace produce una Reclamación TRACE: un artefacto firmado y atestiguado por hardware que registra qué herramientas se ejecutaron, qué política decidió cada llamada y la cadena de auditoría completa. Un verificador comprueba esto sin confiar en el operador.
Agent -> cMCP Runtime -> Cedar Policy Engine (TEE) -> Tool
                     |
               GatewayClaim (TRACE Profile)
               +-- trace.eat_profile
               +-- trace.runtime.platform + measurement
               +-- trace.policy.bundle_hash
               +-- trace.cnf.jwk  (Ed25519 confirmation key)
               +-- gateway.audit_chain (root/tip/length)
               +-- signature (Ed25519 over canonical JSON)

Proveedores de hardware

ProveedorPlataformaGarantíaNotas
tpmTPM 2.0 / vTPM (Azure, AWS, GCP Trusted Launch)MediaCita TPM local
sev-snpAMD SEV-SNP (Azure DCasv5, AWS C6a Nitro)AltaAMD KDS
tdxIntel TDX (Azure DCedsv5, GCP C3)AltaIntel PCS
gpu-cc (v0.2)NVIDIA H100/H200/Blackwell (modo CC)AltaServicio de Atestiguación Remota de NVIDIA (NRAS)
opaque (opt-in)Runtime Confidencial OPAQUEn/d (aún no implementado)Marcador de posición: excluido de la detección automática; seleccionarlo explícitamente genera un error de no implementado

Orden de sondeo de detección automática de proveedores: azure-cvm -> tpm -> sev-snp -> tdx. Se selecciona el primer proveedor cuyo detect() tenga éxito. opaque es un marcador de posición aún no implementado: está excluido de la detección automática, y seleccionarlo explícitamente genera ATTESTATION_PROVIDER_NOT_IMPLEMENTED en lugar de fallar silenciosamente. Si no se detecta ningún proveedor de hardware, la puerta de enlace se inicia solo bajo CMCP_DEV_MODE=1 (una alternativa solo por software sin atestiguación) y de lo contrario se niega a iniciar.

from cmcp_runtime.config import TEEProvider

# Auto-detect (default)
# attestation.provider: auto  ->  azure-cvm -> tpm -> sev-snp -> tdx
# (software-only is used only under CMCP_DEV_MODE=1)

# Explicit hardware selection
# attestation.provider: sev-snp

# OPAQUE Managed Runtime (opt-in only; not yet implemented)
# OPAQUE_ATTESTATION_URL=https://... cmcp start --config cmcp-config.yaml

Modos de aplicación

ModoComportamientoCaso de uso
enforcingLas denegaciones de política devuelven HTTP 403; la llamada no se reenvíaProducción
advisoryLas denegaciones de política se registran; la llamada continúaPrimer despliegue, ajuste de políticas
silentLa política se evalúa pero no se registra ni bloquea nadaLínea base

El predeterminado es enforcing. Establece enforcement_mode: advisory en cmcp-config.yaml para usar el modo de asesoría.


Configuración

Referencia completa de cmcp-config.yaml:

attestation:
  provider: auto                    # auto | tpm | sev-snp | tdx | opaque | software-only
  enforcement_mode: enforcing       # enforcing | advisory | silent
  validity_seconds: 86400           # attestation freshness window (default: 24 hours)
  staleness_policy: fail_closed     # fail_closed | warn_only
  expected_measurement: ~           # pin a specific PCR/measurement (optional)

policy_bundle_path: policies/       # directory containing .cedar files and manifest.json
catalog_path: catalog.json          # approved tool catalog

listen_addr: "127.0.0.1:8443"     # tokenless dev mode is loopback-only; set CMCP_BEARER_TOKEN before binding wider
max_response_size_bytes: 2097152    # 2 MB default
policy_reload_interval_seconds: 0   # >0 with a pinned CMCP_POLICY_HASH refuses to start, see docs/spec/policy-hot-reload.md

Variables de entorno:

VariableEfecto
CMCP_DEV_MODE=1Usa el proveedor TEE solo por software; no requiere hardware
CMCP_BEARER_TOKENRequiere este token portador en todas las solicitudes entrantes
OPAQUE_ATTESTATION_URLHabilita la atestiguación del Runtime Gestionado OPAQUE (opt-in explícito)

Referencia de CLI

ComandoBanderasDescripción
cmcp start--config PATH (obligatorio)Inicia la puerta de enlace
cmcp validate-config--config PATH (obligatorio)Valida cmcp-config.yaml sin iniciar
cmcp validate-bundle--bundle-path PATH (obligatorio), --expected-hash sha256:<hex> (obligatorio)Verifica un hash de paquete Cedar antes del despliegue
cmcp verifyCLAIM_FILE (obligatorio); --policy-hash, --catalog-hash, --max-age, --trusted-key, --trusted-tpm-ca, --audit-bundle, --agent-manifest, --agent-manifest-trust-anchorVerifica una Reclamación TRACE firmada (firma, esquema, frescura, cadena de auditoría, hashes fijados y anclas de confianza)

Reclamaciones TRACE

Una GatewayClaim es la unidad de prueba entregada a un auditor, regulador o verificador posterior. Se produce por sesión (o por llamada, configurable) y se firma con una clave que nunca sale del TEE.

CampoDescripción
trace.eat_profileURI de perfil EAT: tag:agentrust-io.com,2026:trace-v0.2
trace.runtimePlataforma TEE y medición de hardware registradas en el arranque del enclave
trace.policy.bundle_hashSHA-256 del paquete Cedar cargado al inicio; cambiar cualquier archivo de política cambia este valor
trace.cnf.jwkClave pública Ed25519 vinculada a la clave de firma del TEE
trace.tool_transcriptVista por llamada derivada de la cadena de auditoría: hash (vincula a la punta de la cadena de auditoría), call_count y entries que preserva la privacidad (nombre de la herramienta, clase de datos, decisión)
gateway.audit_chainRaíz y punta del registro de auditoría encadenado por hash; verificable sin reproducir entradas individuales
signatureEd25519 sobre JSON canónico del cuerpo completo de la reclamación (RFC 8785)

(Esta tabla es un resumen de los campos más utilizados.)

La verificación con la biblioteca cmcp_verify no requiere confiar en el operador. El verificador comprueba la firma contra la clave vinculada al TEE, el hash del paquete de políticas contra el valor aprobado y la cadena de auditoría para verificar la consistencia interna.

El esquema normativo es schemas/trace-claim.schema.json, y docs/quickstart.md muestra un ejemplo completo. Consulta docs/spec/verification-library.md y la especificación TRACE para el protocolo de verificación completo.


Alineación con estándares

EstándarCobertura
OWASP Agentic AI Top 10MCP10 (fuga de datos mediante llamadas a herramientas), MCP02 (herramientas no autorizadas), MCP08 (gobernanza demostrable), MCP04 (cadena de suministro)
NIST SP 800-207Punto de decisión de políticas dentro del TEE; sin confianza implícita en la identidad de la carga de trabajo
Ley de IA de la UE, Art. 12, 15Registros de auditoría por decisión (Art. 12); controles de ciberseguridad respaldados por TEE (Art. 15)
DORA Art. 9Cadena de atestiguación; retención de registros de auditoría mediante gateway.audit_chain
RATS/EAT RFC 9711GatewayClaim es un EAT; el campo eat_profile identifica el perfil TRACE

Seguridad

HerramientaQué comprueba
ruffLinting de estilo e importaciones en cada PR
banditLinting de seguridad de Python en cada PR
pip-auditEscaneo de vulnerabilidades de dependencias en cada PR
mypyVerificación estática de tipos en cada PR
CodeQLSAST de Python, consultas extendidas de seguridad, semanal
OpenSSF ScorecardPuntuación semanal, carga de SARIF

Consulta SECURITY.md para informes de vulnerabilidades y SLA de respuesta. Consulta LIMITATIONS.md para los límites explícitos del alcance, incluidos los riesgos residuales de captura de cargas útiles de APM, inyección de configuración en tiempo de ejecución y cadena de suministro P4.1 (typosquat) que la Fase 1 no cierra.


Documentación

PáginaDescripción
docs/quickstart.mdDe cero a la primera Reclamación TRACE en menos de 30 minutos
docs/configuration.mdReferencia completa de configuración con todos los campos y valores predeterminados
docs/SPEC.mdEspecificación del producto: taxonomía de problemas, arquitectura, matriz de cobertura
docs/spec/threat-model.mdAnálisis STRIDE, modelo de adversario, riesgos residuales
docs/spec/cedar-policy.mdReferencia del lenguaje de políticas Cedar y esquema
docs/testing/benchmarks.mdPuntos de referencia de latencia y rendimiento por proveedor TEE

Preguntas frecuentes

¿Qué es cMCP?

cMCP (Runtime Confidencial de MCP) es una puerta de enlace de código abierto que aplica la política de llamadas a herramientas de MCP dentro de un Entorno de Ejecución Confiable por hardware. Intercepta cada llamada a una herramienta, la evalúa contra un paquete de políticas Cedar, aplica la decisión (permitir, denegar o redactar) y registra la llamada en una cadena de auditoría sellada por hardware.

¿En qué se diferencia cMCP de la gobernanza de MCP solo por software?

La gobernanza solo por software ejecuta el motor de políticas en el mismo sistema operativo al que pueden acceder un operador o un CVE de la cadena de suministro, por lo que no puede demostrar que la política ejecutada fue la aprobada ni que la decisión no fue alterada en memoria. cMCP ejecuta el motor de políticas dentro de un TEE y mide el hash del paquete Cedar en el informe de atestación de hardware antes de que se ejecute cualquier código, de modo que el plano de control no puede ser alcanzado por el proceso que gobierna.

¿Necesito hardware especial para probarlo?

No. Establece CMCP_DEV_MODE=1 para usar el proveedor TEE solo de software y ejecutar la guía de inicio rápido completa sin un TEE de hardware. Los proveedores de hardware (TPM, AMD SEV-SNP, Intel TDX, OPAQUE) se utilizan en producción.

¿Qué es una TRACE Claim?

Una TRACE Claim (un GatewayClaim) es un artefacto firmado y atestiguado por hardware generado por sesión. Registra qué herramientas se ejecutaron, qué política decidió cada llamada, el hash del paquete Cedar y la cadena de auditoría, y está firmado con una clave Ed25519 que nunca sale del TEE. Un verificador la comprueba con la biblioteca cmcp_verify sin confiar en el operador.

¿Qué proveedores TEE son compatibles?

TPM 2.0 / vTPM, AMD SEV-SNP e Intel TDX, con computación confidencial de GPU NVIDIA planificada para v0.2 y el entorno de ejecución confidencial OPAQUE disponible como opción explícita. El orden de detección automática es: VM confidencial de Azure, luego TPM 2.0 / vTPM, luego AMD SEV-SNP, luego Intel TDX; el proveedor solo de software se utiliza únicamente bajo CMCP_DEV_MODE=1.

¿Bajo qué licencia está cMCP?

MIT.


Contribuciones

CONTRIBUTING.md · GOVERNANCE.md · Discussions

Únete a la comunidad en Discord.

¿Usas cMCP en producción? Añade tu organización a ADOPTERS.md.


Licencia

MIT - consulta LICENSE.