Skip to main content
Glama

mnemon-mcp

CI npm version Node.js License: MIT

Memoria persistente en capas para agentes de IA. Local primero. Sin nube. Un único archivo SQLite.

Página de inicio · npm · GitHub

Tu agente de IA olvida todo después de cada sesión. Mnemon lo soluciona.

Le da a cualquier cliente compatible con MCPOpenClaw, Claude Code, Cursor, Windsurf, o el tuyo propio — una memoria a largo plazo estructurada respaldada por una única base de datos SQLite en tu máquina. Sin claves API, sin nube, sin telemetría. Solo npm install y tu agente recuerda.


¿Por qué memoria en capas?

Los almacenes planos de clave-valor tratan "lo que pasó ayer" igual que "nunca hagas commit sin pruebas". Eso está mal: diferentes tipos de conocimiento tienen diferentes vidas útiles y patrones de acceso.

Mnemon organiza los recuerdos en cuatro capas:

Capa

Qué almacena

Cómo se accede

Vida útil

Episódica

Eventos, sesiones, entradas de diario

Por fecha o período

Decae (vida media de 30 días)

Semántica

Hechos, preferencias, relaciones

Por tema o entidad

Estable

Procedimental

Reglas, flujos de trabajo, convenciones

Se carga al inicio

Rara vez cambia

Recurso

Material de referencia, notas de libros

Bajo demanda

Decae lentamente (90 días)

Una entrada de diario del martes pasado y una regla de codificación que nunca cambia viven en capas diferentes — porque así debe ser.

Related MCP server: persistent-kb-mcp

Calidad de recuperación

La recuperación se mide contra un conjunto dorado de 50 casos en un corpus bilingüe real de 797 memorias (RU/EN), a través del servidor MCP real — no una reimplementación. Números actuales (metodología e historial):

Métrica

Solo FTS

Solo vector

Híbrido (RRF)

Puntuación compuesta

88.9

89.2

91.7

Recall@5

0.907

0.898

0.919

MRR

0.817

0.832

0.878

nDCG@5

0.816

0.828

0.869

Precisión negativa

1.000

1.000

1.000

El híbrido supera ambas partes individualmente, que es todo el argumento para fusionarlas: la búsqueda léxica tiene mejor recall bruto, la búsqueda vectorial mejor ranking, y RRF conserva ambas en lugar de promediarlas.

El documento de evaluación también rastrea los fallos: deriva de puntuación bajo crecimiento del corpus, el error de ponderación de campos BM25 que la evaluación detectó, los dos casos donde la fusión aún pierde frente a la búsqueda puramente léxica, y lo que el conjunto dorado no cubre. Los números que no se pueden auditar son marketing; lee cómo se producen.

Arquitectura

flowchart LR
    C["MCP client<br/>Claude Code · Cursor · …"] -- "stdio / HTTP" --> T["10 tools · 4 resources · 3 prompts"]
    T --> R["retrieval pipeline<br/>FTS5 · vector · RRF fusion"]
    T --> M["memories + supersede chains"]
    I["KB import pipeline<br/>markdown → memories"] --> M
    M -- triggers --> F["FTS5 index (stemmed EN+RU)"]
    R --> F
    R --> V["sqlite-vec (optional, BYOK)"]

Un archivo SQLite contiene las memorias, el índice FTS5 y el índice vectorial opcional. Las escrituras pasan por transacciones que mantienen la invariante de la cadena de superación; las lecturas ejecutan el pipeline de recuperación por etapas descrito en Búsqueda.

La imagen completa — límites de módulos, rutas de escritura/lectura, invariantes y limitaciones conocidas — está en docs/ARCHITECTURE.md. Las decisiones de diseño se registran como ADR: núcleo SQLite+FTS5, recuperación híbrida RRF, controlador síncrono, modelo de memoria en capas.

Inicio rápido

Instalación

npm install -g mnemon-mcp

O desde el código fuente:

git clone https://github.com/nikitacometa/mnemon-memory-mcp.git
cd mnemon-memory-mcp && npm install && npm run build

