며칠짜리 디스크 정리 작업을 Claude Code에게 맡기면서 한 가지 문제가 있었다. 단계가 12개고, 중간에 검증 결과·용량 변화·"이건 사용자가 직접 지워야 함" 같은 상태가 계속 바뀌는데, 이게 전부 대화창 안에만 있으니 나중에 어디까지 했는지 다시 물어봐야 했다.
그래서 Google Sheets MCP를 붙여서 작업 순서표를 시트에 만들고, Claude가 단계마다 상태를 직접 갱신하게 했다. 효과가 생각보다 커서 정리해 둔다.
왜 시트인가
- 대화가 끊겨도 남는다. 세션이 바뀌거나 컨텍스트가 요약돼도 시트는 그대로다. 다음 세션에서 "시트 보고 이어서 해"로 끝.
- 다른 세션과 공유된다. 맥에서 돌리는 Claude와 리눅스 노트북에서 돌리는 Claude가 같은 디스크를 건드리다 서로 옮긴 걸 또 옮기는 사고가 있었다. 시트 하나가 공통 상태판 역할을 한다.
- 내가 폰으로 본다. 몇 시간짜리 rsync가 도는 동안 자리를 비워도 시트만 열면 어디까지 왔는지 보인다.
설정
Claude Code에 google-sheets MCP를 붙여두면 create_sheet, update_cells, get_sheet_data 같은 도구가 생긴다. 처음엔 403이 떴는데, MCP가 쓰는 Google Cloud 프로젝트에서 Sheets API와 Drive API를 켜지 않아서였다. 콘솔에서 두 API "사용 설정" 한 번씩 누르면 끝이고, 인증 JSON을 따로 받을 필요는 없었다.
설정 방법 (Claude Code + mcp-google-sheets)
- Google Cloud 프로젝트 만들기 — console.cloud.google.com에서 새 프로젝트(이름 아무거나).
- API 두 개 켜기 — 아래 두 페이지에서 각각 "사용 설정". 이걸 안 켜면 MCP 호출 시 403
SERVICE_DISABLED가 난다.- Sheets API:
https://console.developers.google.com/apis/api/sheets.googleapis.com/overview?project=프로젝트번호 - Drive API:
https://console.developers.google.com/apis/api/drive.googleapis.com/overview?project=프로젝트번호(시트 새로 만들기·목록 조회에 필요. 기존 시트에 탭만 추가하면 Sheets API만으로 됨)
- Sheets API:
- OAuth 클라이언트 만들기 — API 및 서비스 > 사용자 인증 정보 > 사용자 인증 정보 만들기 > OAuth 클라이언트 ID > 유형 "데스크톱 앱". 만들면
client_secret_xxx.json을 내려받아 적당한 곳에 둔다. (OAuth 동의 화면을 먼저 만들라고 하면 외부/테스트 사용자에 본인 구글 계정 추가.) - Claude Code에 MCP 등록 —
~/.claude.json의mcpServers에:"google-sheets": { "type": "stdio", "command": "uvx", "args": ["--with", "mcp<2", "mcp-google-sheets@latest"], "env": { "CREDENTIALS_PATH": "/절대경로/client_secret_xxx.json", "TOKEN_PATH": "/절대경로/token.json" } }uv가 없으면brew install uv.TOKEN_PATH는 첫 인증 후 자동 생성되는 파일 경로라 존재하지 않아도 된다. - 첫 실행 — Claude Code를 재시작하고 시트 도구를 한 번 호출하면 브라우저가 열리며 구글 로그인·권한 승인. 승인하면
TOKEN_PATH에 토큰이 저장되고 이후엔 묻지 않는다.
API를 나중에 켰다면 토큰을 다시 받을 필요는 없다. 켜고 1~2분 뒤 다시 호출하면 된다.
시트 구조
열은 이렇게 잡았다. 핵심은 상태와 검증 열을 분리한 것.
# | 단계 | 대상 | 용량 | 상태 | 시작 | 완료 | 검증 | 비고
- 상태: [완료] / [진행 중] / [대기] / [사용자 결정 대기] — 한 단어로 훑어보기 쉽다. (이모지를 쓰면 더 좋은데, 게시판 DB가 utf8이면 4바이트 이모지에서 500이 난다. 이 글이 그랬다.)
- 검증: "샘플 9,086개 해시 일치 / unzip -t 39개 전부 OK" 처럼 무엇으로 확인했는지. 삭제 같은 되돌릴 수 없는 작업의 근거가 여기 남는다.
- 비고: "삭제는 사용자가 직접 실행" 같은 역할 분담, 용량 흐름 메모.
프롬프트 한 줄
이거 구글 시트에 작업 내용 google sheet mcp 활용해서 순서 적어놓고 진행 여부 체크하면서 진행해
이걸로 충분했다. Claude가 탭을 만들고 12단계를 채운 뒤, 이후 단계가 끝날 때마다 해당 행을 갱신한다. 메모리에도 시트 위치와 갱신 규칙을 남기게 해두면 다음 세션에서도 이어진다.
같이 쓴 것
- 계획 자체는 마크다운(
STORAGE_PLAN.md)으로 각 디스크 루트에 복사해 두고, 시트는 진행 상태만 담았다. 계획은 문서, 상태는 시트 — 역할을 나누니 둘 다 짧아진다. - 느린 디스크(exFAT, 파일 440만 개)는 딱 한 번만 순회해서 인덱스 파일로 뽑고, 이후 중복 분석은 전부 인덱스로만 했다. 시트의 용량·파일 수 열이 이 인덱스에서 나온다.
정리하면: 긴 작업은 대화창 밖에 상태판을 두고, Claude가 그걸 직접 쓰게 하라. 시트든 마크다운이든 상관없지만, 여러 기기·세션에서 같이 보려면 시트가 편했다.