mcasdfgf/mcp-roo-memory
π π π πͺ π§ - Persistent fractal graph memory for AI coding agents via MCP. Semantic vector search, hot/cold/archive context tiers, decision tracking, and Docker-based deployment with Qdrant.
Quick Install
{
"mcpServers": {
"mcasdfgf-mcp-roo-memory": {
"command": "npx",
"args": [
"-y",
"mcasdfgf-mcp-roo-memory"
]
}
}
}Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.
Documentation Overview
MCP Roo Memory
Persistent, graph-based memory for Roo Code via the Model Context Protocol (MCP).
LLMs have a short memory. Every new conversation starts from scratch β context windows overflow, past decisions fade, and reasoning chains disappear.
MCP Roo Memory gives your AI agent a structured, persistent brain:
- Graph memory β knowledge is not a flat dump, but a fractal graph of tasks, entities, facts, and decisions
- Semantic search β find what matters by meaning, not keywords (50+ languages)
- Context window control β hot/cold/archive tiers so you don't drown in tokens
- Knowledge evolution β decisions can be superseded, facts can be updated, stale data gets archived
- Temporal awareness β time as first-class citizen: chronological walks, session timelines, temporal vector filters
β οΈ Disclaimer
This is an experimental project β a search for form and architecture. It works, it has tests, but treat it as a Proof of Concept (PoC). The software is provided "AS IS", without any warranty of any kind. Use it at your own risk. See
LICENSEfor details.
Quick Start
π³ Docker (recommended)
Zero system dependencies β just Docker. Everything runs in containers; no Python, no venv, no pip.
1. Start the stack
git clone https://github.com/mcasdfgf/mcp-roo-memory.git
cd mcp-roo-memory
docker compose up -d
This starts two containers:
| Container | What it does |
|---|---|
cortex-qdrant | Vector database (port 6333) |
cortex-mcp | Cortex server (idle, waits for MCP connections) |
2. Global MCP configuration
Add Cortex as a global MCP server for all your projects. The server is always running in Docker, so any project can connect.
Edit ~/.config/VSCodium/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json (or the equivalent path for VS Code):
{
"mcpServers": {
"cortex": {
"command": "docker",
"args": ["exec", "-i", "cortex-mcp", "python3", "-m", "src.cortex"]
}
}
}
VSCode users: replace
VSCodiumwithCodein the path above.
3. Project-level configuration (for workspace isolation)
If you want memory isolated per project, copy the reference .roo/ directory into your project:
cp -r ./mcp-roo-memory/.roo ./your-project/
Then edit .roo/mcp.json in your project and add --workspace your-project-name:
{
"mcpServers": {
"cortex": {
"command": "docker",
"args": [
"exec", "-i", "cortex-mcp", "python3",
"-m", "src.cortex", "--workspace", "your-project-name"
],
"alwaysAllow": ["desktop_open", "graph_add_node", "vector_search", "graph_get_node",
"graph_add_relation", "graph_search", "desktop_focus",
"desktop_history", "graph_traverse", "graph_walk",
"graph_decompose", "graph_update_node", "graph_supersede",
"graph_delete_node", "vector_store",
"temporal_walk", "session_timeline"]
}
}
}
Replace your-project-name with a unique identifier β mcp-roo-memory, researcher, ai-pulse, etc.
How isolation works:
desktop_open()andgraph_add_node()β always write to your project's workspacevector_search()withoutworkspace_idβ searches across all projects (cross-project recall)vector_search(workspace_id="project")β narrows search to one project
4. Done
Restart Roo Code. Your agent now has persistent memory β zero system pollution.
π Native pip (advanced)
If you prefer running without Docker β or you're developing Cortex itself:
# Requirements: Python 3.11+
git clone https://github.com/mcasdfgf/mcp-roo-memory.git
cd mcp-roo-memory
python -m venv .venv
source .venv/bin/activate
pip install -e .
# Qdrant is still needed:
docker run -d --name qdrant -p 6333:6333 qdrant/qdrant
MCP config:
{
"mcpServers": {
"cortex": {
"command": "python",
"args": ["-m", "src.cortex"],
"env": {
"CORTEX_DB_PATH": "/path/to/cortex.db",
"CORTEX_QDRANT_HOST": "localhost",
"CORTEX_QDRANT_PORT": "6333"
}
}
}
}
Problems This Solves
| Problem | How Cortex solves it |
|---|---|
| Flat memory β facts are stored as unrelated chunks | Fractal graph β tasks decompose into subtasks, facts connect to decisions, entities index files |
| Context window overflow β everything grows unbounded | Desktop Viewport β Hot (always loaded) / Cold (on focus) / Archive (search only) tiers |
| No navigation β can't walk a reasoning chain | Graph traversal β follow supersedes, derives_from, leads_to relations like a path |
| Stale facts linger β old decisions pollute context | Mutation strategy β Update (typo fix) / Supersede (approach changed) / Stale-cascade (rework) |
| Keyword search fails β "auth implementation" doesn't find "JWT with RS256" | Semantic vector search β multilingual embeddings (50+ languages) via Qdrant + fastembed |
| No time axis β can't answer "what happened in what order" | Temporal layer β chronological walks, session timelines, temporal vector filters |
Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββ
β MCP Client (Roo Code) β
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββ
β stdio (MCP protocol)
ββββββββββββββββββββββββΌββββββββββββββββββββββββ
β CortexServer β
β 17 tools Β· 4 resources β
ββββββββββββ¬βββββββββββ¬βββββββββββ¬ββββββββββββββ€
β Graph β Vector β Desktop β Database β
β CRUD, β Qdrant + β Hot/ β SQLite β
β traverse,β fastembedβ Cold/ β graph + β
β walk β semantic β Archive β history β
ββββββββββββ΄βββββββββββ΄βββββββββββ΄ββββββββββββββ
Three layers of intelligence:
- Graph (SQLite) β who relates to who, what decomposes into what
- Vector (Qdrant) β what does this mean, what's semantically similar
- Desktop (viewport) β what fits in the context window right now
Using as Primary Roo Memory
Make Cortex your agent's default memory system by copying the .roo/ directory into your project:
# Copy reference config from this repo
cp -r ./mcp-roo-memory/.roo ./your-project/
The .roo/ directory contains ready-to-use reference configs:
| File / Dir | Purpose |
|---|---|
custom_instructions.md | Cortex bootstrap β mandatory sequence, core principles |
mcp.json | Reference MCP server config (edit --workspace for your project) |
rules/ | Boot, save, templates, triggers β memory lifecycle |
rules-architect/ | Memory rules for Architect mode |
rules-ask/ | Memory rules for Ask mode |
rules-code/ | Memory rules for Code mode |
rules-coding-teacher/ | Memory rules for Coding Teacher mode |
rules-debug/ | Memory rules for Debug mode |
rules-documentation-writer/ | Memory rules for Documentation Writer mode |
rules-orchestrator/ | Memory rules for Orchestrator mode |
rules-project-research/ | Memory rules for Project Research mode |
For deep understanding of the memory model, see CONCEPT.md.
Tools Overview
| Tool | What it does |
|---|---|
desktop_open | Open/restore a workspace session |
desktop_focus | Bring a node into hot context |
desktop_history | Get navigation history for a workspace |
graph_add_node | Store any knowledge: entity, fact, decision, task... |
graph_get_node | Retrieve a node with its relations |
graph_add_relation | Create a relation between two nodes |
graph_traverse | Walk the graph from a starting node |
graph_walk | Walk along a reasoning chain |
graph_decompose | Break a task into structured subtasks |
graph_update_node | Update a node's data in-place |
graph_supersede | Replace outdated knowledge (keeps history) |
graph_delete_node | Delete a node and its vector |
vector_search | Find things by meaning, across 50+ languages |
vector_store | Store text with automatic vectorization |
graph_search | Hybrid: semantic + graph subgraph expansion |
temporal_walk | Chronological graph traversal (time axis) |
session_timeline | Flat timeline of all events in a session |
| That's all 17 tools | See full list in CONCEPT.md Β§8 |
Configuration
All via CORTEX_* environment variables:
| Variable | Default | Description |
|---|---|---|
CORTEX_DB_PATH | cortex.db | SQLite database path |
CORTEX_QDRANT_HOST | localhost | Qdrant host |
CORTEX_QDRANT_PORT | 6333 | Qdrant port |
CORTEX_QDRANT_TIMEOUT | 30 | Connection timeout (s) |
CORTEX_COLLECTION_NAME | cortex_memory | Qdrant collection name |
CORTEX_EMBEDDING_MODEL | sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 | Embedding model (50+ languages) |
CORTEX_ARCHIVE_DAYS_THRESHOLD | 7 | Days before auto-archive |
CORTEX_DESKTOP_HOT_LIMIT | 5 | Max hot nodes in viewport |
CORTEX_DESKTOP_HISTORY_LIMIT | 10 | Max history entries |
Project Structure
.
βββ docker-compose.yml β Two services: cortex + qdrant
βββ Dockerfile β Multi-stage, python:3.11-slim
βββ .dockerignore
βββ src/cortex/
β βββ __init__.py β Cortex factory (component assembly)
β βββ __main__.py β MCP server entry point (stdio)
β βββ config.py β Configuration (pydantic-settings)
β βββ db.py β DatabaseManager (SQLite)
β βββ desktop.py β DesktopManager (viewport + timeline)
β βββ graph.py β GraphManager (CRUD, navigation, mutation, temporal)
β βββ models.py β Pydantic models (Node, Relation, Viewport)
β βββ server.py β MCP server (17 tools, 4 resources)
β βββ vector.py β VectorManager (Qdrant, embeddings, temporal filters)
βββ tests/
Deep Dive
| Document | What you'll find |
|---|---|
CONCEPT.md | Full philosophy, data model, node taxonomy (17 types), relation taxonomy (22 types), SQL schema |
ADR-001 | Fractal memory architecture decision |
ADR-002 | SQLite + JSON for graph instead of Neo4j/Cayley |
ADR-003 | Qdrant for vectors (existing) |
ADR-004 | fastembed for embeddings (paraphrase-multilingual-MiniLM-L12-v2) |
ADR-005 | Desktop Viewport β context window strategy |
ADR-006 | Knowledge evolution: update / supersede / stale |
ADR-007 | Regression search: meaning β context β files |
ADR-008 | Temporal layer β time as first-class citizen |
CHANGELOG.md | Project release history |
CONTRIBUTING.md | Development guidelines |
Development
# Native install (inside venv)
pip install -e .
pip install pytest pytest-asyncio
# Run all tests (188+ tests)
pytest tests/ -v
# With coverage
pytest tests/ --cov=src.cortex -v
Tests cover every component: models (17), config (19), database (26), graph (19), desktop (14), vector (19), server (19), integration (3) β 136+ total.
See CONTRIBUTING.md for guidelines.
License
MIT Β© 2026