Kyvenza로 돌아가기

MCP 서버

코딩 에이전트에
전용 컴퓨터를

Kyvenza에는 MCP 서버가 내장되어 있습니다. Claude Code 또는 다른 MCP 클라이언트를 가리키면, 에이전트는 가상 머신을 시작하고, 어떤 작업도 건드리기 전에 스냅샷을 찍고, 게스트 내부에서 명령을 실행하고, 화면을 살펴볼 수 있습니다. 이는 VM 관리 도구에 단순히 채팅 창을 덧붙인 것이 아닙니다. 에이전트에게 작업을 맡기는 것이 합리적인 결정이 될 수 있도록 하는 안전장치를 갖춘, 그 자체로 완전한 머신입니다.

컨테이너가 아닌, 가상 머신이어야 하는 이유

셸 명령을 실행할 수 있는 에이전트에게는, 그 명령이 키체인, SSH 키 또는 운영 환경의 자격 증명에 닿을 수 없는 공간이 필요합니다. 가상 머신은 도구가 약속하는 경계가 아니라, 운영 체제가 강제하는 경계입니다. Kyvenza는 컨테이너가 제공하지 못하는 부분을 더합니다. 단 몇 초 만에 되돌릴 수 있는 스냅샷, 디스크를 거의 차지하지 않는 일회용 복제, 그리고 네트워크가 전혀 없는 네트워크 모드입니다.

약 1분 안에 연결됩니다

  1. 서버 켜기

    설정 → 자동화로 이동합니다. 직접 켜기 전까지는 꺼져 있습니다.

  2. 엔드포인트 복사

    URL에는 해당 Mac의 토큰이 이미 포함되어 있습니다. URL 하나로 자격 증명이 모두 전달되므로, URL을 받을 수 있는 모든 클라이언트가 연결할 수 있습니다.

  3. 클라이언트에 붙여넣기

    Claude Code의 경우 단 한 줄의 명령이면 충분합니다. JSON 설정을 사용하는 클라이언트의 경우, 설정 페이지에서 해당 스니펫도 함께 생성해 줍니다.

Claude Code

claude mcp add --transport http kyvenza http://127.0.0.1:59800/mcp/YOUR-TOKEN

옆에는 사용자의 엔드포인트에 대해 실제 핸드셰이크를 수행하고 발견된 도구 수를 알려주는 Test connection 버튼이 있습니다. 해당 버튼은 "이렇게 설정하면 되는 건가요"라는 질문에 그 자리에서 답해 주며, 나중에 실패한 도구 호출을 통해 알아내도록 내버려 두지 않습니다.

에이전트로부터 Mac을 지키는 장치

서버는 루프백 인터페이스 밖으로 나가지 않습니다

127.0.0.1에만 바인딩되며 그 외에는 아무것도 하지 않습니다. 네트워크상의 다른 기기뿐 아니라 인터넷의 어떤 대상도 MCP 서버를 볼 수 없습니다.

Mac마다 자체 토큰이 발급됩니다

본 부분은 구체적인 설명이 필요합니다. 위협이 이론상의 것이 아니라 실재하기 때문입니다. QEMU의 사용자 모드 네트워킹은 게스트가 10.0.2.2로 보내는 모든 요청을 호스트의 루프백 인터페이스로 향하는 연결로 변환합니다. 따라서 실행 중인 Windows 게스트는 Mac의 127.0.0.1에 바인딩된 서비스, 본 MCP 서버까지 모두 도달할 수 있습니다. 그래서 엔드포인트는 URL 경로 또는 Authorization 헤더에 128비트 토큰을 담고 있으며, 해당 토큰이 없는 요청은 401을 받고 그 외에는 아무 응답도 받지 못합니다. 해당 동작을 끄는 호환성 모드는 존재하지 않습니다.

파괴적 도구는 기본적으로 꺼져 있습니다

