remember-mcp
Provides Firestore for storing user preferences, permissions, and confirmation tokens, and Firebase Auth for user authentication.
Provides vector embeddings for semantic search capabilities in memory retrieval.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@remember-mcpRemember that Sarah's birthday is June 15th"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
remember-mcp
Multi-tenant memory system MCP server with vector search, relationships, and trust-based access control.
Value Proposition
remember-mcp gives AI assistants a persistent, searchable memory system that enables them to:
Remember Everything: Store and recall information across conversations
Find Connections: Discover relationships between memories using semantic search
Learn Over Time: Build a knowledge graph that grows with each interaction
Personalize Responses: Access user preferences and context for tailored interactions
Search Intelligently: Use hybrid semantic + keyword search to find relevant memories
Organize Knowledge: Categorize memories with 45+ content types (people, events, recipes, notes, etc.)
Why Use remember-mcp?
For AI Assistants:
Persistent memory across sessions (no more forgetting previous conversations)
Semantic search finds relevant context even with different wording
Relationship tracking reveals connections between memories
RAG-optimized queries for natural language understanding
Trust-based access control for privacy-sensitive information
For Developers:
Multi-tenant architecture with per-user isolation
Production-ready with comprehensive error handling
Compatible with Claude Desktop, mcp-auth, and custom integrations
Vector embeddings via OpenAI for semantic understanding
Firestore for metadata and preferences
For Users:
Their AI assistant remembers important information
Discovers connections between different topics
Provides personalized responses based on preferences
Respects privacy with trust-based access control
Related MCP server: Cognio
Use Cases
Personal Assistant
"Remember that Sarah's birthday is June 15th"
"What did I learn about React hooks last week?"
"Find all my camping trip memories"
"What recipes have I saved that use chicken?"
Knowledge Management
Store research notes with semantic search
Track relationships between concepts
Build a personal knowledge graph
Query with natural language
Project Tracking
Remember project decisions and context
Link related tasks and ideas
Search across all project memories
Track what inspired each decision
Relationship Management
Remember details about people you meet
Track connections between contacts
Recall conversation context
Find related interactions
Features
29+ MCP Tools: Complete CRUD for memories, relationships, preferences, shared spaces, content sync, and 11 admin debugging tools
Soft Delete with Recovery: Safe deletion with confirmation flow and recovery capability
Multi-Tenant: Per-user isolation with secure data boundaries
Shared Spaces: Publish memories to shared discovery spaces like "The Void"
Token-Based Confirmation: Secure two-phase workflow for sensitive operations (publish, delete)
Vector Search: Semantic + keyword hybrid search with Weaviate
Knowledge Graph: N-way relationships with bidirectional tracking
RAG Queries: Natural language queries with context-aware responses
45 Content Types: Notes, events, people, recipes, goals, tasks, and more
User Preferences: Customizable search, location, privacy, and display settings
Trust-Based Access: Fine-grained access control (0-1 trust levels)
Production-Ready: Comprehensive error handling and logging
Quick Start
Option 1: Use with Claude Desktop (Recommended)
Add to your Claude Desktop MCP configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"remember": {
"command": "npx",
"args": ["-y", "@prmichaelsen/remember-mcp"],
"env": {
"WEAVIATE_REST_URL": "https://your-instance.weaviate.cloud",
"WEAVIATE_API_KEY": "your-weaviate-api-key",
"OPENAI_EMBEDDINGS_API_KEY": "sk-...",
"FIREBASE_ADMIN_SERVICE_ACCOUNT_KEY": "{\"type\":\"service_account\",\"project_id\":\"your-project\",\"private_key\":\"-----BEGIN PRIVATE KEY-----\\nYOUR_KEY\\n-----END PRIVATE KEY-----\\n\",\"client_email\":\"firebase-adminsdk@your-project.iam.gserviceaccount.com\"}",
"FIREBASE_PROJECT_ID": "your-project-id"
}
}
}
}Important:
Use
\\n(double backslash) for newlines in private_keyEscape all quotes with
\"Get Weaviate Cloud at https://console.weaviate.cloud
Get Firebase service account from Firebase Console → Project Settings → Service Accounts
Option 2: Standalone (stdio transport)
# Install dependencies
npm install
# Set up environment
cp .env.example .env
# Edit .env with your configuration
# Run in development
npm run dev
# Build for production
npm run build
npm startOption 3: Local with OAuth (Claude Code / CLI)
Use an API token to authenticate against a remote platform (e.g. agentbase.me):
# Set auth scheme to oauth
export REMEMBER_AUTH_SCHEME=oauth
export REMEMBER_OAUTH_ENDPOINT=https://agentbase.me/api/oauth/token
export REMEMBER_API_TOKEN=ab_live-sk_your_token_here
# Or use a config file instead of env vars:
mkdir -p ~/.remember
cat > ~/.remember/config << 'EOF'
oauth_endpoint: https://agentbase.me/api/oauth/token
api_token: ab_live-sk_your_token_here
EOF
# Run — will exchange token for JWT at startup
npm startConfig file resolution order (first wins per field):
./.remember/config(project-level — different tokens per project)~/.remember/config(global)REMEMBER_API_TOKEN/REMEMBER_OAUTH_ENDPOINTenv vars (override)
Auth env vars:
Variable | Default | Description |
|
| Auth mode: |
| — | OAuth token exchange URL (required when scheme=oauth) |
| — | API token for OAuth exchange (or via |
Option 4: With mcp-auth (multi-tenant production)
import { wrapServer, JWTAuthProvider } from '@prmichaelsen/mcp-auth';
import { createServer } from '@prmichaelsen/remember-mcp/factory';
const wrapped = wrapServer({
serverFactory: createServer,
authProvider: new JWTAuthProvider({
jwtSecret: process.env.JWT_SECRET
}),
// tokenResolver not needed - remember-mcp is self-managed
resourceType: 'remember',
transport: { type: 'sse', port: 3000 }
});
await wrapped.start();Architecture
Weaviate: Vector storage for memories, relationships, and shared spaces
Personal collections:
Memory_users_{userId}(per-user isolation)Public space collection:
Memory_spaces_public(all shared spaces)Group collections:
Memory_groups_{groupId}(private groups)Composite IDs:
{userId}.{memoryId}for published memoriesTracking arrays:
space_ids[]andgroup_ids[]track publication locations
Firestore: Permissions, preferences, confirmation tokens
User data:
users/{user_id}/preferences,users/{user_id}/requests
Firebase Auth: User authentication
Memory Collection Pattern v2 (v3.1.0+)
Three-tier collection architecture with composite IDs and tracking arrays.
Collections:
Memory_users_{userId}— Private memories with simple IDsMemory_spaces_public— All public space memories with composite IDsMemory_groups_{groupId}— Group memories with composite IDs
Key Features:
Publish to multiple spaces and groups simultaneously
Composite IDs (
{userId}.{memoryId}) preserve source referenceremember_revisesyncs content changes to all published copiesOrphan strategy keeps retracted memories for historical reference
Revision history (max 10 entries) tracks content changes
Example:
// Publish to spaces + groups
remember_publish({
memory_id: "my-recipe",
spaces: ["cooking", "recipes"],
groups: ["foodie-club"]
})
// Search across spaces
remember_search_space({
query: "pasta recipe",
spaces: ["cooking"],
search_type: "hybrid"
})Shared Spaces
Publish memories to shared discovery spaces where other users can find them.
The Void
"The Void" is a shared space for discovering thoughts and ideas from other users.
Publishing Workflow
Publish: Generate confirmation token
// Publish to spaces + groups
remember_publish({
memory_id: "abc123",
spaces: ["the_void", "cooking"],
groups: ["foodie-club"]
})
// Returns: { success: true, token: "xyz789" }Confirm: Execute the publication
remember_confirm({ token: "xyz789" })
// Creates composite ID copies in Memory_spaces_public and Memory_groups_{groupId}Revise: Sync content changes (confirmation required)
// After updating source memory, request revision
remember_revise({ memory_id: "abc123" })
// Returns: { success: true, token: "xyz789" }
remember_confirm({ token: "xyz789" })
// Updates all copies, preserves old content in revision_historyRetract: Remove from specific destinations
remember_retract({ memory_id: "abc123", spaces: ["cooking"] })
// Orphan strategy: memory remains in collection for historical referenceSearch: Discover shared memories
remember_search_space({
query: "pasta recipe",
spaces: ["cooking"],
search_type: "hybrid" // hybrid | bm25 | semantic
})Space & Group Tools
remember_publish- Publish to spaces and/or groups (confirmation required)remember_retract- Retract from spaces and/or groups (confirmation required)remember_revise- Sync content to all published copies (confirmation required)remember_confirm- Confirm any pending actionremember_deny- Cancel any pending actionremember_search_space- Search shared spaces and groupsremember_query_space- Ask questions about shared memories
Safe Deletion with Confirmation
v3.0.0+: Deletion now requires confirmation to prevent accidental data loss.
Deletion Workflow
Request Deletion: Generate confirmation token
remember_delete_memory({
memory_id: "abc123",
reason: "No longer needed"
})
// Returns:
{
"success": true,
"token": "xyz789",
"expires_at": "2026-02-25T17:30:00Z",
"preview": {
"memory_id": "abc123",
"content": "My camping trip to Yosemite...",
"type": "note",
"relationships_count": 3,
"will_orphan": ["rel1", "rel2", "rel3"]
},
"message": "Deletion requested. Use remember_confirm with token..."
}User Confirms: Execute the deletion
remember_confirm({ token: "xyz789" })
// Returns:
{
"success": true,
"memory_id": "abc123",
"message": "Memory deleted successfully"
}Memory is Soft-Deleted: Marked as deleted, not removed
Memory remains in database with
deleted_attimestampExcluded from searches by default
Can be searched with
deleted_filter: "include"or"only"Future: restoration tool (not in v3.0.0)
Searching Deleted Memories
Default behavior (exclude deleted):
remember_search_memory({ query: "camping" })
// Returns only active memoriesInclude deleted memories:
remember_search_memory({
query: "camping",
deleted_filter: "include"
})
// Returns both active and deleted memoriesOnly deleted memories:
remember_search_memory({
query: "camping",
deleted_filter: "only"
})
// Returns only deleted memoriesApplies to all search tools:
remember_search_memoryremember_query_memoryremember_find_similarremember_search_relationship
Important Notes
⚠️ Breaking Change (v3.0.0):
Deletion now requires confirmation (two-step process)
Deleted memories excluded from searches by default
Cannot create relationships with deleted memories
Cannot update deleted memories
Data Safety:
Deleted memories remain in database (soft delete)
No permanent deletion feature
Deletion timestamp and reason tracked
Future restoration capability planned
Debugging
Enable detailed debug logging with the REMEMBER_MCP_DEBUG_LEVEL environment variable:
# No debug output (production default)
REMEMBER_MCP_DEBUG_LEVEL=NONE
# Only errors
REMEMBER_MCP_DEBUG_LEVEL=ERROR
# Warnings and errors
REMEMBER_MCP_DEBUG_LEVEL=WARN
# Info, warnings, and errors
REMEMBER_MCP_DEBUG_LEVEL=INFO
# Debug, info, warnings, and errors (recommended for development)
REMEMBER_MCP_DEBUG_LEVEL=DEBUG
# Everything including parameter dumps (use with caution)
REMEMBER_MCP_DEBUG_LEVEL=TRACEExample:
# Enable debug logging for development
REMEMBER_MCP_DEBUG_LEVEL=DEBUG npm run dev
# Enable trace logging for troubleshooting
REMEMBER_MCP_DEBUG_LEVEL=TRACE npm start⚠️ Security Note: TRACE level includes full parameter dumps and may expose sensitive data. Use only in development environments.
Documentation
See agent/design/ for detailed documentation:
Memory Collection Pattern v2 — Architecture and design rationale
v2 API Reference — Complete tool schemas and parameters
v2 Migration Guide — Migrating from v1 to v2
v2 Usage Examples — Real-world usage patterns
Additional project docs:
Milestones (
agent/milestones/)Implementation tasks (
agent/tasks/)
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/prmichaelsen/remember-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server