Implementation Summary:
- REST API with FastAPI (complete CRUD operations)
- MCP Server with Python MCP SDK (7 tools)
- Supabase migrations (pgvector setup)
- Docker Compose orchestration
- Mintlify documentation site
- Environment configuration
- Shared config module
REST API Features:
- POST /v1/memories/ - Add memory
- GET /v1/memories/search - Semantic search
- GET /v1/memories/{id} - Get memory
- GET /v1/memories/user/{user_id} - User memories
- PATCH /v1/memories/{id} - Update memory
- DELETE /v1/memories/{id} - Delete memory
- GET /v1/health - Health check
- GET /v1/stats - Statistics
- Bearer token authentication
- OpenAPI documentation
MCP Server Tools:
- add_memory - Add from messages
- search_memories - Semantic search
- get_memory - Retrieve by ID
- get_all_memories - List all
- update_memory - Update content
- delete_memory - Delete by ID
- delete_all_memories - Bulk delete
Infrastructure:
- Neo4j 5.26 with APOC/GDS
- Supabase pgvector integration
- Docker network: localai
- Health checks and monitoring
- Structured logging
Documentation:
- Introduction page
- Quickstart guide
- Architecture deep dive
- Mintlify configuration
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
122 lines
3.4 KiB
Python
122 lines
3.4 KiB
Python
"""
|
|
Shared configuration for T6 Mem0 v2
|
|
Loads environment variables and creates Mem0 configuration
|
|
"""
|
|
|
|
import os
|
|
from typing import Dict, Any
|
|
from pydantic_settings import BaseSettings
|
|
from pydantic import Field
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application settings loaded from environment variables"""
|
|
|
|
# OpenAI
|
|
openai_api_key: str = Field(..., env="OPENAI_API_KEY")
|
|
|
|
# Supabase
|
|
supabase_connection_string: str = Field(..., env="SUPABASE_CONNECTION_STRING")
|
|
|
|
# Neo4j
|
|
neo4j_uri: str = Field(..., env="NEO4J_URI")
|
|
neo4j_user: str = Field(default="neo4j", env="NEO4J_USER")
|
|
neo4j_password: str = Field(..., env="NEO4J_PASSWORD")
|
|
|
|
# API
|
|
api_host: str = Field(default="0.0.0.0", env="API_HOST")
|
|
api_port: int = Field(default=8080, env="API_PORT")
|
|
api_key: str = Field(..., env="API_KEY")
|
|
|
|
# MCP Server
|
|
mcp_host: str = Field(default="0.0.0.0", env="MCP_HOST")
|
|
mcp_port: int = Field(default=8765, env="MCP_PORT")
|
|
|
|
# Mem0
|
|
mem0_collection_name: str = Field(default="t6_memories", env="MEM0_COLLECTION_NAME")
|
|
mem0_embedding_dims: int = Field(default=1536, env="MEM0_EMBEDDING_DIMS")
|
|
mem0_version: str = Field(default="v1.1", env="MEM0_VERSION")
|
|
|
|
# Logging
|
|
log_level: str = Field(default="INFO", env="LOG_LEVEL")
|
|
log_format: str = Field(default="json", env="LOG_FORMAT")
|
|
|
|
# Environment
|
|
environment: str = Field(default="development", env="ENVIRONMENT")
|
|
|
|
class Config:
|
|
env_file = ".env"
|
|
env_file_encoding = "utf-8"
|
|
case_sensitive = False
|
|
|
|
|
|
def get_settings() -> Settings:
|
|
"""Get application settings"""
|
|
return Settings()
|
|
|
|
|
|
def get_mem0_config(settings: Settings) -> Dict[str, Any]:
|
|
"""
|
|
Generate Mem0 configuration from settings
|
|
|
|
Args:
|
|
settings: Application settings
|
|
|
|
Returns:
|
|
Dict containing Mem0 configuration
|
|
"""
|
|
return {
|
|
# Vector Store - Supabase
|
|
"vector_store": {
|
|
"provider": "supabase",
|
|
"config": {
|
|
"connection_string": settings.supabase_connection_string,
|
|
"collection_name": settings.mem0_collection_name,
|
|
"embedding_model_dims": settings.mem0_embedding_dims,
|
|
"index_method": "hnsw", # Fastest search
|
|
"index_measure": "cosine_distance" # Best for embeddings
|
|
}
|
|
},
|
|
|
|
# Graph Store - Neo4j
|
|
"graph_store": {
|
|
"provider": "neo4j",
|
|
"config": {
|
|
"url": settings.neo4j_uri,
|
|
"username": settings.neo4j_user,
|
|
"password": settings.neo4j_password
|
|
}
|
|
},
|
|
|
|
# LLM Provider - OpenAI
|
|
"llm": {
|
|
"provider": "openai",
|
|
"config": {
|
|
"model": "gpt-4o-mini",
|
|
"temperature": 0.1,
|
|
"max_tokens": 2000,
|
|
"api_key": settings.openai_api_key
|
|
}
|
|
},
|
|
|
|
# Embedder - OpenAI
|
|
"embedder": {
|
|
"provider": "openai",
|
|
"config": {
|
|
"model": "text-embedding-3-small",
|
|
"embedding_dims": settings.mem0_embedding_dims,
|
|
"api_key": settings.openai_api_key
|
|
}
|
|
},
|
|
|
|
# Version
|
|
"version": settings.mem0_version
|
|
}
|
|
|
|
|
|
# Global settings instance
|
|
settings = get_settings()
|
|
|
|
# Global mem0 config
|
|
mem0_config = get_mem0_config(settings)
|