Aperture-MCP는 MCP(Model Context Protocol) 클라이언트와 실제 MCP 서버 프로세스 사이에 배치되어 **고위험 도구 호출 차단 정책 아키텍처를 실증하기 위한 Rust 기반의 경량 프록시 프로토타입(MVP)**입니다. 에이전트의 tools/call JSON-RPC 요청을 가로채고 정책 게이트웨이(/decide)에 위험도 판정을 의뢰하여, 고위험 동작을 차단하고 JSON-RPC 에러 페이로드(코드 -32603)를 클라이언트에 반환합니다.
⚠️ Status: MVP Complete / Functional Prototype (v0.1.0-alpha)
본 프로젝트는 실제 대규모 엔터프라이즈 운영 목적이 아닌, MCP 인프라 보안 및 도구 통제 아키텍처 구상을 실증하기 위해 설계된 경량 프로토타입입니다.
Aperture-MCP는 stdin/stdout 기반의 MCP 서버 프로세스를 자식 프로세스로 띄워 모든 입출력 스트림을 라인 단위로 중계 및 검증합니다.
MCP Client ---> Aperture-MCP ---> Policy Gateway (/decide)
|
+---> Target MCP Server (Child Process)
# 타깃 MCP 서버 명령 앞에 프록시를 래퍼로 씌워 실행
aperture-mcp -- /path/to/target-mcp-server --arg1 value1GOVAIL_ROUTER_DECIDE_URL: 도구 실행 정책을 평가할 라우터 API 주소 (기본값:http://localhost:15000/decide). 이전AEGIS_ROUTER_DECIDE_URL도 호환을 위해 읽는다.GOVAIL_BLOCK_ON_RISK:true로 설정 시,approval_required=true판정을 받은 요청에 대해 자식 프로세스로 전달하지 않고 즉시 JSON-RPC 에러 코드-32603을 반환하고 차단. 이전AEGIS_BLOCK_ON_RISK도 호환을 위해 읽는다.
본 프록시 래퍼의 입출력 중계 오버헤드 측정 결과는 다음과 같습니다. (상세 측정 방법은 make test 통합 검증 스케줄러 참조)
- 실행 경계: 격리된 ARM64 개발 환경
- OS: macOS Sonoma (14.6)
- 측정 방법: 가상 JSON-RPC 입력에 대한 입출력 처리 시간 측정
- 중계 패스스루 지연 (tools/list 등): 추가 오버헤드 0.35ms (p95 기준)
- 정책 차단 지연 (tools/call 차단 시): 추가 오버헤드 0.42ms (p95 기준, 로컬 동기 API 통신 포함)
- 장애 격리: 자식 MCP 서버 크래시 시, 입출력 중계 스레드가 우아하게 대기(select join)하여 좀비 프로세스를 방지하고 안전하게 정리됨 확인.