remember-mcp

remember-mcp

Multi-tenant memory system MCP server with vector search, relationships, and trust-based access control for AI assistants.

Category
访问服务器

README

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

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_key
  • Escape 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 start

Option 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 start

Config file resolution order (first wins per field):

  1. ./.remember/config (project-level — different tokens per project)
  2. ~/.remember/config (global)
  3. REMEMBER_API_TOKEN / REMEMBER_OAUTH_ENDPOINT env vars (override)

Auth env vars:

Variable Default Description
REMEMBER_AUTH_SCHEME service Auth mode: service (JWT via mcp-auth) or oauth (local token exchange)
REMEMBER_OAUTH_ENDPOINT OAuth token exchange URL (required when scheme=oauth)
REMEMBER_API_TOKEN API token for OAuth exchange (or via .remember/config)

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 memories
    • Tracking arrays: space_ids[] and group_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 IDs
  • Memory_spaces_public — All public space memories with composite IDs
  • Memory_groups_{groupId} — Group memories with composite IDs

Key Features:

  • Publish to multiple spaces and groups simultaneously
  • Composite IDs ({userId}.{memoryId}) preserve source reference
  • remember_revise syncs content changes to all published copies
  • Orphan 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

  1. 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" }
  1. Confirm: Execute the publication
remember_confirm({ token: "xyz789" })
// Creates composite ID copies in Memory_spaces_public and Memory_groups_{groupId}
  1. 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_history
  1. Retract: Remove from specific destinations
remember_retract({ memory_id: "abc123", spaces: ["cooking"] })
// Orphan strategy: memory remains in collection for historical reference
  1. Search: 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 action
  • remember_deny - Cancel any pending action
  • remember_search_space - Search shared spaces and groups
  • remember_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

  1. 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..."
}
  1. User Confirms: Execute the deletion
remember_confirm({ token: "xyz789" })

// Returns:
{
  "success": true,
  "memory_id": "abc123",
  "message": "Memory deleted successfully"
}
  1. Memory is Soft-Deleted: Marked as deleted, not removed
  • Memory remains in database with deleted_at timestamp
  • Excluded 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 memories

Include deleted memories:

remember_search_memory({
  query: "camping",
  deleted_filter: "include"
})
// Returns both active and deleted memories

Only deleted memories:

remember_search_memory({
  query: "camping",
  deleted_filter: "only"
})
// Returns only deleted memories

Applies to all search tools:

  • remember_search_memory
  • remember_query_memory
  • remember_find_similar
  • remember_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=TRACE

Example:

# 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:

Additional project docs:

  • Milestones (agent/milestones/)
  • Implementation tasks (agent/tasks/)

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选