MongoDB Claude Agent SDK와 통합하여 호스트 간에 에이전트 세션을 유지하고 재개할 수 있습니다. Claude Agent SDK는 애플리케이션 내에서 Claude Code를 에이전트 로 실행하는 Athroughic의 Python 라이브러리입니다.
개요
claude-agent-sdk-mongodb-session-store 패키지 애플리케이션 에서 Claude Agent SDK 대화를 위한 MongoDB 지원 세션 저장 어댑터를 제공합니다. 세션은 개별 항목으로 저장된 대화와 에이전트 취한 조치의 기록 입니다. 기본값 으로 Claude Agent SDK는 에이전트 호출하는 호스팅하다 에 기록을 저장합니다. 또한 MongoDB 어댑터는 해당 항목을 MongoDB 에 저장하므로 스크립트는 호스팅하다 와 MongoDB 모두에 보관됩니다. 그런 다음 다른 호스팅하다 에서 세션을 재개할 수 있습니다.
어댑터를 사용하여 다음 작업을 수행할 수 있습니다.
다른 프로세스 또는 호스팅하다 에서 세션 재개
애플리케이션 데이터와 동일한 배포서버 에 세션 기록 유지
MongoDB 도구로 세션 기록 쿼리 및 감사
설치 및 설정
어댑터를 사용하려면 다음 구성 요소를 사용할 수 있어야 합니다.
Python 3.10 이상
MongoDB 7.0 이상을 실행하는 MongoDB deployment
Anthropic API 키
Atronic API 키를 가져오고 설정하다 방법을 학습 보려면 Claude Agent SDK 빠른 시작을 참조하세요. 세션 저장 이 키를 사용하거나 볼 수 없습니다.
터미널에서 다음 명령을 실행 어댑터와 해당 종속성을 설치합니다.
uv add claude-agent-sdk-mongodb-session-store
이 명령은 어댑터와 해당 claude-agent-sdk 및 pymongo 종속성을 설치합니다.
다음 예시 와 같이 환경 변수에 연결 문자열 설정합니다. 어댑터는 사용자가 만든 클라이언트 를 사용하므로 자격 증명 클라이언트 구성에 유지됩니다.
export MONGODB_URI="<connection-string>"
세션 유지
기본값 으로 Claude Agent SDK는 에이전트 실행되는 호스팅하다 에만 각 세션 기록을 보관합니다. 다음 예시 MongoDB 세션 저장 생성하고, 해당 인덱스를 초기화하고, 쿼리 실행합니다. 어댑터는 에이전트 실행될 때 세션 기록을 MongoDB 에 유지합니다. 이 예시 SDK가 할당하는 결과와 세션 ID 출력합니다.
import asyncio import os from pymongo import AsyncMongoClient from claude_agent_sdk import ClaudeAgentOptions, ResultMessage, query from claude_agent_sdk_mongodb_session_store import MongoDBSessionStore async def main() -> None: client = AsyncMongoClient( os.environ["MONGODB_URI"], readPreference="primary", w="majority", serverSelectionTimeoutMS=10_000, timeoutMS=20_000, ) store = MongoDBSessionStore(client=client, db_name="claude") # Set up the database indexes that optimize the store's performance. # This operation is idempotent, so you can run it on every startup. await store.create_schema() async for message in query( prompt="Review this codebase and explain what it does.", options=ClaudeAgentOptions(session_store=store), ): if isinstance(message, ResultMessage) and message.subtype == "success": print(message.result) # The SDK assigns the session ID. Save it so that you can # resume the session later. print(f"Session ID: {message.session_id}") await client.close() asyncio.run(main())
세션 재개
세션을 재개하려면 ClaudeAgentOptions 객체 생성하고 재개하려는 세션의 저장 객체 와 세션 ID 전달합니다. SDK는 첫 번째 실행 결과 메시지의 session_id 필드 에 세션 ID 반환합니다.
비동기 함수 내에서 다음 스니펫을 사용하여 세션을 재개할 수 있습니다. <session-id>을(를) 세션 ID 로 바꿉니다.
# Pass the same store and the session ID from the earlier run. async for message in query( prompt="Suggest how to improve this codebase.", options=ClaudeAgentOptions( session_store=store, resume="<session-id>", ), ): if isinstance(message, ResultMessage) and message.subtype == "success": print(message.result)
보존 및 운영 고려 사항
어댑터는 각 스크립트 항목을 문서 로 저장하며 자체적으로 세션을 삭제하지 않습니다. 더 이상 활성화되지 않은 세션을 제거 하려면 크론 작업 이나 Atlas 예정된 트리거 와 같이 예정 에 따라 delete_inactive()를 호출합니다.
from datetime import timedelta # Delete every session with no new entries in the last 30 days. deleted = await store.delete_inactive(timedelta(days=30)) print(f"Deleted {deleted} inactive sessions.")
항목 시간에 time-to-live 인덱스 또는 delete_many() 필터하다 사용하여 개별 항목을 삭제 하지 마세요. 아직 사용 중인 세션에서 가장 오래된 항목을 제거하면 애플리케이션 재개할 수 없는 스크립트가 남게 됩니다.
클라이언트 구성
세션 저장 AsyncMongoClient의 구성을 사용하며 자체적으로 옵션을 설정하지 않습니다. 다음 프로덕션 설정을 사용합니다.
readPreference="primary": 세션이 재개될 때 최신 항목을 읽습니다.w="majority": 과반수의 복제본 세트 멤버가 확인한 후에만 추가를 승인합니다.serverSelectionTimeoutMS=10_000: 클라이언트 사용 가능한 서버 무기한 대기하지 않도록 중지합니다.timeoutMS=20_000: 작업이 Claude Agent SDK가 허용하는 60초 제한을 초과하지 않도록 중지합니다.
읽기 설정 및 쓰기 (write) 고려에 대해 자세히 학습 읽기 설정 (read preference) 및 쓰기 고려 (write concern) 문서를 참조하세요.
동시성
이 저장 세션당 한 명의 작성자를 위해 설계되었습니다. 동일한 세션에 쓰는 여러 프로세스를 동시에 실행 않도록 합니다. 작성기를 추가하면 추가 작업이 실패할 수 있습니다. 애플리케이션 사용자에게 데이터베이스 에 대해서만 readWrite 역할 부여합니다. 데이터베이스 역할에 대해 자세히 학습 내장 역할 설명서를 참조하세요.
데이터 보안 및 개인정보 보호
스크립트 저장 민감한 정보가 포함될 수 있습니다. 각 항목에는 사용자 프롬프트, 어시스턴트의 응답, 도구 입력 및 결과가 저장됩니다. 여기에는 파일 내용, 명령 출력, 자격 증명 및 개인 데이터가 포함될 수 있습니다. 스크립트 데이터를 보호하려면 다음 단계를 따르세요.
TLS를 통해 연결하여 전송 중인 데이터를 보호하세요.
전용 데이터베이스 사용자로 인증합니다.
전용 사용자에게 데이터베이스 에 대해서만
readWrite역할 부여합니다.미사용 데이터 암호화 활성화합니다.
암호화 및 인증 통한 데이터 보호에 대해 자세히 학습 암호화 설명서를 참조하세요.
추가 리소스
MongoDB 세션 저장 어댑터 및 Claude Agent SDK에 대해 자세히 학습 다음 리소스를 참조하세요.
리포지토리 방문하여 어댑터에 대한 최신 정보를 확인하고 리포지토리 별표를 표시하는 것도 좋습니다.