Files
t6_mem0_v2/config.py
Claude Code 61a4050a8e Complete implementation: REST API, MCP server, and documentation
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>
2025-10-14 08:44:16 +02:00

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)