create_vm, clone_vm, delete_vm은 사용자가 명시적으로 활성화하기 전에는 도구 목록에 전혀 나타나지 않습니다. 모델이 볼 수 없는 도구라면 시도조차 하지 않을 것이므로, 사후에 호출을 거부하는 것보다 더 강력한 보장이 됩니다.

delete_vm은 본인이 만든 것만 삭제합니다

해당 도구는 clone_vm으로 샌드박스로 생성되지 않은 머신을 모두 거부합니다. 실제로 삭제하는 경우에는 영구 삭제하는 대신 휴지통으로 보내는데, 이는 에이전트가 잘못된 항목을 삭제했을 때 실행 취소가 가능해야 하기 때문입니다.

에이전트가 작업을 시작하기 전 스냅샷

에이전트가 MCP를 통해 VM을 시작하면, Kyvenza가 먼저 스냅샷을 찍고 이를 동일 응답에 함께 보고하여, 에이전트가 어떤 지점으로 되돌려야 하는지 알 수 있게 합니다. 인터페이스에서 직접 VM을 시작할 때는 이런 동작이 일어나지 않습니다. 백그라운드 디스크 채우기를 위한 기능이 아니라, 자동화를 위한 안전 장치입니다.

네트워크가 전혀 없는 머신

모든 VM은 격리 네트워킹으로 설정할 수 있습니다. Kyvenza 게스트 에이전트가 설치된 Linux의 경우 격리 네트워킹으로 설정한 이후에도 명령을 실행하고 스크린샷을 찍을 수 있는데, 이는 해당 채널이 네트워크가 아닌 가상 소켓이기 때문입니다.

15개의 도구

그중 아래에 표시된 3개는 파괴적 도구를 켜기 전까지는 숨겨져 있습니다.

도구기능
list_vms모든 VM의 OS, 상태, CPU, 메모리
get_vm_status상태, IP 주소, 디스플레이 해상도, 네트워크 모드
get_vm_ip실행 중인 VM의 게스트 IP 주소
start_vm정지된 VM을 시작합니다(먼저 스냅샷 생성)
stop_vm실행 중인 VM을 정상 종료합니다(별도 지시가 없는 한)
restart_vm실행 중인 VM을 재시작합니다
suspend_vm게스트의 메모리를 디스크에 저장하고 전원을 끄며, 다음 시작 시 해당 지점부터 그대로 재개합니다Linux 전용입니다. macOS와 Windows에는 stop_vm을 사용하세요.
list_snapshotsVM의 스냅샷 목록, 자동으로 생성된 스냅샷을 표시
take_snapshot정지된 VM의 오프라인 스냅샷
restore_snapshot정지된 VM을 스냅샷 시점으로 되돌리고 현재 디스크를 교체합니다
exec_shell게스트 내부에서 명령 한 줄을 실행하고 종료 코드, stdout, stderr를 반환합니다게스트 에이전트가 설치된 Linux 게스트는 네트워크 주소와 SSH가 필요하지 않습니다. macOS는 SSH를 사용하고, Windows는 게스트 내부에서 드라이버 설치 프로그램을 한 번 실행한 이후에 루프백 전용 포워딩 포트를 통해 SSH로 접속합니다.
screenshot게스트 화면을 PNG로 캡처Windows 게스트는 호스트 측에서 캡처되므로 별도 설치나 네트워크 주소, 디스플레이 창이 필요하지 않습니다. 에이전트가 설치된 Linux 게스트는 디스플레이 서버 없이도 캡처할 수 있는데, 이는 에이전트가 커널 프레임버퍼를 직접 읽기 때문입니다. macOS는 로그인된 그래픽 세션이 필요합니다.
clone_vm기본적으로 꺼짐정지된 VM을 일회용 샌드박스로 복제합니다. 거의 즉시 생성되며 디스크 점유는 최소입니다
create_vm기본적으로 꺼짐운영 체제가 설치되지 않은 비어 있는 새 머신
delete_vm기본적으로 꺼짐clone_vm으로 만든 샌드박스를 휴지통으로 이동합니다