Configura tu cliente MCP

openclaw mcp register mnemon-mcp --command="mnemon-mcp"

O añade a ~/.openclaw/mcp_config.json:

{
  "mnemon-mcp": {
    "command": "mnemon-mcp"
  }
}

Añade a ~/.claude/mcp.json:

{
  "mcpServers": {
    "mnemon-mcp": {
      "command": "mnemon-mcp"
    }
  }
}

Añade a la configuración MCP de tu cliente:

{
  "mcpServers": {
    "mnemon-mcp": {
      "command": "mnemon-mcp"
    }
  }
}

Usa la ruta completa al punto de entrada compilado:

{
  "mnemon-mcp": {
    "command": "node",
    "args": ["/absolute/path/to/mnemon-mcp/dist/index.js"]
  }
}

Verificación

echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | mnemon-mcp

Deberías ver 10 herramientas en la respuesta. La base de datos (~/.mnemon-mcp/memory.db) se crea automáticamente en la primera ejecución.

Eso es todo. Tu agente ahora tiene memoria persistente.

Qué puede hacer

10 herramientas MCP

Herramienta

Qué hace

memory_add

Almacena una memoria con capa, entidad, confianza, importancia y TTL opcional

memory_search

Búsqueda de texto completo o exacta con filtros por capa, entidad, fecha, alcance, confianza

memory_update

Actualiza en el lugar o crea un reemplazo versionado (cadena de superación)

memory_delete

Elimina una memoria; reactiva su predecesora si existe

memory_inspect

Obtiene estadísticas de capa o rastrea el historial de versiones de una memoria

memory_export

Exporta a JSON, Markdown o formato Claude-md con filtros

memory_health

Ejecuta diagnósticos: entradas caducadas, cadenas huérfanas, memorias obsoletas; opcionalmente GC

memory_session_start

Inicia una sesión de agente — devuelve ID de sesión para agrupar memorias

memory_session_end

Finaliza una sesión con resumen opcional; devuelve duración y número de memorias

memory_session_list

Lista sesiones con filtros por cliente, proyecto o estado activo

Recursos y prompts MCP

Recursos — datos en vivo que tu agente puede leer:

URI

Devuelve

memory://stats

Estadísticas agregadas por capa

memory://recent

Memorias creadas/actualizadas en las últimas 24h

memory://layer/{layer}

Todas las memorias activas en una capa

memory://entity/{name}

Todas las memorias activas sobre una entidad

Prompts — flujos de trabajo predefinidos:

Prompt

Propósito

recall

"Cuéntame todo lo que sabes sobre X"

context-load

Cargar contexto relevante antes de comenzar una tarea

journal

Crear una entrada de diario estructurada

Búsqueda

Cuatro modos, todos con filtros de capa / entidad / alcance / fecha / confianza:

Modo FTS (predeterminado sin embeddings) — búsqueda de texto completo tokenizada con ranking BM25. Las consultas de varias palabras usan AND; si hay muy pocos resultados, OR complementa con una penalización de puntuación. La relajación progresiva de AND prueba los 3 términos más específicos antes de recurrir a OR completo.

Modo híbrido (predeterminado cuando hay embeddings configurados) — combina FTS5 + búsqueda vectorial mediante Reciprocal Rank Fusion. Detecta entidades entre comillas en las consultas (p. ej., 'Essentialism') y ejecuta subconsultas ponderadas para recuperación de referencias cruzadas.

Modo vectorial — búsqueda pura de similitud coseno sobre embeddings.

Modo exacto — coincidencia de subcadena LIKE para búsquedas precisas de frases.

Puntuaciones: bm25 × (0.3 + 0.7 × importancia) × decaimiento(capa) × actualidad

Impulso de actualidad: 1 / (1 + díasDesde / 365) — recompensa suavemente las memorias recientes sin penalizar las antiguas.

Derivación (stemming)

Se aplica el derivador Snowball tanto en tiempo de indexación como en tiempo de consulta para inglés y ruso. Esto significa que "running" coincide con "runs", y "книги" coincide con "книга". Las palabras vacías se filtran de las consultas para mejorar la precisión.

