Skip to main content
Glama
QuantmindSSI

Lumena MCP Server

by QuantmindSSI

¿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 con lumena 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/docs

La primera ejecución necesita un modelo de embeddings. Por defecto, lumena intentará 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): establece LUMENA_PREBUILT_MODEL_URL o 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

pip install lumena

Núcleo en tiempo de ejecución + inferencia

Siempre

pip install 'lumena[mcp]'

Servidor MCP para agentes de codificación

Al usar OpenCode/Copilot/Claude/etc.

pip install 'lumena[export]'

Conjunto de herramientas de exportación ONNX (optimum → torch, ~2GB)

Solo para construir un modelo tú mismo

pip install 'lumena[wizard]'

Asistente de incorporación spaCy

lumena illuminate

pip install 'lumena[localllm]'

LLM en el dispositivo (llama-cpp)

Consolidación narrativa

pip install 'lumena[langchain]' / [langgraph]

Adaptadores de frameworks

Esos frameworks

pip install 'lumena[full]'

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=3

Puntos 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 JSON

Arquitectura

User Input → Intent Router → Parallel Retrieval (BM25 + Dense + Graph)
                                  │
                                  ▼
                          RRF Fusion × V(m) × Recency
                                  │
                                  ▼
                          Context Assembly (Jinja2)
                                  │
                                  ▼
                    Consolidation → Decay / Interference / Eviction

Estado 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 /v1/, autenticación por clave API opcional (desactivada hasta que se establezca LUMENA_API_KEY), limitación de velocidad en puntos finales POST, CORS, cabeceras de seguridad.

Servidor MCP

Funcionando

7 herramientas (search, store, assemble, turn, feedback, status, dashboard).

LangChain

Funcionando

Adaptador LumenaChatMemory (requiere el paquete langchain).

LangGraph

Funcionando

LumenaCheckpointSaver (requiere el paquete langgraph).

Cifrado en reposo

Implementado, opcional

SQLCipher (BD completa) o Fernet (a nivel de campo) mediante LUMENA_DATABASE_ENCRYPTION_MODE. El valor predeterminado es none — actívalo o usa cifrado de disco a nivel de sistema operativo.

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)

python -m benchmarks.retrieval.run

Ejecutar (corpus sintético)

Calidad de memoria E2E

python -m benchmarks.e2e.run

Ejecutar (28 consultas)

Eficiencia de navegación

python -m benchmarks.navigation.run

Ejecutar

Ablación (aislamiento de componentes)

python -m benchmarks.ablation.run

Ejecutar

Olvido (supervivencia a 90 días)

python -m benchmarks.forgetting.run

Ejecutar (resultados disponibles)

Rendimiento (latencia/huella)

python -m benchmarks.perf.run

Ejecutar (resultados disponibles; x86_64)

Evaluación del subconjunto BEIR

python -m benchmarks.beir.run

Ejecutar (resultados del subconjunto de 500 documentos/20 consultas disponibles)

Degradación óptica

python -m benchmarks.optical.run

Ejecutar (resultados disponibles)

Sensibilidad TFC

python -m benchmarks.tfc.run

Ejecutar (resultados disponibles)

Estrés (ingesta masiva)

python -m benchmarks.stress.run

Ejecutar (resultados de 20k fragmentos disponibles; x86_64)

Multi-sistema (vs Chroma/FAISS)

python -m benchmarks.cross_system.run

Marco listo; sin resultados aún

Todas las suites

python -m benchmarks.run_all

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

python -m lumena.integrations.mcp_server

LangChain

Adaptador LumenaChatMemory

pip install langchain

LangGraph

LumenaCheckpointSaver para el estado del grafo

pip install langgraph

FastAPI

API REST con autenticación/limitación de velocidad

lumena serve

OpenCode

Habilidad nativa para flujos de trabajo de memoria

Consulta INTEGRATIONS.md


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 suites

Contribuciones

Agradecemos las contribuciones. La mejor forma de empezar:

  1. Lee CONTRIBUTING.md — configuración, convenciones de nombres de ramas, estándares de código.

  2. Elige un good first issue del rastreador de incidencias.

  3. Ejecuta las pruebas: pytest tests/ (deben pasar con ≥50% de cobertura).

  4. 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/             # Lint

Documentación

Documento

Propósito

DEPLOYMENT.md

Guía de despliegue en producción

CONTRIBUTING.md

Cómo contribuir

SECURITY.md

Política de seguridad y limitaciones conocidas

INTEGRATIONS.md

Guías de integración para cada plataforma

ROADMAP.md

Hitos de desarrollo y trabajo pendiente

docs/Lumena_Whitepaper.md

Documento técnico introductorio


Comunidad


Licencia

Lumena tiene doble licencia:

  • Community EditionAGPL-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.


A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    B
    maintenance
    An 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.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides persistent, local-first AI memory across sessions via MCP tools for storing, searching, and retrieving context from past interactions.
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides 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
  • A
    license
    Not graded
    quality
    D
    maintenance
    Local-first AI memory layer with hybrid retrieval and brain-inspired namespaces. Enables agents to save, search, and manage memories directly via MCP tools.
    5
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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