0eb2d423daf53da86badd7a113d51b1499fe0e295aa6b87ff8aa8aac3d14e416f57ec156d8cdfa


깃헙 링크



사실 내가 만든 MCP임 


 원래 다른 직접 만든 MCP의 보조기능이었는데 쓰다보니 ㄱㅊ한거 같아서 배포용으로 분리함.


Claude, GPT 등 LLM을 실무에 쓰면서, 그리고 최근에 핫했던 오픈클로등을 쓰면서 매번 느끼는 좆같은게 있는데 세상 모든 개발 문서를 알고 있었으면서 바로 세션을 초기화 하기 전에 있었던 3초 전 일도 기억 못한다는 거. 


세션을 닫으면 모든 맥락이 증발함.

금붕어가 3초밖에 기억 못한다는 속설이 있는데, 실제로는 몇 달을 감. 금붕어만도 못한거임.


마크다운 이것저것 세팅하는것도 한계가 있음. 내가 원하는대로 정확하게 맥락을 이해하는것도 복불복일뿐더러. 오픈클로를 실행해보면 그냥 아무것도 안한 상태에서 세션 시작한 것만으로도 4만자 이상의 컨텍스트를 잡아먹는데 돈이 살살녹는다는 뜻임. 


 그래서 생각한게 사람처럼  기억을 파편화 하고 연계구조를 통해 기억을 구체화 하는 과정을 모사하는 것이었음.


 예를 들면 누가 갑자기 뜬금없이 나한테

 

"야 너 미정이 기억나냐"


 하면 나는 당장엔 아는사람 중에 그런 이름을 가진 사람도 없고 전혀 기억을 못 한체 "그게 누군데?" 라고 답할 것이다. 


 그러면 상대방은


"그 왜 있자너 너 초등학교 1학년 때 짝궁이었던"


 이정도 단서가 제공된다면 이제 어물어물 어떤 얼굴이 떠오른다. "아 그.. 그... 그래!"


 좀 더 그 주제에 대해 생각해보면 책상 위에 선을 긋고 넘어오면 꼬집어댄 일이라던가, 지우개를 빌려주고 돌려받지 못 했던 일이라던지 하는 연관기억들이 떠오르고 구체화된다.


 이것이 Memento MCP 요체다.



1. Memento MCP는 무엇인가?


MCP(Model Context Protocol) 기반의 AI 중장기 기억 시스템이다. AI가 세션이 끝나도 중요한 사실, 결정, 에러 패턴, 작업 절차를 기억하고, 다음 세션에서 자연스럽게 불러올 수 있게 하는 것이 목적이다.


 핵심 아이디어는 "파편(Fragment)"에 있다. 


 세션 요약 전체를 뭉텅이로 저장하는 게 아니라, 1~3문장의 자기완결적 원자 단위로 쪼개서 저장한다.


 찾을 때는 관련 원자만 정확하게 꺼내 오는것을 목적으로 한다.


2. 왜 "파편" 단위인가?


 세션 요약을 통째로 저장하면 크게 두 가지 문제가 생긴다.


 - 첫째, 관련 없는 내용까지 컨텍스트 창에 밀어넣된다. 토큰의 낭비이고 돈낭비다. 그리고 나는 돈이 없다.

 - 둘째, 시간이 지나면 요약 안에서 필요한 부분만 골라내기가 어렵다.


 파편은 하나의 사실, 하나의 결정, 하나의 에러 패턴을 담는다. "Redis Sentinel 연결 실패 시 REDIS_PASSWORD 환경변수 누락을 먼저 확인할 것. NOAUTH 에러가 증거다." 이게 파편 하나다. 필요한 사실만 꺼내온다.


3. 파편의 6가지 유형

 각 유형마다 기본 중요도와 망각 속도가 다르다.


 - fact: 변하지 않는 사실. "이 프로젝트는 Node.js 20을 쓴다"

 - decision: 선택의 흔적. "커넥션 풀 최대값은 20으로 결정"

 - error: 실패의 해부학. "pg는 ssl:false 없이 로컬 연결 실패" (망각 불가)

 - preference: 인격의 윤곽. "코드 주석은 한국어로 작성" (망각 불가)

 - procedure: 반복되는 의식. "배포: 테스트 -> 빌드 -> push -> apply"

 - relation: 사물 사이의 연결. "auth 모듈은 redis에 의존한다"


 preference와 error는 절대 망각하지 않는다. 취향은 너가 누구인지를 정의하고, 에러 패턴은 언제 다시 만날지 모르기 때문이다.


