mem0 Memory System

""" Data models for the mem0 MCP server """ from typing import Dict, Any, Optional, List, Union from pydantic import BaseModel, Field class MemoryConfig(BaseModel): """Configuration for memory operations""" provider: str = Field(default="openai", description="LLM provider to use") embedding_provider: str = Field(default="openai", description="Provider to use for embeddings") api_key: Optional[str] = Field(default=None, description="API key for the provider") model: Optional[str] = Field(default=None, description="Model to use for the provider") embedding_model: Optional[str] = Field(default="text-embedding-3-small", description="Model to use for embeddings") data_dir: str = Field(default="./memory_data", description="Directory to store memory data") class MemoryContent(BaseModel): """Content for adding a memory""" content: Union[str, List[Dict[str, str]]] = Field(..., description="String content or list of message dicts") metadata: Optional[Dict[str, Any]] = Field(default=None, description="Additional metadata for the memory") class SearchQuery(BaseModel): """Query for searching memories""" query: str = Field(..., description="Search query") limit: int = Field(default=5, description="Maximum number of results to return") class ChatMessage(BaseModel): """Message for chatting with the AI""" message: str = Field(..., description="User message") system_prompt: Optional[str] = Field(default=None, description="Custom system prompt") include_memories: bool = Field(default=True, description="Whether to include memories in the prompt") class MemoryID(BaseModel): """Memory ID for operations""" memory_id: str = Field(..., description="Memory ID") class MemoryResponse(BaseModel): """Response containing a memory ID""" memory_id: str = Field(..., description="Memory ID") success: bool = Field(default=True, description="Whether the operation was successful") class SearchResponse(BaseModel): """Response containing search results""" success: bool = Field(default=True, description="Whether the operation was successful") results: List[Dict[str, Any]] = Field(..., description="Search results") memory_id: Optional[str] = Field(default=None, description="Memory ID of the stored conversation") class ChatResponse(BaseModel): """Response containing a chat message""" response: str = Field(..., description="AI response") memory_id: Optional[str] = Field(default=None, description="Memory ID of the stored conversation") class StatusResponse(BaseModel): """Response containing operation status""" success: bool = Field(..., description="Whether the operation was successful") message: str = Field(..., description="Status message") class MemoryData(BaseModel): """Data for a memory""" id: str = Field(..., description="Memory ID") content: Union[str, List[Dict[str, str]]] = Field(..., description="Memory content") metadata: Dict[str, Any] = Field(default_factory=dict, description="Memory metadata")