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 프로그램입니다.