Skip to main content

🧠 Hippocampus Memory MCP Server

Persistent, Semantic Memory for Large Language Models

Python 3.9+ MCP License: MIT

Features • Installation • Quick Start • Documentation • Architecture


📖 Overview

A Python-based Model Context Protocol (MCP) server that gives LLMs persistent, hippocampus-inspired memory across sessions. Store, retrieve, consolidate, and forget memories using semantic similarity search powered by vector embeddings.

Why Hippocampus? Just like the human brain's hippocampus consolidates short-term memories into long-term storage, this server intelligently manages LLM memory through biological patterns:

  • 🔄 Consolidation - Merge similar memories to reduce redundancy
  • 🧹 Forgetting - Remove outdated information based on age/importance
  • 🔍 Semantic Retrieval - Find relevant memories through meaning, not keywords

✨ Features

Feature Description
🗄️ Vector Storage FAISS-powered semantic similarity search
🎯 MCP Compliant Full MCP 1.2.0 spec compliance via FastMCP
🧬 Bio-Inspired Hippocampus-style consolidation and forgetting
🔒 Security Input validation, rate limiting, injection prevention
🔎 Semantic Search Sentence transformer embeddings (CPU-optimized)
♾️ Unlimited Storage No memory count limits, only per-item size limits
🆓 100% Free Local embedding model - no API costs

🚀 Quick Start

5 Core MCP Tools

memory_read         # 🔍 Retrieve memories by semantic similarity
memory_write        # ✍️  Store new memories with tags & metadata
memory_consolidate  # 🔄 Merge similar memories
memory_forget       # 🧹 Remove memories by age/importance/tags
memory_stats        # 📊 Get system statistics

📦 Installation

Prerequisites

  • Python 3.9+
  • ~200MB disk space (for embedding model)

Setup in 3 Steps

# 1. Clone the repository
git clone https://github.com/jameslovespancakes/Memory-MCP.git
cd Memory-MCP

# 2. Install dependencies
pip install -r requirements.txt

# 3. Run the server
python -m memory_mcp_server.server

Claude Desktop Integration

Add to your Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "memory": {
      "command": "python",
      "args": ["-m", "memory_mcp_server.server"],
      "cwd": "/path/to/Memory-MCP"
    }
  }
}

🎉 That's it! Claude will now have persistent memory across conversations.

📚 Documentation

Memory Operations via MCP

Once connected to Claude, use natural language:

"Remember that I prefer Python for backend development"
→ Claude calls memory_write()

"What do you know about my programming preferences?"
→ Claude calls memory_read()

"Consolidate similar memories to clean up storage"
→ Claude calls memory_consolidate()

Direct API Usage

✍️ Writing Memories

from memory_mcp_server.storage import MemoryStorage
from memory_mcp_server.tools import MemoryTools

storage = MemoryStorage(storage_path="my_memory")
await storage._ensure_initialized()
tools = MemoryTools(storage)

# Store with tags and importance
await tools.memory_write(
    text="User prefers dark mode UI",
    tags=["preference", "ui"],
    importance_score=3.0,
    metadata={"category": "settings"}
)

🔍 Reading Memories

# Semantic search
result = await tools.memory_read(
    query_text="What are my UI preferences?",
    top_k=5,
    min_similarity=0.3
)

# Filter by tags and date
result = await tools.memory_read(
    query_text="Python learning",
    tags=["learning", "python"],
    date_range_start="2024-01-01"
)

🔄 Consolidating Memories

# Merge similar memories (threshold: 0.85)
result = await tools.memory_consolidate(similarity_threshold=0.85)
print(f"Merged {result['consolidated_groups']} groups")

🧹 Forgetting Memories

# Remove by age
await tools.memory_forget(max_age_days=30)

# Remove by importance
await tools.memory_forget(min_importance_score=2.0)

# Remove by tags
await tools.memory_forget(tags_to_forget=["temporary"])

Testing

Run the included test suite:

python test_memory.py

This tests all 5 operations with sample data.

🏗️ Architecture

┌─────────────────────────────────────────────────────┐
│  MCP Client (Claude Desktop, etc.)                  │
└───────────────────┬─────────────────────────────────┘
                    │ JSON-RPC over stdio
