MCP 서버의 세션 기억을 재시작 뒤에도 보존하는 방법

MCP Python SDK에는 서버가 끊겼다가 다시 이어질 때 쓰는 기본 이벤트 저장소가 있지만, 이 저장소는 메모리에만 데이터를 둔다. 개발 중에는 편하지만, 서버를 재시작하거나 새로 배포하거나 다른 작업자로 연결이 바뀌면 세션 상태가 조용히 사라질 수 있다. 이때 클라이언트에는 뚜렷한 오류가 보이지 않아, 이어서 처리해야 할 작업이 처음부터 다시 시작될 수 있다.

mcp-persist는 이 문제를 줄이기 위해 만든 도구다. SQLite, Redis, PostgreSQL 저장소를 붙여 세션 정보를 서버 밖에 남기고, 여러 작업자가 함께 쓰는 배포에서도 이어받기가 가능하게 한다. 클라이언트가 Last-Event-ID로 다시 연결하면, 끊긴 지점부터 계속 받을 수 있다.

직접 고칠 수 없는 MCP 서버 앞에 붙이는 프록시 방식도 제공해, 기존 서버 코드를 바꾸지 않고도 이어받기 기능을 더할 수 있다. 출시 후 약 2주 동안 8,000회 이상 내려받기가 있었고, 실제 운영 배포 사례와 TTL 처리 관련 피드백이 나왔다.

핵심 포인트

  • MCP Python SDK의 기본 이벤트 저장소는 메모리 기반이라 서버 재시작 뒤 세션 상태가 사라질 수 있다.
  • mcp-persist는 SQLite, Redis, PostgreSQL을 저장소로 써서 세션을 서버 밖에 보존한다.
  • 여러 작업자가 있는 배포에서도 클라이언트가 끊긴 지점부터 다시 받을 수 있게 돕는다.
  • 프록시 방식을 쓰면 기존 MCP 서버 코드를 바꾸지 않고 이어받기 기능을 붙일 수 있다.
  • 약 2주 동안 8,000회 이상 내려받기와 실제 운영 배포 사례가 있었다.

용어 한 줄 설명

Python SDK
Python에서 특정 서비스를 쉽게 쓰도록 만든 개발 도구 묶음입니다.
Python
코드가 영어 문장처럼 읽혀 초보자도 배우기 쉬운 프로그래밍 언어입니다.
SQLite
작은 앱이나 브라우저 안에서도 쓸 수 있는 가벼운 데이터베이스입니다.
PostgreSQL
서비스의 데이터를 저장하고 꺼내 쓰는 데이터베이스입니다.
Postgres
정보를 표처럼 저장하고 찾는 데 쓰는 데이터베이스 프로그램이다.
Last-Event-ID
끊긴 연결을 다시 이을 때 마지막으로 받은 이벤트 위치를 알려주는 값이다.
MCP 서버
AI 도구가 파일, 앱, 데이터 같은 외부 기능과 연결되게 해주는 서버입니다.
AI 에이전트
사람 대신 정보를 찾거나 작업을 처리하도록 만든 AI 프로그램입니다.
원문 보기