Versionado de hechos

El conocimiento evoluciona. Mnemon no elimina hechos antiguos — los encadena:

v1: "Team uses React 17"  →  superseded_by: v2
v2: "Team uses React 19"  →  supersedes: v1 (active)

La búsqueda devuelve solo la versión más reciente. memory_inspect con include_history: true revela la cadena completa. memory_delete reactiva la predecesora — nada se pierde.

Búsqueda vectorial (Opcional, BYOK)

Habilita la búsqueda de similitud semántica proporcionando tu propia API de embeddings:

# OpenAI
MNEMON_EMBEDDING_PROVIDER=openai MNEMON_EMBEDDING_API_KEY=sk-... mnemon-mcp

# Ollama (local, free)
MNEMON_EMBEDDING_PROVIDER=ollama mnemon-mcp

Esto desbloquea dos modos de búsqueda adicionales:

  • mode: "vector" — búsqueda pura de similitud coseno

  • mode: "hybrid" — FTS5 + vector combinados mediante Reciprocal Rank Fusion

Requiere sqlite-vec (instalado como dependencia opcional). Las nuevas memorias se incrustan al añadirse; las existentes pueden rellenarse retroactivamente.

Variable

Valor predeterminado

Descripción

MNEMON_EMBEDDING_PROVIDER

openai o ollama (sin definir = deshabilitado)

MNEMON_EMBEDDING_API_KEY

Clave API (requerida para OpenAI)

MNEMON_EMBEDDING_MODEL

text-embedding-3-small / nomic-embed-text

Nombre del modelo

MNEMON_EMBEDDING_DIMENSIONS

1024 / 768

Dimensiones del vector

MNEMON_OLLAMA_URL

http://localhost:11434

Endpoint de Ollama

Importar una base de conocimiento

¿Tienes una carpeta de archivos Markdown? Impórtalos en lote:

cp config.example.json ~/.mnemon-mcp/config.json   # edit this first
npm run import:kb -- --kb-path /path/to/your/kb     # incremental (skips unchanged files)

La configuración mapea patrones glob a capas de memoria:

{
  "owner_name": "your-name",
  "extra_stop_words": [],
  "mappings": [
    {
      "glob": "journal/*.md",
      "layer": "episodic",
      "entity_type": "user",
      "entity_name": "$owner",
      "importance": 0.6,
      "split": "h2"
    },
    {
      "glob": "people/*.md",
      "layer": "semantic",
      "entity_type": "person",
      "entity_name": "from-heading",
      "importance": 0.8,
      "split": "h3"
    }
  ]
}

Campos de configuración

Campo

Tipo

Descripción

owner_name

string

Tu nombre — se usa para la sustitución $owner en entity_name

extra_stop_words

string[]

Palabras a filtrar de las consultas FTS (p. ej., formas de tu nombre)

glob

string

Patrón de archivo a coincidir

layer

string

Capa de memoria de destino

entity_type

string

user / person / project / concept / file / rule / tool

entity_name

string

Nombre literal, "$owner" o "from-heading" (extraer de H2/H3)

split

string

"whole" (una memoria por archivo), "h2" o "h3" (dividir por encabezados)

importance

number

0.0–1.0, afecta el ranking de búsqueda

confidence

number

0.0–1.0, filtrable en la búsqueda

scope

string

Espacio de nombres opcional

Transporte HTTP

Para configuraciones remotas o de múltiples clientes:

MNEMON_AUTH_TOKEN=your-secret MNEMON_HOST=0.0.0.0 MNEMON_PORT=3000 npm run start:http

Endpoint

Descripción

POST /mcp

MCP JSON-RPC (autenticación Bearer si hay token)

GET /health

{"status":"ok","version":"..."}

