업데이트로 돌아가기
New releaseAug 31, 2026

cmcp v0.4.0

cMCP: 기밀 MCP 게이트웨이. MCP 도구 호출에 대한 하드웨어 증명 기반 정책 적용.

공유

cMCP

cMCP: 기밀 MCP 런타임

TEE 내부에서 MCP 도구 정책을 강제하며, 관리 대상 에이전트가 해당 정책에 접근할 수 없도록 함

Documentation

빠른 시작 · 아키텍처 · 구성 · CLI · 변경 로그

CI License: MIT PyPI OpenSSF Scorecard Discord

개발자 프리뷰 - 2026년 6월 23일 기밀 컴퓨팅 서밋(Confidential Computing Summit)에서 공개되었습니다. v1.0 이전에는 호환성이 깨지는 변경 사항이 있을 수 있습니다. 현재 제공되는 기능과 로드맵에 있는 기능의 정확한 구분은 STATUS.md를 참조하세요.

cMCP(기밀 MCP 런타임)는 MCP를 실행하는 안전하고 기밀적인 방법입니다. 하드웨어 기반 신뢰 실행 환경(TEE) 내부에서 MCP 도구 호출 정책을 강제하는 오픈소스 게이트웨이입니다. 모든 도구 호출은 가로채져 Cedar 정책 번들에 대해 평가되며, 관리 대상 프로세스가 접근할 수 없는 곳에서 강제됩니다. 각 세션은 검증자가 운영자를 신뢰하지 않고 확인할 수 있는 서명된 TRACE 클레임을 생성하며, 게이트웨이가 TEE에서 실행될 때 하드웨어 증명되고 소프트웨어 모드에서는 서명 전용으로 처리됩니다. 보안 버전의 MCP를 찾고 있다면, 이것이 바로 AgenTrust 런타임입니다.

요약 - 에이전트를 cMCP 게이트웨이에 연결하세요. 게이트웨이는 모든 도구 호출을 TEE 내부의 Cedar 정책에 대해 평가하고, 정책이 거부하는 항목을 차단하거나 편집하며, 변조 방지 기능이 있는 TRACE 클레임을 증거로 생성합니다. pip install cmcp-runtime을 실행하고 하드웨어 없이 소프트웨어 모드로 시작하세요.

에이전트가 Snowflake, Salesforce, 수십 개의 API를 호출합니다. 그중 하나의 호출에서 고객 데이터가 유출되는 것을 막을 수 있을까요? 규제 기관이 요청한다면, 그런 일이 없었다는 것을 증명할 수 있을까요?


문제

에이전트가 도구를 호출합니다. 정책 엔진이 허용한다고 판단합니다. 도구 호출이 진행됩니다.

그 어느 것도 정책 엔진 자체가 손상되지 않았다는 것을 증명하지 못합니다. 소프트웨어 전용 MCP 거버넌스는 다음을 보장할 수 없습니다:

  • 디스크에 있는 Cedar 정책이 실제로 실행된 정책이라는 것. 악의적인 관리자가 승인 후 번들을 교체할 수 있으며, 해시 검사는 관리자가 제어하는 동일한 OS 내부에서 실행됩니다.
  • 허용/거부 결정이 메모리에서 변조되지 않았다는 것. 평가기의 공급망 CVE는 공격자와 동일한 주소 공간에서 실행됩니다.
  • 감사 로그가 실제로 발생한 일을 반영한다는 것. 소프트웨어 서명 키를 보유한 모든 당사자는 사후에 유효한 감사 체인을 재구성할 수 있습니다.

도구 호출을 관리하는 제어 평면은 관리 대상 프로세스가 접근할 수 없는 곳에서 실행되어야 합니다.

MCP 도구 호출에 대한 하드웨어 증명 기반 정책 강제. 모든 도구 호출은 가로채져 Cedar 정책 번들에 대해 평가되며, 신뢰 실행 환경(TEE) 내부에서 실행되는 정책 엔진에 의해 강제됩니다. 정책 번들 해시는 코드가 실행되기 전에 하드웨어 증명 보고서에 측정됩니다.

터널 기반 연결 솔루션과 달리, cMCP 런타임은 도구 호출 페이로드를 TEE 내부에서 처리합니다. 연결 제공자는 평문이 아닌 암호문만 볼 수 있습니다. 엔클레이브를 떠나는 유일한 것은 서명된 TRACE 클레임뿐입니다.


빠른 시작

pip install cmcp-runtime

cmcp-config.yaml 생성:

attestation:
  provider: auto
  enforcement_mode: advisory   # advisory는 첫 실행 튜닝을 쉽게 하며, 기본값은 `enforcing`입니다
