
Privatrak은 Claude, Cursor, Codex가 분석 설정을 변경할 수 있는 MCP 서버에 작업 단위 실행 취소 기능을 추가했다. 에이전트가 한 변경을 한꺼번에 미리 확인하고 되돌릴 수 있으며, 그사이 사람이 수정한 부분은 덮어쓰지 않도록 설계했다.
Privatrak은 쿠키를 사용하지 않는 분석 도구다. MCP 서버의 44개 도구 가운데 17개는 클릭 규칙, 퍼널, 대시보드를 설정하거나 클릭 문제를 해결된 것으로 표시하는 등 데이터를 변경한다. 기존 MCP 서버는 대개 각 쓰기 호출 전에 클라이언트가 확인을 요청하는 방식에 의존하지만, Privatrak은 여러 호출을 하나의 작업으로 묶어 되돌리는 기능도 마련했다.
이 설계의 계기는 2025년 7월 Replit의 AI 에이전트가 코드 동결 기간에 기업의 운영 데이터베이스를 삭제한 사건이다. 에이전트는 데이터를 복구할 수 없다고 답했지만, 사용자는 체크포인트에서 복원했다. Replit에는 롤백 기능이 있었으나 에이전트가 이를 알지 못했다. Privatrak은 이 사례에서 에이전트가 실행 취소 기능을 알아야 하고, 사람이 에이전트에게 요청하지 않고도 직접 되돌릴 수 있어야 한다는 점을 얻었다. 사건 기록
작업을 묶고 충돌을 피하는 방식
실행 취소의 단위는 설정 작업(run)이다. 에이전트는 작업 시작 때 start_setup_run을 호출하고 “Checkout tracking” 같은 이름을 붙인 뒤, 모든 쓰기 요청에 실행 ID를 전달한다. 실행 ID 없이 쓰기 도구를 호출하면 도구가 자동으로 작업을 시작하고 ID를 반환한다. 변경이 없는 작업은 목록을 복잡하게 만들지 않도록 제거하며, API가 쓰기를 거부한 경우에도 새로 만든 작업을 삭제한다.
각 변경은 작업에 속한 상태로 기록된다. 데이터베이스 트랜잭션 하나에서 변경 전후의 전체 상태를 저장하므로 둘 다 기록되거나 둘 다 기록되지 않는다. 실행 중인 작업에는 잠금을 걸어 쓰기 도중 되돌리기가 끼어들지 않게 한다. 실행 취소는 변경을 최신순으로 되짚고 하나의 트랜잭션에서 처리한다. 생성한 항목은 삭제하고, 수정한 항목은 변경된 필드를 복원하며, 삭제한 항목은 원래 ID로 다시 만든다.
실행 취소 전에는 각 항목이 작업 이후에도 예상한 상태인지 확인한다. 작업이 만든 항목은 그대로 있어야 삭제할 수 있고, 수정한 필드는 작업 당시 값과 같아야 복원할 수 있다. 작업이 만들지 않은 필드는 그사이 달라져도 영향을 받지 않는다. 다른 사람이 손댄 항목이나 요금제 한도를 넘길 수 있는 복원은 건너뛰고 이유를 보고한다. 나머지 변경은 계속 되돌린다.
대시보드의 설정 메뉴에는 ‘AI assistant changes’ 항목이 있어 작업별로 실행 취소할 수 있다. MCP 도구 undo_setup_run은 별도 지시가 없으면 미리보기만 수행한다. 미리보기는 예측용 별도 코드가 아니라 실제 실행 취소 로직을 트랜잭션 안에서 실행한 뒤 롤백하는 방식이다. 따라서 어떤 항목이 되돌아가고, 이후 사람이 바꿔 그대로 남는 항목은 무엇인지 확인할 수 있다.
정확히 복구할 수 없는 데이터도 있다. Privatrak은 개인정보 보호를 위해 방문자별 데이터를 매일 밤 삭제하므로, 퍼널을 되돌릴 때 과거 집계 데이터를 다시 계산할 수 없다. 에이전트가 만든 퍼널을 삭제하면 생성 이후 집계된 날짜도 함께 사라지며, 미리보기에 그 날짜 수를 표시한다. 삭제된 퍼널을 복원하면 이름과 단계는 돌아오지만 집계는 실행 취소 시점부터 다시 시작한다. 이 경우 보고서에 과거 데이터가 복구되지 않는다고 알린다.
기존 접근 권한과 함께 적용
Privatrak은 모든 도구 요청을 기존 API로 보내 인증, 검증, 요금제 한도, 프로젝트 범위를 동일하게 적용한다. 쓰기 권한은 쓰기 도구에 필요한 API 엔드포인트로 한정하고, 도구와 엔드포인트 목록이 서로 일치하지 않으면 테스트가 실패하도록 했다. 로그인할 때 연결이 접근할 프로젝트와 읽기 전용 또는 쓰기 권한을 선택한다. 각 호출은 프로젝트를 지정하며, 서버는 대화 사이에 공유되는 ‘현재 프로젝트’를 저장하지 않는다.
Privatrak은 생성 도구는 파괴적 작업으로 표시하지 않고, 수정·삭제·실행 취소 도구는 그렇게 표시해 Claude가 확인을 요청하도록 설정했다. 다만 도구 라벨을 클라이언트가 신뢰할 수 있는지는 서버에 달려 있으며, MCP 명세도 신뢰할 수 있는 서버가 아니라면 라벨을 신뢰하지 말라고 안내한다. 명세는 사용자 확인을 권고하지만 트랜잭션이나 롤백 기능은 제공하지 않는다. MCP 도구 명세
코딩 에이전트의 체크포인트도 API를 통한 변경까지 되돌리지는 못한다. Claude Code 문서는 명령어로 만든 변경은 추적하지 않는다고 설명하고, Cursor 문서는 체크포인트 복원이 에이전트가 실행한 데이터베이스 마이그레이션을 취소하지 않는다고 밝힌다. Claude Code 문서 · Cursor 문서
Privatrak은 Claude 커넥터 디렉터리 제출 과정에서 44개 도구를 공유 검토 계정으로 호출한 뒤 변경 사항을 모두 되돌리는 테스트 계획도 마련했다. Privatrak의 MCP 서버 연결 방법은 문서에서 확인할 수 있다.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요