Se vincula a 127.0.0.1 por defecto. Vincularse a cualquier otro host requiere MNEMON_AUTH_TOKEN: el servidor se niega a exponer el almacén de memoria a la red sin autenticación (se puede anular con MNEMON_ALLOW_INSECURE_HTTP=1 en una red de confianza). Límite de peticiones (100 req/min/IP por defecto), CORS opcional, límite de cuerpo de 1MB, autenticación a prueba de temporización, apagado ordenado en SIGTERM.

Referencia de configuración

Variable

Por defecto

Descripción

MNEMON_DB_PATH

~/.mnemon-mcp/memory.db

Ruta de la base de datos

MNEMON_KB_PATH

.

Raíz de la base de conocimiento para importación

MNEMON_CONFIG_PATH

~/.mnemon-mcp/config.json

Ruta de configuración de importación

MNEMON_AUTH_TOKEN

Token Bearer para el transporte HTTP

MNEMON_HOST

127.0.0.1

Dirección de enlace del transporte HTTP

MNEMON_PORT

3000

Puerto del transporte HTTP

MNEMON_CORS_ORIGIN

CORS Access-Control-Allow-Origin (sin cabeceras CORS salvo que se configure)

MNEMON_RATE_LIMIT

100

Máximo de peticiones por minuto por IP (0 = desactivado)

Referencia de herramientas

Parámetro

Tipo

Obligatorio

Descripción

content

string

Texto de memoria (máx. 100K caracteres)

layer

string

episodic / semantic / procedural / resource

title

string

No

Título corto (máx. 500 caracteres)

entity_type

string

No

user / project / person / concept / file / rule / tool

entity_name

string

No

Nombre de la entidad para filtrar

confidence

number

No

0.0–1.0 (por defecto 0.8)

importance

number

No

0.0–1.0 (por defecto 0.5)

scope

string

No

Espacio de nombres (por defecto global)

source_file

string

No

Ruta del archivo de origen: activa la sustitución automática de entradas coincidentes

ttl_days

number

No

Caducidad automática tras N días

valid_from / valid_until

string

No

Ventana temporal de hechos (ISO 8601)

Parámetro

Tipo

Obligatorio

Descripción

query

string

Texto de búsqueda

mode

string

No

fts (por defecto), exact, vector, hybrid

layers

string[]

No

Filtrar por capas

entity_name

string

No

Filtrar por entidad (admite alias)

scope

string

No

Filtrar por ámbito

date_from / date_to

string

No

Rango de fechas (ISO 8601)

as_of

string

No

Filtro temporal de hechos: hechos válidos en esta fecha

min_confidence

number

No

Confianza mínima

min_importance

number

No

Importancia mínima

limit

number

No

Máximo de resultados (por defecto 10, máx. 100)

offset

number

No

Desplazamiento de paginación

Parámetro

Tipo

Obligatorio

Descripción

id

string

ID de memoria

content

string

No

Nuevo contenido

title

string

No

Nuevo título

confidence

number

No

Nueva confianza

importance

number

No

Nueva importancia

supersede

boolean

No

true = reemplazo versionado; false (por defecto) = en el sitio

new_content

string

No

Contenido para la entrada de sustitución

Parámetro

Tipo

Obligatorio

Descripción

id

string

ID de memoria. Re-activa el predecesor si forma parte de una cadena de sustitución

Parámetro

Tipo

Obligatorio

Descripción

id

string

No

ID de memoria (omitir para estadísticas agregadas)

layer

string

No

Filtrar estadísticas por capa

entity_name

string

No

Filtrar estadísticas por entidad

include_history

boolean

No

Mostrar cadena de sustitución

Parámetro

Tipo

Obligatorio

Descripción

format

string

json / markdown / claude-md

layers

string[]

No

Filtrar por capas

scope

string

No

Filtrar por ámbito

date_from / date_to

string

No

Rango de fechas

limit

number

No

Máximo de entradas (por defecto todas, máx. 10K)

Parámetro

Tipo

Obligatorio

Descripción

cleanup

boolean

No

true = recolectar basura de entradas caducadas (por defecto: solo informe)

Devuelve: estado (healthy / warning / degraded), estadísticas por capa, entradas caducadas, cadenas huérfanas, recuentos obsoletos/de baja confianza, recuento de limpieza cuando cleanup=true.