listen_addr: "127.0.0.1:8443"  # 루프백 고정: 개발 모드는 베어러 토큰 없이 실행됩니다
policy_bundle_path: ./policies/
catalog_path: ./catalog.json

여기서 listen_addr은 선택 사항이 아닙니다. CMCP_DEV_MODE=1은 빠른 테스트를 위해 의도적으로 베어러 토큰 요구 사항을 건너뛰며, 기본 바인드는 여전히 0.0.0.0:8443입니다. 0.3.0에서는 이 조합이 머신의 모든 인터페이스에 인증되지 않은 게이트웨이를 구성했습니다. 0.4.0부터는 거부됩니다: 토큰 없는 개발 모드는 루프백 주소에만 바인딩할 수 있으며, 루프백이 아닌 바인딩에는 CMCP_BEARER_TOKEN이 필요합니다. listen_addr을 명시적으로 고정하면 구성이 양쪽 모두에서 올바릅니다.

게이트웨이 시작:

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

도구 호출:

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"}}}'

안내형 버전을 선호하시나요? agentrust-io.com/quickstart에서 하드웨어나 가입 없이 노트북에서 약 10분 만에 동일한 과정을 진행할 수 있습니다: 설치, Cedar forbid 규칙 하나 작성, 도구 호출이 업스트림에 도달하기 전에 403 POLICY_DENY를 반환하는 것을 확인한 다음 서명된 영수증을 검증합니다.

전체 과정은 docs/quickstart.md를 참조하세요: Cedar 정책, 도구 카탈로그, 첫 TRACE 클레임 및 검증(하드웨어 TEE 불필요).


작동 방식

  1. 에이전트는 모든 도구 호출을 MCP 서버에 직접 보내는 대신 cMCP 게이트웨이로 보냅니다.
  2. 시작 시 게이트웨이는 Cedar 정책 번들 해시를 하드웨어 증명 보고서에 측정합니다. 이 측정 전에는 어떤 코드도 실행되지 않습니다.
  3. 각 수신 도구 호출은 TEE 내부에서 실행되는 Cedar 정책 엔진에 의해 평가됩니다. 결과는 허용, 거부 또는 편집입니다. 호출과 결정은 하드웨어로 봉인된 감사 체인에 추가됩니다.
  4. 세션이 끝나면 게이트웨이는 TRACE 클레임을 생성합니다: 어떤 도구가 실행되었는지, 각 호출을 어떤 정책이 결정했는지, 전체 감사 체인을 기록하는 서명되고 하드웨어 증명된 아티팩트입니다. 검증자는 운영자를 신뢰하지 않고 이를 확인합니다.
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)

하드웨어 제공자

제공자플랫폼보증 수준참고
tpmTPM 2.0 / vTPM (Azure, AWS, GCP Trusted Launch)중간로컬 TPM 인용
sev-snpAMD SEV-SNP (Azure DCasv5, AWS C6a Nitro)높음AMD KDS
tdxIntel TDX (Azure DCedsv5, GCP C3)높음Intel PCS
gpu-cc (v0.2)NVIDIA H100/H200/Blackwell (CC 모드)높음NVIDIA 원격 증명 서비스 (NRAS)
opaque (옵트인)OPAQUE 기밀 런타임해당 없음 (아직 구현되지 않음)자리 표시자: 자동 감지에서 제외됨. 명시적으로 선택하면 구현되지 않은 오류 발생

제공자 자동 감지 프로브 순서: azure-cvm -> tpm -> sev-snp -> tdx. detect()가 성공하는 첫 번째 제공자가 선택됩니다. opaque는 아직 구현되지 않은 자리 표시자입니다: 자동 감지에서 제외되며, 명시적으로 선택하면 조용히 통과하는 대신 ATTESTATION_PROVIDER_NOT_IMPLEMENTED 오류가 발생합니다. 하드웨어 제공자가 감지되지 않으면 게이트웨이는 CMCP_DEV_MODE=1에서만 시작됩니다(증명되지 않은 소프트웨어 전용 폴백). 그 외에는 시작을 거부합니다.

from cmcp_runtime.config import TEEProvider

# 자동 감지 (기본값)
# attestation.provider: auto  ->  azure-cvm -> tpm -> sev-snp -> tdx
# (소프트웨어 전용은 CMCP_DEV_MODE=1에서만 사용됨)

# 명시적 하드웨어 선택
# attestation.provider: sev-snp

# OPAQUE 관리형 런타임 (옵트인 전용, 아직 구현되지 않음)
# OPAQUE_ATTESTATION_URL=https://... cmcp start --config cmcp-config.yaml

강제 모드

