본문 바로가기

AI관련

클로드 전용 연속성 관련 mcp 개발

반응형

Claude Code 세션은 stateless다. 세션이 끝나면 프로젝트에 대해 학습한 모든 것이 사라진다. 이 문제를 해결하기 위해 MCP 서버를 직접 만들어 npm에 배포했다.

이 글은 claude-session-continuity-mcp의 제작 배경, 동작 원리, 실제 효과를 다루는 글이다. MCP 개념은 이전 글을 참고한다.

 

1. 문제: 컨텍스트 손실의 실제 비용

매일 아침 Claude Code를 열면 이런 작업을 반복한다:

순서 작업 소요 시간
1 모노레포 구조 설명 (28개 앱) 1분
2 공유 라이브러리 구조 설명 30초
3 DB 스키마 재설명 1분
4 어제 해결한 버그 언급 1분
5 실제 작업 시작 -

하루 5~10번 세션 × 5분 = 매일 25~50분의 순수 낭비다. 한 달이면 약 13시간이다.

핵심: Claude Code 세션은 stateless다. 세션이 끝나면 프로젝트에 대해 학습한 모든 것이 사라진다. 컨텍스트를 이어가는 메커니즘이 없다.

 

2. 해결: claude-session-continuity-mcp

Claude Code에 세션 간 영구 메모리를 제공하는 MCP 서버다. Claude Hooks를 통해 완전 자동으로 동작한다.

npm install claude-session-continuity-mcp

이것으로 끝이다. postinstall 스크립트가 MCP 서버 등록과 5개 Claude Hooks 설치를 자동 처리한다.

항목
npm 패키지 claude-session-continuity-mcp
버전 1.13.0
MCP 도구 수 25개 (7개 카테고리)
테스트 111개 (6개 스위트)
호환 Claude Code, Gemini CLI, VS Code Copilot, Codex CLI

 

3. 동작 원리: 5-Hook 아키텍처

Claude Code의 Hook 시스템으로 라이프사이클 이벤트를 인터셉트한다.

구분 CLAUDE.md Hooks
실행 보장 약 80% (권고) 100% (강제)
형태 마크다운 셸 스크립트

 

5개 Hook 상세

SessionStart — Claude Code를 열면 프로젝트 컨텍스트를 자동 로드한다. 기술 스택, 최근 결정, 활성 태스크, 관련 메모리를 가져온다.

UserPromptSubmit — 프롬프트 처리 전에 관련 메모리를 검색해 자동 주입한다. "인증 어떻게 처리했었지?"라고 물으면 과거 결정과 솔루션이 자동으로 들어간다.

PostToolUse — 모든 도구 호출 후 작업 중인 파일을 추적한다. Bash 명령이 실패하면 이전에 해결한 에러인지 확인하고 솔루션을 자동 주입한다.

PreCompact — 컨텍스트 압축 전에 구조화된 핸드오버 요약을 저장한다.

Stop — Claude 응답 완료 시 git 커밋, 아키텍처 결정, 에러-해결 쌍을 추출한다.

 

4. 메모리 분류 시스템

모든 정보를 기억하면 잡음이 된다. 5가지 유형으로 분류해 품질을 유지한다.

유형 설명 보존 기간
Observations 자동 추적된 관찰 3일 (자동 삭제)
Decisions 아키텍처와 설계 결정 영구
Learnings 개발 중 발견한 패턴 영구
Errors 에러 메시지와 해결 방법 영구
Patterns 반복되는 코드 패턴 14일 (자동 정리)

위반 사례

// 모든 파일 변경을 메모리로 저장
// → "[File Change] src/app.ts" 같은 잡음이 쌓임

개선안

// 결정, 학습, 에러만 분류해서 저장
// → "MVI를 MVVM 대신 선택. 이유: 채팅 화면 상태 관리 복잡성"

 

5. 지식 그래프

개별 메모리는 유용하다. 연결된 메모리는 강력하다.

타입된 관계로 메모리를 연결한다: causes, solves, depends_on, contradicts, extends, example_of.

에러를 검색하면 에러만 반환하는 게 아니다. 그것을 해결한 솔루션, 발생시킨 아키텍처 결정, 방지하는 패턴까지 함께 반환한다.

 

6. 에러→솔루션 파이프라인

실무에서 가장 시간을 절약하는 기능이다.

단계 동작 역할
1 Bash 명령 실패 PostToolUse Hook이 에러 캡처
2 에러 해결 Stop Hook이 해결책 캡처
3 에러-솔루션 쌍 저장 SQLite에 영구 보존
4 같은 에러 재발생 솔루션 자동 주입

다음에 같은 에러가 발생하면 — 이번 세션이든 미래 세션이든 — 솔루션이 자동 주입된다.

 

7. 기술 스택

구성 요소 기술
런타임 TypeScript + Node.js 18+
프로토콜 @modelcontextprotocol/sdk (stdio)
DB SQLite (better-sqlite3) + WAL + FTS5
임베딩 @xenova/transformers (multilingual-e5-small, 384d)
검증 Zod 스키마
테스트 Vitest (111개, 6개 스위트)

성능: 컨텍스트 로드 5ms 미만, FTS 검색 ~10ms, 시맨틱 검색 ~50ms.

 

8. 결과

항목 Before After
컨텍스트 설정 5분/세션 0초 (자동)
에러 재해결 매번 재디버깅 자동 주입
결정 보존 세션 종료 시 소멸 영구 보존
월간 절약 - 약 13시간

 

정리

  • Claude Code 세션은 stateless다. 컨텍스트가 매번 사라진다
  • 5개 Claude Hooks로 컨텍스트 캡처/복원을 완전 자동화했다
  • 메모리를 5가지로 분류해 품질을 유지한다
  • 지식 그래프로 메모리 간 관계를 연결한다
  • 에러→솔루션 파이프라인으로 같은 에러를 두 번 디버깅하지 않는다
  • 월간 약 13시간의 생산성을 회복했다

 

관련 링크

참고 자료

반응형