npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@prmichaelsen/remember-mcp

v4.1.0

Published

Multi-tenant memory system MCP server with vector search and relationships

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\":\"[email protected]\"}",
        "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