모드동작사용 사례
enforcing정책 거부 시 HTTP 403 반환, 호출이 전달되지 않음프로덕션
advisory정책 거부가 기록되고 호출은 진행됨첫 배포, 정책 튜닝
silent정책이 평가되지만 기록되거나 차단되지 않음기준선 설정

기본값은 enforcing입니다. advisory 모드를 사용하려면 cmcp-config.yaml에서 enforcement_mode: advisory를 설정하세요.


구성

cmcp-config.yaml 전체 참조:

attestation:
  provider: auto                    # auto | tpm | sev-snp | tdx | opaque | software-only
  enforcement_mode: enforcing       # enforcing | advisory | silent
  validity_seconds: 86400           # 증명 신선도 창 (기본값: 24시간)
  staleness_policy: fail_closed     # fail_closed | warn_only
  expected_measurement: ~           # 특정 PCR/측정값 고정 (선택 사항)

policy_bundle_path: policies/       # .cedar 파일과 manifest.json이 포함된 디렉터리
catalog_path: catalog.json          # 승인된 도구 카탈로그

listen_addr: "127.0.0.1:8443"     # 토큰 없는 개발 모드는 루프백 전용입니다. 더 넓은 범위에 바인딩하려면 CMCP_BEARER_TOKEN을 설정하세요
max_response_size_bytes: 2097152    # 기본값 2MB
policy_reload_interval_seconds: 0   # >0이고 CMCP_POLICY_HASH가 고정된 경우 시작이 거부됩니다. docs/spec/policy-hot-reload.md 참조

환경 변수:

변수효과
CMCP_DEV_MODE=1소프트웨어 전용 TEE 제공자 사용, 하드웨어 불필요
CMCP_BEARER_TOKEN모든 인바운드 요청에 이 베어러 토큰 요구
OPAQUE_ATTESTATION_URLOPAQUE 관리형 런타임 증명 활성화 (명시적 옵트인)

CLI 참조

명령플래그설명
cmcp start--config PATH (필수)게이트웨이 시작
cmcp validate-config--config PATH (필수)시작하지 않고 cmcp-config.yaml 검증
cmcp validate-bundle--bundle-path PATH (필수), --expected-hash sha256:<hex> (필수)배포 전 Cedar 번들 해시 검증
cmcp verifyCLAIM_FILE (필수); --policy-hash, --catalog-hash, --max-age, --trusted-key, --trusted-tpm-ca, --audit-bundle, --agent-manifest, --agent-manifest-trust-anchor서명된 TRACE 클레임 검증 (서명, 스키마, 신선도, 감사 체인, 고정 해시 및 신뢰 앵커)

TRACE 클레임

GatewayClaim은 감사자, 규제 기관 또는 다운스트림 검증자에게 전달되는 증명 단위입니다. 세션별(또는 호출별, 구성 가능)로 생성되며 TEE를 절대 떠나지 않는 키로 서명됩니다.

필드설명
trace.eat_profileEAT 프로필 URI: tag:agentrust-io.com,2026:trace-v0.2
trace.runtime엔클레이브 부팅 시 기록된 TEE 플랫폼 및 하드웨어 측정값
trace.policy.bundle_hash시작 시 로드된 Cedar 번들의 SHA-256. 정책 파일을 변경하면 이 값이 변경됩니다
trace.cnf.jwkTEE 서명 키에 바인딩된 Ed25519 공개 키
trace.tool_transcript감사 체인에서 파생된 호출별 보기: hash(감사 체인 팁에 바인딩), call_count, 개인정보 보호 entries(도구 이름, 데이터 클래스, 결정)
gateway.audit_chain해시 체인 감사 로그 루트 및 팁. 개별 항목을 재생하지 않고 검증 가능
signature전체 클레임 본문의 표준 JSON에 대한 Ed25519 서명 (RFC 8785)

(이 표는 가장 많이 사용되는 필드의 요약입니다.)

cmcp_verify 라이브러리를 사용한 검증은 운영자를 신뢰할 필요가 없습니다. 검증자는 TEE 바인딩 키에 대한 서명, 승인된 값에 대한 정책 번들 해시, 내부 일관성에 대한 감사 체인을 확인합니다.

표준 스키마는 schemas/trace-claim.schema.json이며, docs/quickstart.md에 완전한 예제가 있습니다. 전체 검증 프로토콜은 docs/spec/verification-library.mdTRACE 사양을 참조하세요.


표준 정렬

표준적용 범위
OWASP Agentic AI Top 10MCP10 (도구 호출을 통한 데이터 유출), MCP02 (승인되지 않은 도구), MCP08 (증명 가능한 거버넌스), MCP04 (공급망)
NIST SP 800-207TEE 내부의 정책 결정 지점, 워크로드 ID에 대한 암묵적 신뢰 없음
EU AI Act Art. 12, 15결정별 감사 기록 (Art. 12), TEE 기반 사이버 보안 통제 (Art. 15)
DORA Art. 9증명 체인, gateway.audit_chain을 통한 감사 로그 보존
RATS/EAT RFC 9711GatewayClaim은 EAT이며, eat_profile 필드가 TRACE 프로필을 식별