4. 삼층 캐스케이드 검색

 기억을 찾을 때 세 개의 레이어를 순서대로 두드린다. 빠른 층에서 답이 나오면 느린 층은 건드리지 않는다.


 - L1 (Redis 역인덱스): 키워드 기반 직접 조회. 마이크로초 단위. "redis"와 "NOAUTH"의 교집합으로 파편을 즉시 찾는다.

 - L2 (PostgreSQL 메타데이터): topic, type, keywords를 조합한 정형 쿼리. 인덱스를 탄 밀리초 단위.

 - L3 (pgvector 시맨틱 검색): OpenAI 임베딩으로 의미 기반 검색. "인증 실패"와 "NOAUTH"가 같은 뜻이라는 걸 이 층에서 구분한다. 가장 느리고 가장 깊다.


 Redis와 OpenAI는 선택 사항이다. 없으면 해당 레이어 없이 작동한다. PostgreSQL만으로도 기본 기능은 돌아감.


5. TTL 계층 — 기억의 온도


 파편은 사용 빈도에 따라 hot, warm, cold 사이를 이동한다.


 hot (자주 참조됨) -> warm (한동안 침묵) -> cold (오래 잠듦) -> TTL 만료 시 삭제


 단, 다시 참조되는 순간 hot으로 복귀한다. 인간의 장기기억도 이렇게 작동한다. 오래 안 쓰면 잊히지만, 한번 떠올리면 다시 선명해지는 것.



6. MCP 도구 11개 요약


 - context: 세션 시작 시 핵심 기억 로드

 - remember: 파편 저장

 - recall: 삼층 캐스케이드 검색

 - reflect: 세션 종료 시 경험을 파편으로 응고

 - forget: 파편 삭제 (해결된 에러 정리용)

 - link: 파편 간 인과 관계 설정 (caused_by, resolved_by 등)

 - amend: 파편 내용 수정 (ID와 관계는 보존)

 - graph_explore: 인과 체인 탐색 (장애 근본 원인 추적)

 - memory_stats: 저장소 통계

 - memory_consolidate: 주기적 유지보수 (감쇠, 병합, 모순 탐지)

 - tool_feedback: 검색 품질 피드백


7. 권장 사용 흐름


 1 ) 세션 시작 -> context()로 기억 로드

 2 ) 작업 중   -> 중요한 결정/에러/절차 발생 시 remember()

          -> 과거 경험 필요할 때 recall()

          -> 에러 해결 시 forget(에러) + remember(해결 절차)

 3 ) 세션 종료 -> reflect()로 세션 내용 영속화


8. 기술 스택

 - Node.js 20+

 - PostgreSQL 14+ (pgvector 확장)

 - Redis 6+ (선택)

 - OpenAI Embedding API (선택)

 - Gemini Flash (memory_consolidate 모순 탐지용, 선택)

 - MCP Protocol 2025-11-25


9. 실행 방법

 1 ) bash# PostgreSQL 스키마 초기화

 2 ) psql -U postgres -c "CREATE EXTENSION IF NOT EXISTS vector;"

 3 ) psql -U postgres -d memento -f lib/memory/memory-schema.sql


# 서버 실행

npm install

npm start

MCP 클라이언트 설정에 아래를 추가하면 된다.

json{

  "mcpServers": {

    "memento": {

      "url": "http://localhost:56332/mcp",

      "headers": {

        "Authorization": "Bearer your-secret-key"

      }

    }

  }

}


10. 만들게 된 계기

 실무에서 Claude를 쓰면서 매일 같은 맥락을 반복 설명하는 게 비효율적이라 느꼈다. 시스템 프롬프트에 메모를 넣는 방법도 써봤지만 한계가 명확했음. 파편 수가 늘어나면 관리가 안 되고, 검색이 안 되고, 오래된 정보와 새 정보가 충돌함.

 개열받는건 이미 설명한 것, 세팅한것을 무한히 반복하게 만든다는 것이다. 내가 편하려고 AI를 쓰는 것인데 인증 정보가 없다고 해서 보면 있고 세팅 안돼있다고 해서 세팅 파일 직접 열어보면 다 돼 있고 어떤 세션의 AI는 이상할정도로 곤조를 부려대서 있는것도 없다 하고 할 수 있는걸 못한다고 뻗대면서 고집을 부린다. 철저하게 논파해서 말 잘듣게 해 봐야 그 때 뿐이다. 세션을 다시 시작하면 똑같은 일이 또 다시 반복된다.


 마치 명문대를 수석 졸업했지만 매일 같이 뇌가 리셋되는 병을 앓고 있는 신입사원의 교육담당자가 된 느낌이었다.


 이러한 고충을 해소하기 위해 기억을 원자 단위로 분해하고, 계층적으로 검색하고, 시간에 따라 자연스럽게 망각하는 시스템을 설계했했다. 

 인간이 망각의 동물인 것 처럼, 이 시스템은 "적절한 망각"을 포함한 기억을 지향한다.


피드백, 이슈, PR 모두 환영.