Memory MCP
Provides AI agents with persistent, searchable memory using semantic search, auto-linking, and categorization, with zero-config local setup or production-ready external providers.
README
Memory MCP
Persistent memory for AI agents. Plug-and-play with zero infrastructure.
A Model Context Protocol (MCP) server that gives your AI agents persistent, searchable memory. Works out of the box with zero configuration using local embeddings and file-based storage.
Features
- π Semantic Search - Find memories by meaning, not keywords
- π Auto-Linking - Related memories are automatically connected
- π·οΈ Auto-Categorization - Memories are categorized by type (knowledge, decision, pattern, etc.)
- β Importance Scoring - Automatic priority based on content
- π Pluggable Embeddings - Transformers.js (default), OpenAI, Ollama, or custom
- π¦ Zero Config - No database or API keys required to start
- π€ Agent Instructions - Agents automatically learn when and how to use memory tools via MCP protocol
Web Dashboard
Browse and search your memories in the browser with memory-mcp-dashboard β cyberpunk-themed UI, neural graph visualization, same storage.
Quick Start
Start the server immediately with zero configuration.
# Run using npx (requires Node 18+)
npx @aalokjha/mem-aj
Or install locally:
npm i @aalokjha/mem-aj
How it works by default:
- Embeddings: Uses in-process Transformers.js (
all-MiniLM-L6-v2, 384 dimensions). No external server or Python needed. - Storage: Uses a local JSON vector store at
~/.memory-mcp/. - Initialization: The first run downloads a ~90MB model file. Every run after that is instant.
MCP Client Configuration
Add Memory MCP to your favorite AI tools by adding these configurations.
OpenCode / Claude Desktop / Cursor
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@aalokjha/mem-aj"]
}
}
}
Production Setup
Configure environment variables to use high-performance storage and external embedding providers.
Qdrant + External Embeddings
- Run your own Qdrant instance.
- Set environment variables to point to your services:
export VECTORDB_PROVIDER=qdrant
export QDRANT_URL=http://localhost:6333
export EMBEDDING_PROVIDER=openai
export EMBEDDING_API_KEY=sk-your-key
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
EMBEDDING_PROVIDER |
transformersjs |
Embedding provider: transformersjs, openai, ollama, custom |
VECTORDB_PROVIDER |
local |
Storage provider: local, qdrant |
EMBEDDING_URL |
- | Embedding service URL (for Ollama/Custom) |
EMBEDDING_API_KEY |
- | API key for OpenAI |
EMBEDDING_MODEL |
Provider default | Model name |
EMBEDDING_DIMENSIONS |
Provider default | Vector dimensions |
EMBEDDING_MAX_TOKENS |
Provider default | Max token context window for embeddings |
QDRANT_URL |
http://localhost:6333 |
Qdrant endpoint |
VECTORDB_COLLECTION |
memories |
Collection name |
LOG_LEVEL |
info |
Log level: debug, info, warn, error |
Embedding Providers
Transformers.js (Default - Zero Config)
Runs locally in your Node.js process. No external services needed.
export EMBEDDING_PROVIDER=transformersjs
OpenAI
export EMBEDDING_PROVIDER=openai
export EMBEDDING_API_KEY=sk-your-key
export EMBEDDING_MODEL=text-embedding-3-small
Ollama
export EMBEDDING_PROVIDER=ollama
export EMBEDDING_URL=http://localhost:11434
export EMBEDDING_MODEL=nomic-embed-text
Custom
Any HTTP endpoint that accepts POST /embed with { inputs: string[] } and returns number[][].
export EMBEDDING_PROVIDER=custom
export EMBEDDING_URL=http://your-service:port
MCP Tools
memory_add
Store a memory with automatic categorization and importance scoring.
{
"content": "Decided to use PostgreSQL for the main database",
"type": "auto",
"tags": ["database", "architecture"],
"project": "my-app"
}
memory_search
Semantic search across all memories.
{
"query": "database decisions",
"limit": 10,
"min_score": 0.7
}
memory_list
Browse memories by type, tags, or project.
{
"type": "decision",
"project": "my-app",
"limit": 20
}
memory_forget
Delete a memory by ID.
{
"memoryId": "uuid-here"
}
memory_link
Manually link two related memories.
{
"id1": "uuid-1",
"id2": "uuid-2"
}
memory_profile
Store user preferences.
{
"action": "set",
"key": "preferred_language",
"value": "typescript"
}
Memory Types
| Type | Description | Keywords Detected |
|---|---|---|
knowledge |
Facts and information | (default) |
decision |
Choices made | decided, chose, will use, picked |
pattern |
Recurring solutions | pattern, always, convention, best practice |
preference |
User preferences | prefer, like, dislike, want, hate |
context |
Situational context | working on, currently, project |
debug |
Debug notes | error, bug, fix, crash, issue |
Development
# Install dependencies
npm install
# Build
npm run build
# Run in dev mode
npm run dev
# Run tests
npm test
Agent Instructions
The server automatically injects usage instructions into the connected agent's context via the MCP instructions protocol field. Agents learn:
- When to search, store, and link memories
- How to write effective memories (word limits adapted to the configured embedding model)
- What memory types to use and cross-tool workflows
No manual prompt engineering or AGENTS.md configuration needed. Just connect and the agent knows what to do.
Token limits per provider default:
| Provider | Max Tokens | Max Words |
|---|---|---|
| Transformers.js | 512 | ~384 |
| OpenAI | 8,191 | ~6,143 |
| Ollama | 8,192 | ~6,144 |
| Custom | 512 | ~384 |
Override with EMBEDDING_MAX_TOKENS if using a non-default model.
Architecture
Memory MCP supports two modes:
Zero-Config Mode (Default)
Simple, file-based storage for personal use.
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β MCP Client ββββββΆβ Memory MCP ββββββΆβ Local JSON β
β (Claude/AI) β β Server β β Vector Store β
βββββββββββββββββββ ββββββββββ¬βββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β Transformers.js β
β (In-process) β
βββββββββββββββββββ
Production Mode
High-performance configuration for shared environments.
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β MCP Client ββββββΆβ Memory MCP ββββββΆβ Qdrant β
β (Claude/AI) β β Server β β Vector DB β
βββββββββββββββββββ ββββββββββ¬βββββββββ βββββββββββββββββββ
β
βΌ
βββββββββββββββββββ
β External β
β Provider β
β (OpenAI/Ollama) β
βββββββββββββββββββ
License
MIT License - see LICENSE
Contributing
Contributions welcome! Please read our contributing guidelines.
Credits
Built by Aalok Jha
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.