Skip to main content
Glama
IMPLEMENTATION_PLAN_HTTP_SSE.md5.25 kB
# HTTP/SSE + SQLite-vec Implementation Plan **Date**: 2025-07-25 **Status**: Extracted from previous planning session **Context**: Issue #57 - Add HTTP/SSE interface to MCP Memory Service ## Executive Summary Implement HTTP REST API and Server-Sent Events (SSE) interface for the MCP Memory Service using the existing sqlite-vec backend instead of ChromaDB. This creates a lightweight, edge-ready solution that maintains all existing MCP functionality while adding modern web capabilities. ## Key Architectural Decision **Combine HTTP/SSE with sqlite-vec backend** instead of ChromaDB for: - Simplified deployment (single file database) - Better performance (10x faster operations) - Edge-ready deployment (Cloudflare Workers, Vercel) - No external dependencies - Instant SSE updates via SQLite triggers ## Implementation Phases ### Phase 1: Foundation (Week 1) - ✅ Create feature branch from sqlite-vec-backend - ✅ Create PROJECT_STATUS.md tracking file - [ ] Validate sqlite-vec functionality - [ ] Add FastAPI dependencies - [ ] Set up development environment ### Phase 2: HTTP Implementation (Week 2) - [ ] Create web server structure - [ ] Implement health check endpoint - [ ] Add memory CRUD endpoints - [ ] Add search endpoints - [ ] OpenAPI documentation ### Phase 3: SSE Implementation (Week 3) - [ ] Design SSE event architecture - [ ] Implement SQLite triggers - [ ] Create /events endpoint - [ ] Connection management - [ ] Real-time update testing ### Phase 4: Dashboard (Week 4) - [ ] Minimal UI design (vanilla JS) - [ ] Memory visualization - [ ] SSE connection handling - [ ] Search interface - [ ] Responsive design ## Technical Architecture ### Directory Structure ``` src/mcp_memory_service/ ├── web/ │ ├── __init__.py │ ├── app.py # FastAPI application │ ├── sse.py # SSE event handling │ ├── api/ │ │ ├── __init__.py │ │ ├── memories.py # Memory CRUD │ │ ├── search.py # Search operations │ │ └── health.py # Health monitoring │ └── static/ │ ├── index.html # Dashboard │ ├── app.js # Frontend JS │ └── style.css # Styling ├── storage/ │ ├── sqlite_vec.py # Existing │ └── sqlite_sse.py # New: SSE triggers ``` ### Server Modes 1. **MCP Mode**: Original stdio protocol (unchanged) 2. **HTTP Mode**: FastAPI server with SSE 3. **Hybrid Mode**: Both protocols simultaneously ### SSE Events - `memory_stored`: New memory added - `memory_deleted`: Memory removed - `search_completed`: Search results ready - `backup_status`: Backup progress - `health_update`: System status changes ### API Endpoints - `GET /api/health` - Health check - `GET /api/memories` - List memories (paginated) - `POST /api/memories` - Store new memory - `GET /api/memories/{id}` - Get specific memory - `DELETE /api/memories/{id}` - Delete memory - `POST /api/search` - Semantic search - `POST /api/search/by-tag` - Tag search - `POST /api/search/by-time` - Time-based recall - `GET /events` - SSE endpoint ## Dependencies to Add ``` fastapi>=0.115.0 uvicorn>=0.30.0 python-multipart>=0.0.9 sse-starlette>=2.1.0 aiofiles>=23.2.1 ``` ## Configuration ```python # New environment variables HTTP_ENABLED = 'MCP_HTTP_ENABLED' HTTP_PORT = 'MCP_HTTP_PORT' (default: 8000) HTTP_HOST = 'MCP_HTTP_HOST' (default: 0.0.0.0) CORS_ORIGINS = 'MCP_CORS_ORIGINS' SSE_HEARTBEAT_INTERVAL = 'MCP_SSE_HEARTBEAT' (default: 30s) API_KEY = 'MCP_API_KEY' (optional auth) ``` ## Performance Targets - Memory storage: <50ms (vs ChromaDB ~500ms) - Search response: <100ms for 1M memories - SSE latency: <10ms from write to event - Startup time: <1s (vs ChromaDB 5-10s) ## Testing Strategy - Unit tests for all HTTP endpoints - Integration tests for SSE connections - Performance benchmarks vs ChromaDB - Browser compatibility testing - Edge deployment validation ## Security Considerations - Optional API key authentication - CORS configuration - Rate limiting - Input validation - SSL/TLS documentation ## Migration Path - Existing MCP users: No changes required - ChromaDB users: Migration script provided - New users: SQLite-vec as default for HTTP mode ## Benefits - **Simplicity**: Single file database, no external services - **Performance**: Orders of magnitude faster - **Portability**: Runs anywhere Python runs - **Reliability**: SQLite's proven track record - **Modern**: HTTP/SSE/REST for web integration - **Efficient**: Minimal resource usage - **Edge-ready**: Deploy to CDN edge locations ## Future Possibilities - Distributed SQLite with Litestream replication - Cloudflare Workers deployment with D1 - Offline-first PWA with WASM SQLite - Federation between multiple instances ## Success Metrics - HTTP endpoints respond within performance targets - SSE connections maintain real-time updates <10ms - Dashboard provides intuitive memory management - Documentation enables easy deployment - Migration from ChromaDB is seamless - Edge deployment works on major platforms --- This plan represents a significant architectural improvement while maintaining full backward compatibility with existing MCP usage patterns.

Latest Blog Posts

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