Skip to main content
Glama

MCP Memory Service

docker-optimized-build.md6.17 kB
# Docker Optimized Build Guide ## Overview The MCP Memory Service Docker images have been optimized to use **sqlite_vec** as the default storage backend with **lightweight ONNX embeddings**, removing all heavy ML dependencies (ChromaDB, PyTorch, sentence-transformers). This results in: - **70-80% faster build times** - **1-2GB smaller image size** - **Lower memory footprint** - **Faster container startup** ## Building Docker Images ### Standard Build (Optimized Default) ```bash # Build the optimized image with lightweight embeddings docker build -f tools/docker/Dockerfile -t mcp-memory-service:latest . # Or use docker-compose docker-compose -f tools/docker/docker-compose.yml build ``` **Includes**: SQLite-vec + ONNX Runtime for embeddings (~100MB total dependencies) ### Slim Build (Minimal Installation) ```bash # Build the slim image without ML capabilities docker build -f tools/docker/Dockerfile.slim -t mcp-memory-service:slim . ``` **Includes**: Core MCP Memory Service without embeddings (~50MB dependencies) ### Full ML Build (All features) ```bash # Build with full ML capabilities (custom build) docker build -f tools/docker/Dockerfile -t mcp-memory-service:full \ --build-arg INSTALL_EXTRA="[sqlite-ml]" . ``` **Includes**: SQLite-vec (core) + PyTorch + sentence-transformers + ONNX (~2GB dependencies) ## Running Containers ### Using Docker Run ```bash # Run with sqlite_vec backend docker run -it \ -e MCP_MEMORY_STORAGE_BACKEND=sqlite_vec \ -v ./data:/app/data \ mcp-memory-service:latest ``` ### Using Docker Compose ```bash # Start the service docker-compose -f tools/docker/docker-compose.yml up -d # View logs docker-compose -f tools/docker/docker-compose.yml logs -f # Stop the service docker-compose -f tools/docker/docker-compose.yml down ``` ## Storage Backend Configuration The Docker images default to **sqlite_vec** for optimal performance. If you need ChromaDB support: ### Option 1: Install ML Dependencies at Runtime ```dockerfile # Base installation (SQLite-vec only, no embeddings) RUN pip install -e . # Add ONNX Runtime for lightweight embeddings (recommended) RUN pip install -e .[sqlite] # Add full ML capabilities (PyTorch + sentence-transformers) RUN pip install -e .[sqlite-ml] # Add ChromaDB backend support (includes full ML stack) RUN pip install -e .[chromadb] ``` ### Option 2: Use Full Installation ```bash # Install locally with lightweight SQLite-vec (default) python scripts/installation/install.py # Install locally with full ML support for SQLite-vec python scripts/installation/install.py --with-ml # Install locally with ChromaDB support (includes ML) python scripts/installation/install.py --with-chromadb # Then build Docker image docker build -t mcp-memory-service:full . ``` ## Environment Variables ```yaml environment: # Storage backend (sqlite_vec recommended) - MCP_MEMORY_STORAGE_BACKEND=sqlite_vec # Data paths - MCP_MEMORY_SQLITE_PATH=/app/data/sqlite_vec.db - MCP_MEMORY_BACKUPS_PATH=/app/data/backups # Performance - MCP_MEMORY_USE_ONNX=1 # For CPU-only deployments # Logging - LOG_LEVEL=INFO ``` ## Multi-Architecture Builds The optimized Dockerfiles support multi-platform builds: ```bash # Build for multiple architectures docker buildx build \ --platform linux/amd64,linux/arm64 \ -f tools/docker/Dockerfile \ -t mcp-memory-service:latest \ --push . ``` ## Image Sizes Comparison | Image Type | With ChromaDB | Without ChromaDB | Reduction | |------------|---------------|------------------|-----------| | Standard | ~2.5GB | ~800MB | 68% | | Slim | N/A | ~400MB | N/A | ## Build Time Comparison | Build Type | With ChromaDB | Without ChromaDB | Speedup | |------------|---------------|------------------|---------| | Standard | ~10-15 min | ~2-3 min | 5x | | Slim | N/A | ~1-2 min | N/A | ## Migration from ChromaDB If you have existing ChromaDB data: 1. Export data from ChromaDB container: ```bash docker exec mcp-memory-chromadb python scripts/backup/backup_memories.py ``` 2. Start new sqlite_vec container: ```bash docker-compose -f tools/docker/docker-compose.yml up -d ``` 3. Import data to sqlite_vec: ```bash docker exec mcp-memory-sqlite python scripts/backup/restore_memories.py ``` ## Troubleshooting ### Issue: Need ML Capabilities or ChromaDB If you need semantic search, embeddings, or ChromaDB support: 1. Install with ML dependencies: ```bash # For ML capabilities only python scripts/installation/install.py --with-ml # For ChromaDB (includes ML automatically) python scripts/installation/install.py --with-chromadb ``` 2. Set environment variables: ```bash export MCP_MEMORY_STORAGE_BACKEND=sqlite_vec # or chromadb ``` 3. Build Docker image with full dependencies ### Issue: Import error for ChromaDB If you see ChromaDB import errors: ``` ImportError: ChromaDB backend selected but chromadb package not installed ``` This is expected behavior. The system will: 1. Log a clear error message 2. Suggest installing with `--with-chromadb` 3. Recommend switching to sqlite_vec ## Best Practices 1. **Start with lightweight default** - No ML dependencies for basic functionality 2. **Add ML capabilities when needed** - Use `[ml]` optional dependencies for semantic search 3. **Use sqlite_vec for single-user deployments** - Fast and lightweight 4. **Use Cloudflare for production** - Global distribution without heavy dependencies 5. **Only use ChromaDB when necessary** - Multi-client local deployments 6. **Leverage Docker layer caching** - Build dependencies separately 7. **Use slim images for production** - Minimal attack surface ## CI/CD Integration For GitHub Actions: ```yaml - name: Build optimized Docker image uses: docker/build-push-action@v5 with: context: . file: ./tools/docker/Dockerfile platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} build-args: | SKIP_MODEL_DOWNLOAD=true ``` The `SKIP_MODEL_DOWNLOAD=true` build arg further reduces build time by deferring model downloads to runtime.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/doobidoo/mcp-memory-service'

If you have feedback or need assistance with the MCP directory API, please join our Discord server