┌───────────────────▼─────────────────────────────────┐
│  FastMCP Server (server.py)                         │
│  ├─ memory_read                                     │
│  ├─ memory_write                                    │
│  ├─ memory_consolidate                              │
│  ├─ memory_forget                                   │
│  └─ memory_stats                                    │
└───────────────────┬─────────────────────────────────┘
                    │
┌───────────────────▼─────────────────────────────────┐
│  Memory Tools (tools.py)                            │
│  ├─ Input validation & sanitization                │
│  └─ Rate limiting (100 req/min)                    │
└───────────────────┬─────────────────────────────────┘
                    │
┌───────────────────▼─────────────────────────────────┐
│  Storage Layer (storage.py)                         │
│  ├─ Sentence Transformers (all-MiniLM-L6-v2)       │
│  ├─ FAISS Vector Index (cosine similarity)         │
│  └─ JSON persistence (memories.json)               │
└─────────────────────────────────────────────────────┘

🔄 Memory Lifecycle

Step Process Technology
📝 Write Text → 384-dim vector embedding Sentence Transformers (CPU)
💾 Store Normalized vector → FAISS index FAISS IndexFlatIP
🔍 Search Query → embedding → top-k similar Cosine similarity
🔄 Consolidate Group similar (>0.85) → merge Vector clustering
🧹 Forget Filter by age/importance/tags → delete Metadata filtering

🔒 Security

Protection Implementation
🛡️ Injection Prevention Regex filtering of script tags, eval(), path traversal
⏱️ Rate Limiting 100 requests per 60-second window per client
📏 Size Limits 50KB text, 5KB metadata, 20 tags per memory
✅ Input Validation Pydantic models + custom sanitization
🔐 Safe Logging stderr only (prevents JSON-RPC corruption)

⚙️ Configuration

Environment Variables

MEMORY_STORAGE_PATH="memory_data"           # Storage directory
EMBEDDING_MODEL="all-MiniLM-L6-v2"          # Model name
RATE_LIMIT_REQUESTS=100                     # Max requests
RATE_LIMIT_WINDOW=60                        # Time window (seconds)

Storage Limits

  • ✅ Unlimited total memories (no count limit)
  • ⚠️ Per-memory limits: 50KB text, 5KB metadata, 20 tags

🐛 Troubleshooting

Model won't download

First run downloads all-MiniLM-L6-v2 (~90MB). Ensure internet connection and ~/.cache/ write permissions.

PyTorch compatibility errors
pip uninstall torch transformers sentence-transformers -y
pip install torch==2.1.0 transformers==4.35.2 sentence-transformers==2.2.2
Memory errors on large operations

The model runs on CPU. Ensure 2GB+ free RAM. Reduce top_k in read operations if needed.

📝 License

MIT License - feel free to use in your projects!

🤝 Contributing

PRs welcome! Please:

  • Follow MCP security guidelines
  • Add tests for new features
  • Update documentation

🔗 Resources


Built with 🧠 for persistent LLM memory

Report Bug · Request Feature

Metadata

Release files for hippocampus-memory-mcp 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hippocampus-memory-mcp 1.0.0
File Size Uploaded
hippocampus_memory_mcp-1.0.0.tar.gz 20.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hippocampus-memory-mcp 1.0.0
File Interpreter ABI Platform
hippocampus_memory_mcp-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 41.8 kB

Release files / hippocampus_memory_mcp-1.0.0.tar.gz

Download URL hippocampus_memory_mcp-1.0.0.tar.gz
Size 20.0 kB
Tags Source
SHA-256 checksum
How to use checksums
f493de106f374274d512bda066046b85a4b8a5b27a75e43e17c71b85e6e2345e
BLAKE2b-256 checksum
How to use checksums
ee16f9a9d14c9a65f5b5213bed9c227793b278e84e954405af45c264a35a9c0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / hippocampus_memory_mcp-1.0.0-py3-none-any.whl

Download URL hippocampus_memory_mcp-1.0.0-py3-none-any.whl
Size 21.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9c620bc94a5a6c039953380b92ffbc5a96258d2b65fc9e2e48bf0f4a88667a85
BLAKE2b-256 checksum
How to use checksums
eb2e0695f603effa3ba81963919700be7eb1d1b8afc1c131b7fce852021972f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page