활용에 적합한 세 가지 시나리오

신뢰할 수 없는 작업 실행

준비된 VM을 샌드박스로 복제하고, 에이전트가 그 안에서 설치 프로그램이나 스크립트를 실행하게 한 뒤 결과를 읽고 샌드박스를 삭제합니다. 복제본은 copy-on-write 방식이므로 약 1초 만에 생성되며, 게스트가 쓰기 작업을 시작하기 전까지는 디스크를 거의 차지하지 않습니다. Kyvenza는 만료된 샌드박스를 자체적으로 회수하므로, 정리하는 것을 잊어버린 에이전트가 라이브러리를 샌드박스로 가득 채워 두는 일은 없습니다.

실제 Windows에서 빌드 검증

에이전트는 루프백 전용으로 바인딩된 포워딩 포트를 통해 Windows 11 ARM 게스트에서 명령을 실행하고, 별도 설치 없이 스크린샷을 캡처할 수 있습니다. 테스트 스위트가 알려주는 내용이 아니라, Windows에서 애플리케이션이 실제로 어떤 모습인지 확인해야 할 때 유용합니다.

네트워크가 분리된 머신에서 작업

Linux VM을 격리 네트워킹으로 설정하면 네트워크 어댑터가 아예 존재하지 않습니다. 그 상태에서도 게스트 에이전트는 가상 소켓을 통해 명령에 응답하고 스크린샷을 캡처합니다. 에이전트는 계속 작업을 진행할 수 있지만, 에이전트가 실행하는 코드는 외부의 어떤 곳에도 접속할 수 없습니다.

지원하지 않는 범위

  • create_vm은 빈 머신을 생성할 뿐입니다. 운영 체제 설치는 상호작용이 필요한 절차여서 MCP로 자동화할 수 없습니다. 따라서 사전에 준비된 VM에서 clone_vm을 사용하는 것이 실질적으로 중요한 도구입니다.
  • Windows 게스트 내부에서 명령을 실행하려면 Windows 안에서 Kyvenza 드라이버 설치 프로그램을 한 번 실행해야 하며, 첫 실행 시에는 VM이 인터넷에 접속할 수 있는 상태여야 합니다.
  • Windows 게스트의 SSH 사용자 이름은 반드시 평문 ASCII여야 합니다. OpenSSH는 따옴표, 공백, 셸 메타문자가 포함된 계정 이름을 거부하는데, 이는 Windows에서는 허용되는 문자입니다.
  • MCP를 통한 스냅샷은 디스크 전용이며, VM이 정지 상태여야 합니다. 실행 중인 머신의 메모리를 그대로 저장하는 동작은 수동 작업으로만 가능합니다.
  • macOS 게스트의 스크린샷은 누군가 로그인한 그래픽 세션이 필요합니다.

앱 안에 채팅 창이 없는 이유

해당 기능을 만들까 검토했지만, 세 가지 이유에서 만들지 않기로 했습니다. Kyvenza는 일회불 제품이고 추론은 토큰당 요금이 부과되므로 경제적으로 맞지 않습니다. 게스트 안에서 임의의 명령을 실행할 수 있는 인앱 어시스턴트는 개인정보 처리 고지, 데이터 수집 명세, 연령 등급을 한꺼번에 끌어들입니다. 그리고 사용자가 이미 사용하고 있는 클라이언트가, 가상화 앱과 함께 우리가 따로 만들어 배포할 어떤 제품보다 클라이언트로서 더 뛰어납니다. 그래서 대화는 사용자가 이미 있는 곳에 그대로 두고, 우리는 그 대화가 말하는 머신만 만들기로 했습니다.

이미 가지고 있는 머신으로 사용해 보세요

MCP 서버는 모든 빌드에 포함되어 있으며, Mac App Store와 직접 다운로드 모두에서 사용할 수 있습니다. 7일 무료 체험에도 포함되어 있습니다.

신뢰할 수 없는 작업 실행