Lumena MCP Server
¿Qué es Lumena?
Lumena es un almacén de memoria local-first para agentes LLM — organiza las memorias de los agentes en un palacio de memoria estructurado (habitaciones, loci, fragmentos) con recuperación híbrida, decaimiento gestionado e integraciones nativas. Se ejecuta íntegramente en tu hardware sin dependencias en la nube.
Sin nube. Los embeddings se ejecutan localmente mediante ONNX Runtime. El almacenamiento es un único archivo SQLite.
Daemon opcional. El programador en segundo plano se inicia automáticamente con
lumena serve; también puede ejecutarse de forma independiente conlumena daemon start.Recuperación híbrida. BM25 (SQLite FTS5), búsqueda vectorial por similitud coseno y recorrido de grafos opcional con fusión de rango recíproco.
Ciclo de vida de memoria gestionado. Olvido en tres capas: decaimiento basado en el tiempo, interferencia por similitud y expulsión por presupuesto.
Integraciones. Guardador de puntos de control de LangGraph, adaptador de memoria de LangChain, servidor MCP, API REST FastAPI.
Related MCP server: engram
Inicio rápido
# Clone and install (lean runtime — no torch/CUDA)
git clone https://github.com/QuantumindSSI/lumena.git
cd lumena
pip install -e . # runtime: sqlite-vec, onnxruntime, transformers tokenizer…
# Initialize
lumena init --device generic
# Start the server
lumena serve
# Dashboard at http://localhost:8848/dashboard
# API docs at http://localhost:8848/docsLa primera ejecución necesita un modelo de embeddings. Por defecto,
lumenaintentará exportar uno, lo que requiere el pesado conjunto de herramientas[export]. La vía recomendada y ligera es un paquete de modelo precompilado (sin conjunto de herramientas): estableceLUMENA_PREBUILT_MODEL_URLo usa el instalador de un solo comando.
Opciones de instalación (extras)
La instalación base es deliberadamente ligera (sin torch/CUDA). Añade extras solo cuando los necesites:
Instalación | Añade | Cuándo |
| Núcleo en tiempo de ejecución + inferencia | Siempre |
| Servidor MCP para agentes de codificación | Al usar OpenCode/Copilot/Claude/etc. |
| Conjunto de herramientas de exportación ONNX (optimum → torch, ~2GB) | Solo para construir un modelo tú mismo |
| Asistente de incorporación spaCy |
|
| LLM en el dispositivo (llama-cpp) | Consolidación narrativa |
| Adaptadores de frameworks | Esos frameworks |
| Todo lo anterior | Desarrollo local integral |
Almacenar y recuperar
from lumena.config import LumenaConfig
from lumena.data.schema import get_connection
from lumena.force.mnemonic.store import store_memory
config = LumenaConfig()
conn = get_connection(config)
chunk_id = store_memory(
conn,
content="User prefers dark mode and large fonts",
room_name="preferences",
config=config,
)
conn.close()from lumena.config import LumenaConfig
from lumena.data.schema import get_connection
from lumena.conversation import ConversationMemory
config = LumenaConfig()
conn = get_connection(config)
memory = ConversationMemory(config=config, conn=conn)
turn = memory.retrieve_and_assemble("What UI settings does the user like?")
print(turn.assembled_context)$ lumena status
Lumena Status
Device: generic
Rooms: 5
Active chunks: 58
Context budget: 2048 tokens
TFC → e=0.50 a=0.50 tau=7.0 r=3Puntos finales de la API
GET /health Liveness probe (unversioned)
GET /dashboard Effectiveness dashboard (HTML)
GET /metrics Machine-readable metrics
GET /v1/status Palace overview
POST /v1/search Semantic + lexical hybrid search
POST /v1/store Store a memory chunk
POST /v1/feedback Log explicit or implicit feedback
POST /v1/assemble Retrieve + assemble context in one call
POST /v1/turn Store full conversation turn
GET /v1/dashboard-data Dashboard data as JSONArquitectura
User Input → Intent Router → Parallel Retrieval (BM25 + Dense + Graph)
│
▼
RRF Fusion × V(m) × Recency
│
▼
Context Assembly (Jinja2)
│
▼
Consolidation → Decay / Interference / EvictionEstado del proyecto
Lumena es software listo para producción. Funciona de extremo a extremo con versionado de API, pruebas exhaustivas y limitaciones de seguridad documentadas. Es adecuado para producción, evaluación, desarrollo y despliegues en LAN de confianza.
Dimensión | Estado | Detalle |
Pruebas | 320 aprobadas, 7 omitidas | 75% de cobertura. 43 archivos de prueba. |
Almacenamiento | Funcionando | SQLite con WAL, FTS5, seguimiento bi-temporal, cadenas de procedencia. |
Recuperación | Funcionando | BM25 + densa + grafo con fusión RRF. |
Olvido | Funcionando | Decaimiento L1 (Ebbinghaus), interferencia L2, expulsión por presupuesto L3. |
Detección de PII | Funcionando | Escaneo basado en expresiones regulares en el momento del almacenamiento. Bloqueo/redacción/hash configurables. |
Registro de auditoría | Funcionando | Tabla SQLite audit_log con trazabilidad de solicitudes. |
Servidor de API | Funcionando | FastAPI con versionado |
Servidor MCP | Funcionando | 7 herramientas (search, store, assemble, turn, feedback, status, dashboard). |
LangChain | Funcionando | Adaptador LumenaChatMemory (requiere el paquete |
LangGraph | Funcionando | LumenaCheckpointSaver (requiere el paquete |
Cifrado en reposo | Implementado, opcional | SQLCipher (BD completa) o Fernet (a nivel de campo) mediante |
Puntos de referencia BEIR | Evaluado parcialmente | Resultados del subconjunto de 500 documentos/20 consultas disponibles. Evaluación del corpus completo diferida a HPC. |
Intercambio P2P | Funcionando | Protocolo Beam con cifrado AES-256-GCM, firma HMAC-SHA256, protección contra reproducción. Requiere clave p2p. |
Suites de puntos de referencia
Todas se ejecutan con un solo comando desde la raíz del repositorio:
Suite | Comando | Estado |
Recuperación (R@k, nDCG, MRR) |
| Ejecutar (corpus sintético) |
Calidad de memoria E2E |
| Ejecutar (28 consultas) |
Eficiencia de navegación |
| Ejecutar |
Ablación (aislamiento de componentes) |
| Ejecutar |
Olvido (supervivencia a 90 días) |
| Ejecutar (resultados disponibles) |
Rendimiento (latencia/huella) |
| Ejecutar (resultados disponibles; x86_64) |
Evaluación del subconjunto BEIR |
| Ejecutar (resultados del subconjunto de 500 documentos/20 consultas disponibles) |
Degradación óptica |
| Ejecutar (resultados disponibles) |
Sensibilidad TFC |
| Ejecutar (resultados disponibles) |
Estrés (ingesta masiva) |
| Ejecutar (resultados de 20k fragmentos disponibles; x86_64) |
Multi-sistema (vs Chroma/FAISS) |
| Marco listo; sin resultados aún |
Todas las suites |
| Incluye las 11 suites |
Nota sobre los resultados: Los puntos de referencia de recuperación usan un corpus sintético de solapamiento de palabras clave (1.000 pasajes, 50 consultas) además de la evaluación del subconjunto BEIR (subconjuntos de 500 pasajes y 20 consultas en 5 conjuntos de datos estándar). El corpus sintético es deliberadamente fácil (BM25 casi satura nDCG), así que trata esos números como comprobaciones de validez del marco, no como afirmaciones de calidad de recuperación — los subconjuntos BEIR son la señal significativa. El artefacto de recuperación incluido se regeneró con embedders reales (all-MiniLM-L6-v2 y BAAI/bge-small-en-v1.5); los puntos de referencia se niegan a ejecutarse con embeddings simulados.
Integraciones
Integración | Qué hace | Cómo usarla |
Servidor MCP | Expone las herramientas de Lumena a OpenCode, Claude Desktop |
|
LangChain | Adaptador |
|
LangGraph |
|
|
FastAPI | API REST con autenticación/limitación de velocidad |
|
OpenCode | Habilidad nativa para flujos de trabajo de memoria | Consulta |
Estructura del proyecto
lumena/
├── config.py Configuration (pydantic-settings)
├── search.py Search pipeline orchestration
├── fusion.py RRF fusion + reranking
├── controller.py Twin-Force state controller
├── conversation.py Context assembly + turn tracking
├── repair.py Self-healing retrieval
├── intent.py Intent router (keyword + optional LR)
├── api/ FastAPI server + dashboard
├── cli/ Typer CLI
├── data/ Schema, migrations, backup
├── force/
│ ├── mnemonic/ Store, retrieval, decay, interference, eviction, provenance
│ └── contextual/ Embedding, token budget, assembly
├── integrations/ LangChain, LangGraph, MCP server
├── p2p/ Beam P2P sharing protocol
├── sovereign/ FRQAD, optical quantization, local LLM
├── brand/ Error hierarchy
└── compliance/ Safety forgetting, PII audit
tests/ 43 test files, 327 tests
benchmarks/ 11 benchmark suitesContribuciones
Agradecemos las contribuciones. La mejor forma de empezar:
Lee
CONTRIBUTING.md— configuración, convenciones de nombres de ramas, estándares de código.Elige un
good first issuedel rastreador de incidencias.Ejecuta las pruebas:
pytest tests/(deben pasar con ≥50% de cobertura).Envía un PR contra
main.
Áreas de alto impacto para contribuir
Ejecuta el marco BEIR completo — genera resultados de puntos de referencia de recuperación a escala de clasificación.
Ejecuta la suite de rendimiento en hardware real — las afirmaciones sobre huella de RAM/latencia necesitan artefactos medidos (RPi5, Jetson, x86_64).
Escribe pruebas — varios módulos carecen de archivos de prueba dedicados. Elige uno y añade cobertura.
Configuración de desarrollo
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest tests/ # Run full suite
pytest tests/ --cov=lumena # With coverage
ruff check lumena/ tests/ # LintDocumentación
Documento | Propósito |
Guía de despliegue en producción | |
Cómo contribuir | |
Política de seguridad y limitaciones conocidas | |
Guías de integración para cada plataforma | |
Hitos de desarrollo y trabajo pendiente | |
Documento técnico introductorio |
Comunidad
Matrix:
#lumena:matrix.org
Licencia
Lumena tiene doble licencia:
Community Edition — AGPL-3.0-o-posterior. Libre y de código abierto. Si ejecutas una versión modificada de Lumena como servicio de red, AGPL te exige que pongas tu código fuente a disposición de sus usuarios.
Pro / Commercial Edition — una licencia comercial de QuantumindSSI que elimina las obligaciones de AGPL y desbloquea las funciones Pro. Consulta
COMMERCIAL-LICENSE.md.
Las versiones hasta la v1.0.0 inclusive se publicaron bajo Apache 2.0
(LICENSES/Apache-2.0.txt); esa concesión en esas
versiones es irrevocable. Consultas comerciales: licensing@quantumindssi.com.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceAn MCP-native, local-first memory server that gives AI agents persistent, structured memory across sessions and tools, enabling them to maintain identity and context without reconfiguration.3MIT
- AlicenseNot gradedqualityCmaintenanceProvides persistent, local-first AI memory across sessions via MCP tools for storing, searching, and retrieving context from past interactions.1MIT
- AlicenseNot gradedqualityAmaintenanceProvides persistent memory for AI coding agents via MCP, enabling agents to store and semantically recall facts, events, and lessons across sessions, all running locally without cloud dependencies.Apache 2.0
- AlicenseNot gradedqualityDmaintenanceLocal-first AI memory layer with hybrid retrieval and brain-inspired namespaces. Enables agents to save, search, and manage memories directly via MCP tools.5MIT
Related MCP Connectors
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
Private-by-default, local-first memory/context/task orchestrator for MCP apps and agents.
Shared long-term memory vault for AI agents with 20 MCP tools.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/QuantmindSSI/lummenna'
If you have feedback or need assistance with the MCP directory API, please join our Discord server