MCP 불필요. Claude Code × Obsidian으로 세션 로그를 자동 축적하는 시스템의 전모
요약
본 글은 Claude Code의 작업 세션 로그를 Obsidian Vault에 자동으로 축적하는 시스템 구축 방법을 공유합니다. 복잡한 디버깅 과정이나 아키텍처 설계 결정을 기록하여, 세션 간 지식 단절 문제를 해결하는 것이 목표입니다. 개발자는 MCP(Model Context Protocol) 같은 외부 플러그인 대신, Claude Code의 기본 파일 시스템 읽기/쓰기 권한을 활용해 안정적인 워크플로우를 구축했습니다.
핵심 포인트
- Claude Code 세션 로그가 사라지는 문제 해결에 초점.
- MCP 등 복잡한 플러그인 없이 기본 기능으로 구현 가능.
- Obsidian Vault 구조화 및 전용 에러 기록 템플릿 제공.
- CLAUDE.md 파일을 통해 축적된 지식을 AI의 행동 변화(피드백 루프)로 활용.
서론: AI의 작업 로그는 어디로 사라지는가
Claude Code로 몇 시간 동안 디버깅했습니다. 복잡한 아키텍처 설계 결정을 내렸습니다. 난해한 에러의 원인을 마침내 찾아냈습니다.
다음 날 아침, 이 모든 것이 '과거 세션'으로 사라집니다.
Claude Code는 세션을 넘나드는 기억을 가지고 있지 않습니다. '그때 뭘 해결했더라?'라고 생각해도, 채팅 기록을 스크롤할 수밖에 없는 상황이 계속되었습니다.
저는 Obsidian 사용 경력 3년, Claude Code 사용 경력 약 6개월의 1인 법인 엔지니어입니다. 시행착오 끝에 도달한 것이 바로, MCP 불필요・플러그인 불필요로 Claude Code의 작업 로그를 Obsidian에 자동 축적하는 시스템입니다.
본 기사에서는 그 전모를 실제 Vault 구조, 템플릿, 그리고 CLAUDE.md 파일 내용까지 포함하여 공개합니다.
왜 MCP를 사용하지 않는가
Obsidian × Claude Code 연동을 검색하면, MCP(Model Context Protocol)를 사용한 글이 많이 나옵니다. MCP의 Obsidian 플러그인을 사용하면 노트의 읽기/쓰기가 더 원활하게 이루어질 수 있습니다. 이는 사실입니다.
하지만 MCP에는 현실적인 과제가 있습니다.
- 플러그인 설정 및 유지보수 비용이 발생한다.
- 플러그인의 버전 업으로 인해 Claude Code와의 호환성이 깨지는 경우가 있다.
- 세션 중에 MCP 서버가 다운되면 작업이 멈춘다.
Claude Code는 기본적으로 파일 시스템에 대한 읽기/쓰기 권한을 가지고 있습니다. 즉, Obsidian의 Vault(단순 디렉토리)에 대해 Claude Code가 직접 Markdown 파일을 읽고 쓸 수 있습니다. 이 당연한 사실을 깨달았을 때, MCP는 필요하지 않다고 판단했습니다.
# Obsidian의 Vault는 단순 디렉토리
ls ~/dev/Obsidian/
# → 06_sessions/ 03_knowledge/ 05_errors/ ...
Vault 구조의 전체적인 모습
Vault를 10개의 디렉토리로 구성했습니다. Claude Code가 읽고 쓸 주요 디렉토리는...
스트리밍INSERT된 데이터에 대한 MERGE가 제약 사항에 걸립니다.
11:41 해결
MERGE를 수행하기 전에 _PARTITIONDATE 필터를 추가하여 회피했습니다.
...
이 정도의 세밀함으로 기록이 남습니다.
에러 기록 템플릿
오류가 발생했을 때, 05_errors/에 전용 파일을 생성합니다.
---
date: 2026-04-07
status: resolved
...
DML statements cannot modify data produced by streaming inserts within the last 90 minutes in the destination table.
## 발생 조건
- 테이블에 스트리밍INSERT로 데이터를 기록한 직후 MERGE를 실행함
- BigQuery의 스트리밍 버퍼가 플러시될 때까지의 90분 동안이 대상임
...
```sql
MERGE dataset.target_table T
USING source_query S
ON T.id = S.id
AND T._PARTITIONDATE < CURRENT_DATE() -- ← 여기에 추가
WHEN MATCHED THEN UPDATE ...
예방책
...
이 파일이 05_errors/에 축적되면, 다음에 같은 오류가 발생했을 때 Claude Code가 CLAUDE.md의 지침을 따라 이곳을 참조하여 즉시 해결책을 제시할 수 있습니다.
CLAUDE.md와의 연동: 피드백 루프의 핵심
오류 기록이 Claude Code의 행동을 변화시키려면, CLAUDE.md에 반영되어야 합니다.
## 오류 대처 시 참조 위치
오류가 발생하면 먼저 다음을 확인합니다:
1. ~/dev/Obsidian/05_errors/ 를 검색한다...
이로써 '오류 발생 → 기록 → 다음에는 Claude Code가 자동 참조 → 예방'의 루프가 완성됩니다.
콘텐츠 파이프라인: 지식이 자연스럽게 기사가 되다
세션 기록 끝에 #content-candidate 태그를 붙이는 습관이 있습니다.
## 콘텐츠 후보
#content-candidate
- BigQuery의 스트리밍 제약과 DML 회피책 (오늘 막힌 내용)
...
세션 종료 후 제가 실행하는 스킬이 이 태그를 검색하여 리서치 노트 후보 목록에 추가합니다. 그 리서치 노트로부터 본 기사 같은 기술 기사가 탄생하는 구조입니다.
루프로 정리하면 다음과 같습니다.
작업 자체가 자동으로 콘텐츠 후보가 됩니다. 이 시스템이 '기사 소재 없음' 문제를 해결했습니다.
Claude Code에게 구체적인 지시를 전달하는 방법
매번
Step 3: CLAUDE.md에 기록 규칙 추가하기
~/.claude/CLAUDE.md
(글로벌 설정) 또는 프로젝트 루트의 CLAUDE.md (프로젝트 설정)에 '지식 관리 규칙' 섹션을 추가합니다.
프로젝트 단위로 설정을 하고 싶다면 리포지토리 루트에 CLAUDE.md를 두면, 해당 디렉터리 내에서 Claude Code를 실행할 때 자동으로 로드됩니다.
Step 4: 첫 번째 세션 테스트해 보기
cd ~/your-project
claude # Claude Code 실행
'오늘부터 Obsidian에 세션 기록을 남겨주세요. 경로는 ~/obsidian-vault/06_sessions/'라고 한 번 전달하면, CLAUDE.md에 기록 규칙이 추가됩니다.
자주 묻는 질문
Q: Obsidian을 열어둔 상태로 작업해도 파일 충돌은 일어나지 않나요?
일어나지 않습니다. Obsidian은 Markdown 파일을 실시간으로 읽기 때문에, Claude Code가 작성한 내용이 즉시 Obsidian 화면에 반영됩니다. 양방향 동시 쓰기를 하지 않는 한 문제는 없습니다.
Q: Syncthing/iCloud 동기화와는 궁합이 어떤가요?
문제없이 작동합니다. Syncthing으로 두 대의 Mac 간을 동기화하고 있는데, 세션 기록이 실시간으로 다른 기기에 반영되는 것이 편리합니다. 다만 동시 편집은 충돌의 원인이 될 수 있으므로, 작업 중에는 한 대에 집중하는 것이 좋습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기