Cloud-based vector memory service with persistent storage and semantic search
MCP Memory Service - TypeScript
A modern TypeScript implementation of a cloud-based vector memory service for AI assistants via the Model Context Protocol (MCP). This service provides persistent storage with semantic search capabilities for Claude.ai and other AI assistants.
Current Version: 1.7.2 | Status: Production-ready | Test Coverage: 95.2%
Features
- š§ 3-Tier Memory System: SYSTEM, LEARNED, and MEMORY layers for hierarchical knowledge organization
- š„ Multi-Tenant Support: Secure user isolation with Clerk OAuth authentication
- š Vector Search: Semantic similarity search using OpenAI embeddings
- š Automatic Embeddings: Auto-generates and updates embeddings on data changes
- š¢ Entity Management: Track people, organizations, projects, and relationships
- š Interaction History: Store and retrieve conversation history with context
- š± Contacts Sync: True bidirectional sync with macOS Contacts using LLM-based deduplication
- š Google Sync: Google Contacts and Calendar integration with incremental sync (v1.7.0+)
- š Calendar Tracking: Week-based Google Calendar event sync with attendee linking
- š Web Interface: Modern Next.js web UI for visual memory management (staging on port 3002)
- š MCP Protocol: JSON-RPC 2.0 over stdio (local) and HTTP (remote)
- š REST API: HTTP interface for web applications
- š OAuth Integration: Clerk authentication for remote access with 95.2% test coverage
- āļø Cloud-Ready: Built for modern cloud deployment with Turso database
- š Security Patches: Critical user isolation vulnerabilities fixed in v1.7.1
- š Smart Logging: LOG_LEVEL-aware logging with state tracking (v1.7.1+)
Architecture
src/
āāā types/ # TypeScript type definitions
āāā models/ # Data models and schemas
āāā database/ # Database connection and operations
āāā core/ # Core memory logic and vector search
āāā mcp/ # MCP server implementation
āāā api/ # REST API server
āāā cli/ # CLI tool
āāā utils/ # Utility functions
āāā index.ts # Main entry point
web/
āāā app/ # Next.js app directory
āāā components/ # React components
āāā lib/ # Utilities and integrations
āāā public/ # Static assets
Quick Start
Prerequisites
- Node.js 18+
- Turso database (or LibSQL compatible)
- OpenAI API key (for embeddings)
Installation
# Clone and install dependencies
npm install
# Copy environment configuration
cp .env.local .env
# Build the project
npm run build
# Start development server
npm run dev
Environment Variables
Required variables in .env:
# Database Configuration
TURSO_URL=libsql://your-database.turso.io
TURSO_AUTH_TOKEN=your-auth-token
# OpenAI Configuration (for vector embeddings)
OPENAI_API_KEY=your-openai-api-key
# Optional Configuration
LOG_LEVEL=info # Options: debug, info (default), warn, error (v1.7.1+)
MCP_DEBUG=0 # Set to 1 for detailed MCP protocol debugging
DEFAULT_USER_EMAIL=user@example.com
# Automatic Embedding Updates (v1.1.0+)
ENABLE_EMBEDDING_MONITOR=true # Enable background monitoring
EMBEDDING_MONITOR_INTERVAL=60000 # Check every 60 seconds
# Web Interface (v1.3.0+)
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your-clerk-publishable-key
CLERK_SECRET_KEY=your-clerk-secret-key
# Google Integration (v1.7.0+)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:3002/api/auth/google/callback # Use port 3002 for staging
Usage
MCP Server (for Claude Desktop)
Recommended: Using CLI Tool
# Install globally
npm install -g mcp-memory-ts
# Initialize configuration
mcp-memory init
# Install to Claude Desktop
mcp-memory install
# Check status
mcp-memory status
This creates a config in ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"mcp-memory-ts": {
"command": "mcp-memory",
"args": ["server"],
"env": {
"TURSO_URL": "your-database-url",
"TURSO_AUTH_TOKEN": "your-auth-token",
"OPENAI_API_KEY": "your-openai-key",
"DEFAULT_USER_EMAIL": "user@example.com"
}
}
}
}
Manual Setup
For development or manual configuration:
# Start MCP server
npm run mcp-server
# Or with debug logging
MCP_DEBUG=1 npm run mcp-server
# Or using CLI command
mcp-memory server --debug
Remote MCP Server (HTTP with OAuth)
For web applications and remote access with Clerk authentication:
# Start remote MCP server
npm run mcp-server-remote
The remote MCP server will be available at http://localhost:3003 with:
- Authentication: Clerk OAuth session tokens
- Multi-Tenant: Complete user isolation by email
- Protocol: JSON-RPC 2.0 over HTTP
- Security: Rate limiting, CORS, session management
- **
Tools (5)
memory_managementManage SYSTEM, LEARNED, and MEMORY layers for hierarchical knowledge organization.entity_managementTrack people, organizations, projects, and relationships within the memory service.vector_searchPerform semantic similarity search using OpenAI embeddings to retrieve relevant context.contact_syncBidirectional synchronization with macOS and Google contacts with deduplication.calendar_trackingSync Google Calendar events with attendee linking and week-based tracking.Environment Variables
TURSO_URLrequiredLibSQL compatible database URLTURSO_AUTH_TOKENrequiredAuthentication token for Turso databaseOPENAI_API_KEYrequiredAPI key for generating vector embeddingsDEFAULT_USER_EMAILDefault email for user isolationLOG_LEVELLogging verbosity (debug, info, warn, error)Configuration
{"mcpServers": {"mcp-memory-ts": {"command": "mcp-memory", "args": ["server"], "env": {"TURSO_URL": "your-database-url", "TURSO_AUTH_TOKEN": "your-auth-token", "OPENAI_API_KEY": "your-openai-key", "DEFAULT_USER_EMAIL": "user@example.com"}}}}