보안

도구검사 내용
ruff모든 PR에 대한 스타일 및 import 린팅
bandit모든 PR에 대한 Python 보안 린팅
pip-audit모든 PR에 대한 종속성 취약점 스캔
mypy모든 PR에 대한 정적 타입 검사
CodeQLPython SAST, security-extended 쿼리, 주간 실행
OpenSSF Scorecard주간 점수, SARIF 업로드

취약점 보고 및 대응 SLA는 SECURITY.md를 참조하세요. APM 페이로드 캡처, 런타임 구성 주입, Phase 1에서 해결하지 않는 P4.1 공급망(typosquat)에 대한 잔여 위험을 포함한 명시적 범위 경계는 LIMITATIONS.md를 참조하세요.


문서

페이지설명
docs/quickstart.md30분 이내에 첫 TRACE 클레임까지
docs/configuration.md모든 필드와 기본값이 포함된 전체 구성 참조
docs/SPEC.md제품 사양: 문제 분류, 아키텍처, 적용 범위 매트릭스
docs/spec/threat-model.mdSTRIDE 분석, 공격자 모델, 잔여 위험
docs/spec/cedar-policy.mdCedar 정책 언어 참조 및 스키마
docs/testing/benchmarks.mdTEE 제공자별 지연 시간 및 처리량 벤치마크

FAQ

cMCP란 무엇인가요?

cMCP(기밀 MCP 런타임)는 하드웨어 신뢰 실행 환경 내부에서 MCP 도구 호출 정책을 강제하는 오픈소스 게이트웨이입니다. 각 도구 호출을 가로채서 Cedar 정책 번들에 대해 평가하고, 결정(허용, 거부 또는 편집)을 강제하며, 호출을 하드웨어로 봉인된 감사 체인에 기록합니다.

cMCP는 소프트웨어 전용 MCP 거버넌스와 어떻게 다른가요?

소프트웨어 전용 거버넌스는 운영자나 공급망 CVE가 접근할 수 있는 동일한 OS에서 정책 엔진을 실행하므로, 실행된 정책이 승인된 정책이었는지 또는 결정이 메모리에서 변조되지 않았는지 증명할 수 없습니다. cMCP는 정책 엔진을 TEE 내부에서 실행하고 코드가 실행되기 전에 Cedar 번들 해시를 하드웨어 증명 보고서에 측정하므로, 제어 평면은 관리 대상 프로세스가 접근할 수 없습니다.

사용해 보려면 특수 하드웨어가 필요한가요?

아니요. CMCP_DEV_MODE=1을 설정하여 소프트웨어 전용 TEE 제공자를 사용하고 하드웨어 TEE 없이 전체 빠른 시작을 실행할 수 있습니다. 하드웨어 제공자(TPM, AMD SEV-SNP, Intel TDX, OPAQUE)는 프로덕션에서 사용됩니다.

TRACE 클레임이란 무엇인가요?

TRACE 클레임(GatewayClaim)은 세션별로 생성되는 서명되고 하드웨어 증명된 아티팩트입니다. 어떤 도구가 실행되었는지, 각 호출을 어떤 정책이 결정했는지, Cedar 번들 해시 및 감사 체인을 기록하며, TEE를 절대 떠나지 않는 Ed25519 키로 서명됩니다. 검증자는 cmcp_verify 라이브러리로 운영자를 신뢰하지 않고 확인합니다.

지원되는 TEE 제공자는 무엇인가요?

TPM 2.0 / vTPM, AMD SEV-SNP, Intel TDX가 지원되며, NVIDIA GPU 기밀 컴퓨팅은 v0.2에서 계획되어 있고 OPAQUE 기밀 런타임은 명시적 옵트인으로 사용할 수 있습니다. 자동 감지 순서는 Azure 기밀 VM, TPM 2.0 / vTPM, AMD SEV-SNP, Intel TDX 순입니다. 소프트웨어 전용 제공자는 CMCP_DEV_MODE=1에서만 사용됩니다.

cMCP의 라이선스는 무엇인가요?

MIT.


기여

CONTRIBUTING.md · GOVERNANCE.md · 토론

Discord에서 커뮤니티에 참여하세요.

프로덕션에서 cMCP를 사용 중이신가요? ADOPTERS.md에 조직을 추가하세요.


라이선스

MIT - LICENSE 참조.

카테고리