Parámetro

Tipo

Obligatorio

Descripción

client

string

Identificador de cliente (p. ej. claude-code, cursor, api)

project

string

No

Ámbito de proyecto para esta sesión

meta

object

No

Metadatos adicionales de la sesión

Devuelve: id (UUID de sesión), started_at (ISO 8601).

Parámetro

Tipo

Obligatorio

Descripción

id

string

ID de sesión a finalizar

summary

string

No

Resumen de lo logrado (máx. 10K caracteres)

Devuelve: id, ended_at, duration_minutes, memories_count.

Parámetro

Tipo

Obligatorio

Descripción

limit

number

No

Máximo de sesiones (por defecto 20, máx. 100)

client

string

No

Filtrar por cliente

project

string

No

Filtrar por proyecto

active_only

boolean

No

Devolver solo sesiones no finalizadas (por defecto false)

Devuelve: array de sesiones con id, client, project, started_at, ended_at, summary, memories_count.

Comparativa

mnemon-mcp

mem0

basic-memory

Engram

Anthropic KG

Arquitectura

SQLite FTS5 + vector

Cloud API + Qdrant

Markdown + vector

SQLite FTS5

Archivo JSON

Estructura de memoria

4 capas tipadas

Plano

Plano

Plano + sesiones

Grafo

Búsqueda

FTS5 + RRF híbrido

Semántica

Híbrida

FTS5

Exacta

Versionado de hechos

Cadenas de sustitución

Parcial

No

No

No

Stemming

EN + RU (Snowball)

Solo EN

Solo EN

Ninguno

Ninguno

Embeddings

BYOK (OpenAI / Ollama)

Integrado

FastEmbed

Ninguno

Ninguno

Dependencias

0 requeridas

Qdrant, Neo4j

Python 3.12

Binario Go

Ninguna

Requiere nube

No

No

No

No

Coste

Gratuito

$19–249/mes

Gratis

Gratis

Gratis

Instalación

npm install -g

Docker + claves API

pip + dependencias

Instalación de Go

Integrado

Licencia

MIT

Apache 2.0

AGPL

MIT

MIT

Análisis competitivo ampliado con fuentes: docs/COMPETITORS.md.

Desarrollo

npm run dev        # run via tsx (no build step)
npm run build      # TypeScript → dist/
npm run lint       # eslint (flat config)
npm test           # vitest — unit + integration + MCP dispatch + HTTP transport + hybrid RRF
npm run bench      # performance benchmarks
npm run db:backup  # backup database

El CI ejecuta compilación + lint + pruebas en Node 20 y 22, y luego realiza pruebas de humo del servidor compilado mediante JSON-RPC real (tools/list debe coincidir con el conjunto exacto de herramientas).

Stack: TypeScript 5.9 (modo estricto), better-sqlite3, @modelcontextprotocol/sdk, Snowball stemmer, Zod, vitest.

Consulta CONTRIBUTING.md para las directrices de código.

Principios de diseño

  • Aislado de la red por defecto — cero telemetría, jamás. De serie, nada sale de la máquina; el único componente que se comunica con la red es el embedder opcional, y solo con el proveedor que configures (incluido un Ollama local).

  • Un solo archivo — una base de datos SQLite, cero operaciones, copia de seguridad instantánea mediante copia de archivo.

  • Búsqueda determinista — FTS5, no embeddings, es el valor predeterminado. Interpretable, reproducible, sin necesidad de GPU.

  • Estructurado frente a plano — las capas codifican patrones de acceso; las cadenas de sustitución codifican el tiempo.

  • Mínimo — 4 dependencias de producción. Funciona en cualquier lugar donde se ejecute Node.

  • Medido, no afirmado — los cambios de recuperación se evalúan contra un conjunto de referencia, regresiones incluidas.

Licencia

MIT

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

View all related MCP servers

Related MCP Connectors

  • Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.

  • Cloud-hosted MCP server for durable AI memory

  • Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.

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/nikitacometa/mnemon-memory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server