Turbo Quant Memory MCP Server
🧠 Turbo Quant Memory para Agentes de IA (v0.24.1)
Un servidor de memoria y grafo de conocimiento local, autoinstalable y trilingüe para agentes de codificación con IA. Los agentes obtienen tarjetas de resultados compactas en lugar de releer archivos completos: persistente, local y enlazado mediante grafos.
👋 ¿Qué es esta herramienta increíble? (Para humanos)
Imagina que trabajas con un asistente de codificación con IA (como Claude Code, Gemini CLI, Cursor o Codex). Cada vez que reinicias una sesión, la IA lo olvida todo. Olvida tus decisiones arquitectónicas, tus reglas de estilo personalizadas, cómo resolviste ese molesto bug de base de datos, o incluso tus preferencias de codificación. Tienes que explicarlo todo de nuevo, o alimentar a la IA con archivos enormes, lo que desperdicia tu tiempo y consume tu presupuesto de tokens (costándote dinero real).
Turbo Quant Memory resuelve esto de una vez por todas. Es un servidor Model Context Protocol (MCP) local-first que da a tus agentes de IA un cerebro persistente. Almacena:
🎯 Decisiones y lecciones: Por qué se construyeron las cosas de esta manera, para que la IA no las rompa.
💡 Patrones y trampas: Trucos reutilizables y correcciones de bugs ganadas con esfuerzo.
🕸️ Relaciones del grafo de conocimiento: Asociaciones estructuradas que enlazan notas de memoria, archivos fuente, tareas o bugs.
📦 Índice del codebase: Búsqueda de bloques Markdown compactos para que la IA entienda la estructura de tu proyecto al instante.
💰 Magia de ahorro de costes
En lugar de releer documentos fuente en cada turno, tu agente de IA usa Recuperación Compacta: cada búsqueda devuelve pequeñas tarjetas de resultados (vistas previas de ~220 caracteres) y carga el contenido completo solo mediante hydrate cuando es necesario.
Métrica | Valor | Beneficio para ti |
Ahorro de contexto | 📉 ~83,79% menos bytes | Costes de API reducidos, ventanas de contexto más largas |
Latencia de búsqueda | ⚡ ~400 ms | Suficientemente rápida como ruta de recuperación predeterminada (incluye embedding de consulta por CPU) |
Enfoque arquitectónico | 🎯 Poda dinámica | La IA ve solo lo que importa, ignorando el ruido de la sesión |
Conocimiento enlazado | 🕸️ Grafo de conocimiento | La IA entiende las relaciones entre código, tareas y decisiones |
Contexto autoenriquecido | 🔄 Relaciones en línea | Archivos, notas y tareas enlazados viajan en los resultados de |
📈 Mide su propio ahorro — compruébalo tú mismo
Turbo Quant Memory no solo afirma que ahorra tokens — cada instalación mantiene un contador acumulado que puedes consultar en cualquier momento con server_info() (campo usage_stats.headline). Los ahorros son tuyos para verificar, no una promesa nuestra.
Instantánea en vivo de una instancia real de desarrollador (v0.23.0):
Lo que hizo la memoria | Número |
🔢 Tokens de entrada ahorrados (acumulados) | ≈ 980.000 y contando |
🔁 Recuperaciones servidas | 885 búsquedas + 179 hidrataciones profundas |
📉 Ahorro medio por recuperación | ≈ 1.100 tokens |
📚 Conocimiento bajo gestión | 207 notas activas + 440 bloques de código indexados |
🛡️ Integridad | 0 registros corruptos · 0 migraciones pendientes |
Estos son números acumulados de una sola máquina, no un benchmark sintético — tu propio contador comienza en cero y crece a medida que tu agente trabaja. Ejecuta
server_info()en tu instalación para ver tu cifra real.
Related MCP server: hive-memory
🚀 ¡NO INSTALES ESTO MANUALMENTE! (Deja que la IA lo haga)
No necesitas escribir comandos en la terminal ni configurar archivos JSON. Deja que tu asistente de IA maneje la configuración.
Simplemente copia el enlace a este repositorio:
https://github.com/Lexus2016/turbo_quant_memory
Y envía este prompt exacto a tu asistente de IA (Claude Code, Gemini CLI, Codex, etc.):
"¡Oye! Por favor, instala y configura el servidor Turbo Quant Memory para mi espacio de trabajo usando este repositorio: https://github.com/Lexus2016/turbo_quant_memory. Lee el README.md, sigue las 'Instrucciones para Agentes de IA' al final del archivo para instalarlo mediante
uv tool, registra el servidor MCPtqmemory, ejecutaturbo-memory-mcp skill install, ejecuta comprobaciones de salud, indexa este proyecto y configura nuestra memoria persistente. ¡Avísame cuando estés listo!"
Tu agente de IA clonará, instalará, registrará e indexará todo automáticamente.
🛠️ Inicio rápido (si realmente quieres hacerlo tú mismo)
Si prefieres el método manual, ejecuta este flujo de 60 segundos:
Instala la herramienta CLI:
uv tool install git+https://github.com/Lexus2016/turbo_quant_memory@v0.24.1Añade el servidor MCP
tqmemorya tu cliente:# Codex codex mcp add tqmemory -- turbo-memory-mcp serve # Gemini CLI gemini mcp add tqmemory turbo-memory-mcp serve # Claude Code (Project scope) claude mcp add --scope project tqmemory -- turbo-memory-mcp serveReinicia tu cliente y deja que la magia comience.
Para integraciones personalizadas (Cursor, OpenCode, Antigravity, etc.), consulta CLIENT_INTEGRATIONS.md.
🌟 Funciones avanzadas (bajo el capó)
1. Búsqueda híbrida BM25 + vectorial (con prioridad vectorial)
Cada consulta busca en un espacio vectorial denso (significado semántico) y en un índice de texto completo BM25 (términos exactos como nombres de funciones, rutas de archivo o IDs). El carril denso lidera: cuando su mejor resultado es confiable, se devuelve directamente; de lo contrario, el carril BM25 se fusiona mediante Reciprocal Rank Fusion (RRF, k=60) como rescate con peso reducido. Esta prioridad vectorial superó de forma medible a la RRF de igual peso en corpus multilingües reales (evita que un carril de palabras clave ruidoso arrastre un resultado semántico confiable). Si un carril falla, la búsqueda degrada elegantemente a solo vectorial.
2. Relaciones del grafo de conocimiento
Puedes construir asociaciones entre notas, archivos fuente, problemas o tareas usando relaciones dirigidas. El servidor de memoria enriquece automáticamente los resultados de búsqueda e hidratación con estas relaciones, permitiendo a los agentes de IA navegar por el contexto asociado sin esfuerzo.
🔄 Ciclo de vida dinámico de relaciones (fortaleza principal):
Procedencia y marcas de tiempo: Las relaciones son dirigidas y llevan una marca de tiempo
created_at. Depreciar una nota cambia el estado de esa nota pero no se propaga a sus relaciones, por lo que un agente debe verificar el estado de un endpoint al seguir un enlace.Desacoplamiento flexible (desenlace): Cualquier relación se puede cortar fácilmente con la herramienta
unlink_entities(). Esto da a la memoria del agente una flexibilidad absoluta para adaptarse a refactorizaciones y cambios de diseño.Linting de la base de conocimiento:
lint_knowledge_base()revisa la base de conocimiento Markdown — enlaces rotos, documentos huérfanos, títulos duplicados, notas episódicas obsoletas y notas casi duplicadas. Actualmente no inspecciona las relaciones del grafo.
📊 Arquitectura de memoria visual:
graph TD
A[AI Agent / Query] -->|1. semantic_search| B[tqmemory Server]
B -->|2. Vector Index| C[Dense Vector Search]
B -->|2. Full-Text Index| D[BM25 FTS Search]
C -->|3. RRF Fusion| E[Knowledge Candidates]
D -->|3. RRF Fusion| E
E -->|4. Graph Enrichment| F[Knowledge Graph / Associations]
F -->|5. Enriched Context| A
subgraph Relation Lifecycle
G[Create Link: link_entities] -->|Knowledge Evolution| H[Deprecate Note: deprecate_note]
H -->|Diagnosis: lint_knowledge_base| I[Sever Link: unlink_entities]
end3. Arquitectura de memoria por niveles
Las notas de memoria se separan en niveles lógicos:
durable: Decisiones, patrones arquitectónicos, lecciones.episodic: Traspasos de sesión, progreso diario.reference: Bloques Markdown, referencias a archivos.
Las búsquedas predeterminadas devuelven solo durable + reference para que el ruido de la sesión nunca ahogue las decisiones arquitectónicas críticas.
4. Embedder ONNX ligero (predeterminado)
El embedder ejecuta el modelo multilingüe mediante ONNX Runtime (fastembed) por defecto — sin PyTorch en la instalación del cliente (cientos de MB ahorrados en macOS, hasta varios GB con ruedas CUDA en Linux), una huella residente más pequeña (el modelo en sí es ~0,22 GB en ONNX frente a ~1 GB+ con PyTorch), y cabe cómodamente en una máquina con ~2 GB de RAM. La calidad de recuperación es idéntica al backend PyTorch heredado y los embeddings son compatibles a nivel vectorial, por lo que actualizar no requiere reindexar.
El backend PyTorch heredado sigue disponible para retroceder o realizar comprobaciones A/B:
pip install 'turbo-memory-mcp[torch]'
export TQMEMORY_EMBEDDING_BACKEND=sentence-transformers # default: fastembed5. Memoria marcada por el usuario (procedencia)
Cada nota registra quién la creó: human-explicit cuando pides explícitamente al agente que recuerde algo ("recuerda esto", "guarda esto en mi base de conocimiento"), o agent cuando el agente guarda una lección/decisión por su cuenta. Las notas marcadas por humanos reciben más confianza — se clasifican por encima de las notas escritas por el agente con relevancia igual (un desempate determinista más una pequeña bonificación de puntuación). El campo es opcional y compatible hacia atrás: las notas existentes simplemente se leen como agent, por lo que no se necesita migración.
6. Idioma de búsqueda de texto completo (multilingüe, opcional)
El carril de texto completo BM25 tokeniza en límites de palabras Unicode con minúsculas y plegado de acentos, por lo que los términos exactos en ucraniano, ruso y otros idiomas no ingleses ya coinciden (insensible a mayúsculas y acentos) de serie — el cirílico nunca se corrompe. Lo que un índice no puede hacer es derivar (stemming) más de un idioma a la vez. El predeterminado deriva inglés; una implementación dominada por cirílico puede cambiar el derivador:
export TQMEMORY_FTS_LANGUAGE=Russian # default: EnglishLa derivación rusa además coincide con formas flexionadas cirílicas (документ ↔ документами, más muchos sufijos ucranianos compartidos) — a costa de la derivación inglesa, ya que LanceDB aplica un derivador por índice. El ucraniano no tiene un derivador Snowball dedicado, por lo que el ruso es la opción más cercana; un valor no soportado cae de forma segura al inglés con una advertencia. El cambio surte efecto después de reconstruir el índice FTS (un reinicio de recuperación + reindexado), como al cambiar el modelo de embedding — y la coincidencia flexionada ya está cubierta semánticamente por el carril vectorial denso.
🔐 Bóveda de secretos (NUEVO en v0.7.0)
¿Cansado de pegar claves SSH, cadenas de conexión de BD o tokens de API en cada nueva sesión de chat? La bóveda de secretos resuelve eso — sin que pierdas ni un ápice de control sobre tus datos.
Por qué existe esto
Los agentes te pedían constantemente el mismo DSN de BD de producción, el mismo host SSH de staging, el mismo token bearer, en cada sesión. La memoria del proyecto no era el lugar adecuado para eso (cualquier cosa indexada corre el riesgo de filtrarse en los resultados de búsqueda). Así que la Fase 9 añade una bóveda separada, cifrada y estrictamente limitada al proyecto junto a tus notas.
Qué cambia en tu instalación
Cuatro nuevas herramientas MCP:
set_secret,get_secret,list_secrets,delete_secret. El número de herramientas creció de14 → 18(ahora19con la herramienta de arranquerecent_contextde v0.12.0).Una migración única aprovisiona un directorio
secrets/vacío bajo cada proyecto existente en el primerturbo-memory-mcp migrate --applydespués de la actualización.
Qué NO cambia (léelo si estás nervioso)
Tus notas existentes, el índice Markdown,
semantic_search,hydrateylint_knowledge_basese comportan byte-idénticamente. La actualización no los toca.La bóveda es opt-in. Si nunca llamas a
set_secret, lo único en disco es un blob cifrado vacío de 28 bytes por proyecto. Impacto cero.Si eliminas la función mentalmente, puedes ignorar las cuatro nuevas herramientas para siempre y nada se rompe.
Dónde viven tus secretos (y dónde no)
En tu máquina, cifrados en reposo:
~/.turbo-quant-memory/projects/<project_id>/secrets/vault.tqv, AES-256-GCM, clave maestra por proyecto.En ningún otro lugar: el árbol
src/de este paquete contiene cero código HTTP saliente — sinrequests, sinhttpx, sinurllib.request, sin sockets crudos. No tenemos nada a lo que enviar tus secretos, incluso si quisiéramos. (Verifícalo congrep -rE 'requests|httpx|urllib\.request|aiohttp' src/— limpio.)Nunca en tu índice de recuperación: el caminante de ingesta y el caminante de lint se niegan rotundamente a atravesar cualquier subdirectorio
secrets/.semantic_searchno puede alcanzar la bóveda por diseño.Nunca en las transcripciones del agente (cuando se usa correctamente):
get_secretdevuelve el valor en un campo dedicadosecret_value, separado de cualquier texto descriptivo. Se instruye a los agentes a pasarlo programáticamente, no a repetirlo.
Cómo usarlo
Configuración de clave maestra de una sola vez (elige una vía):
# macOS (auto-uses Keychain after first set_secret if you skip this step): keyring set turbo-quant-memory secrets-master-<project_id> <32-byte-base64> # Headless / Linux / CI / Docker: export TQMEMORY_SECRETS_PASSPHRASE='your-long-passphrase' # add to shell rc⚠️
TQMEMORY_SECRETS_PASSPHRASEes una frase de contraseña, no la clave en bruto. Se procesa con Argon2id para derivar la clave maestra. No pegues el valor base64 dekeyringen esta variable de entorno — eso deriva una clave diferente y una bóveda creada mediante keyring no podrá descifrarse y dará un errormaster_key_mismatch. Elige una vía: keyring o frase de contraseña, y si compartes un daemon entre clientes MCP, establece la misma frase de contraseña en todos o en ninguno. La variable de entorno siempre prevalece sobre keyring cuando ambas están definidas.Guarda un secreto una vez, reutilízalo para siempre — dos vías, elegidas por si el valor ya está en el chat:
Valor aún NO está en el chat — usa la CLI (vía profiláctica):
turbo-memory-mcp secret-set prod-db-dsn # prompts: Value for 'prod-db-dsn' (input hidden): ******El valor se lee mediante
getpass— nunca entra en el historial del shell, el scrollback ni ninguna transcripción del chat. Recomendado cuando estás a punto de aprovisionar una credencial nueva y quieres mantenerla completamente fuera de la conversación.Valor ya está en el chat — deja que el agente lo escriba (vía reactiva):
set_secret("prod-db-dsn", "postgresql://user:pass@host:5432/db")Usa esto siempre que el valor ya sea visible: lo pegaste tú, o el agente lo generó dentro de la conversación. El agente resuelve el
project_idactivo de forma determinista a partir decwd— mejor que pedir al usuario que vuelva a escribir el valor en una terminal donde sucwdpuede no coincidir con el proyecto previsto. Una vez que la exposición ha ocurrido en el chat, la CLI no ofrece secreto adicional;set_secretes la vía de escritura más segura.
Los agentes obtienen bajo demanda:
get_secret("prod-db-dsn") → {"status": "ok", "secret_value": "postgresql://..."}
Modelo de amenazas — qué protegemos, qué no
Protegemos contra (las amenazas realistas de un desarrollador individual):
Fugas accidentales de copias de seguridad (Time Machine, rsync, sincronización de escritorio de iCloud de archivos en texto plano).
Contratiempos al compartir pantalla / capturas de pantalla que muestren una credencial almacenada.
Un
git addaccidental del archivo equivocado en tu directorio personal.
No protegemos contra (y nunca afirmamos hacerlo):
Un usuario root comprometido en tu portátil.
Un atacante activo que ya haya tomado el control del proceso daemon en ejecución.
Ataques a nivel de hardware, ataques de "doncella malvada" (evil-maid), ataques de arranque en frío.
Si tu modelo de amenazas es mayor que el nuestro, usa un gestor de secretos dedicado (1Password, HashiCorp Vault) y reserva tqmemory solo para conocimiento.
Preguntas frecuentes
"¿Se verá afectada mi memoria existente?" No. Notas, markdown, búsqueda, hydrate, lint — todo sin cambios.
"¿Tengo que hacer algo para actualizar?" Solo si quieres empezar a usar
set_secret. De lo contrario, ignóralo."¿Dónde se almacenan exactamente los secretos?" Por proyecto, en
~/.turbo-quant-memory/projects/<project_id>/secrets/(blob cifrado + metadatos mínimos + un registro de auditoría de marcas de tiempo de acceso que nunca contiene los valores)."¿Pueden filtrarse mis secretos en
semantic_search?" No. Aislamiento estricto aplicado en el ingester, el linter, y verificado por una prueba de regresión que coloca un centinela y demuestra que la búsqueda devuelve cero resultados."¿Y si quiero esta función desactivada?" Ya lo está: la bóveda está vacía hasta que la llenes. No hay nada en ejecución, nada transmitido, nada programado.
"¿Y si elimino un proyecto?" Su bóveda, registro de auditoría y entrada de clave maestra por proyecto están todos bajo el directorio de ese proyecto y se eliminan con él.
🤖 Instrucciones para Agentes de IA (Directiva del Sistema)
[!IMPORTANT] ATENCIÓN AGENTE DE IA (Claude, Gemini, Codex o Antigravity): Tu manual de operación completo se distribuye como la habilidad de agente
turbo-quant-memory, incluida con este paquete. Instálala una vez y cada agente en esta máquina sabrá cómo detectar, instalar y operar el servidor de memoriatqmemory:turbo-memory-mcp skill installEl comando copia el
SKILL.mdcanónico en todos los directorios de habilidades de agentes detectados (~/.agents/skills/siempre, además de los directorios de clientes detectados) y actualiza las copias antiguas. Vuelve a ejecutarlo después de cadauv tool upgrade. El archivo de habilidad sin procesar también se incluye dentro del paquete instalado enturbo_memory_mcp/skills/turbo-quant-memory/SKILL.mdy se encuentra en este repositorio bajosrc/turbo_memory_mcp/skills/.
🛰️ Específico de la plataforma: Hermes Agent
Hermes ejecuta servidores MCP a través de una puerta de enlace gestionada por systemd — una configuración diferente de Claude Code o Cursor.
Instalación
uv tool install git+https://github.com/Lexus2016/turbo_quant_memoryAñade a ~/.hermes/config.yaml:
mcp_servers:
tqmemory:
command: turbo-memory-mcp
args: ["serve"]
enabled: trueReinicia la puerta de enlace:
systemctl --user restart hermes-gatewaySolución de problemas de tiempos de espera de MCP
Si las herramientas MCP agotan el tiempo de espera con "MCP call timed out after 120.0s", es probable que el bloqueo del daemon esté obsoleto debido a un cierre anterior o a la suspensión del host. Recuperación:
# 1. Kill all daemon processes
pkill -f turbo-memory-mcp
# 2. Remove stale lock file
rm -f ~/.turbo-quant-memory/.daemon.lock
# 3. Check and apply pending migrations
turbo-memory-mcp migrate --status
turbo-memory-mcp migrate --apply
# 4. Quick health check
turbo-memory-mcp doctor
# 5. Restart gateway
systemctl --user restart hermes-gateway
# 6. Wait 30-60s for MCP reconnect"memory server busy" (v0.27.0+)
Un fallo diferente: memory server busy: 'index_paths' holds the dispatch lock (waited 30s); retry this call later. Esto no es un bloqueo obsoleto — significa que una
operación concurrente sigue realmente en ejecución y mantiene el bloqueo de despacho de un solo escritor,
y tu llamada se rindió en lugar de hacer cola hasta el tiempo de espera de llamada a herramienta del propio host MCP
(los tiempos de espera duros de 420-600s vistos antes de v0.27.0, que
descartaban silenciosamente las escrituras de memoria). El error nombra la herramienta que está bloqueando, y
la misma línea se registra en stderr con el prefijo [tqmemory].
Simplemente reintenta la llamada — no se escribió nada, por lo que un reintento no puede duplicar. Si un
despliegue mantiene legítimamente el bloqueo durante más tiempo que el valor predeterminado de 30s (una ejecución
grande de index_paths sobre un repositorio grande, un backend de embeddings en frío), aumenta el límite
o vuelve a optar por excluirlo por completo:
export TQMEMORY_DISPATCH_LOCK_TIMEOUT=90 # seconds; default 30
export TQMEMORY_DISPATCH_LOCK_TIMEOUT=0 # <= 0: wait without a bound (pre-0.27.0 behaviour)Mantén el límite por debajo del RPC_TIMEOUT_SECONDS propio del proxy (120s) para que el
error explícito "busy" prevalezca sobre un timeout RPC opaco.
Migración automática al inicio
Establece TQMEMORY_MIGRATE_ON_STARTUP=1 en el entorno para que el servidor aplique automáticamente las migraciones de esquema pendientes (con una instantánea continua) cuando se inicia como primario o independiente:
mcp_servers:
tqmemory:
command: turbo-memory-mcp
args: ["serve"]
enabled: true
env:
TQMEMORY_MIGRATE_ON_STARTUP: "1"El resultado de la migración automática es visible en la respuesta de health() bajo migration_auto_result.
Problemas comunes de Hermes
Síntoma | Causa | Solución |
Tiempo de espera de MCP |
|
|
Múltiples daemons | Un fallo dejó procesos huérfanos |
|
Las herramientas devuelven errores | Migración de esquema pendiente |
|
La puerta de enlace no carga MCP | Error de sintaxis en la configuración | Valida |
Fallo de inicio silencioso | Sin visibilidad del rol del daemon | Comprueba stderr: |
🌍 Versiones de idioma
Esta documentación se mantiene en tres idiomas sincronizados:
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
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 Connectors
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Shared memory for coding agents. Stop re-explaining your codebase every session.
Persistent memory for AI agents. Semantic search, memory graph, W3C DID identity.
Universal memory for AI agents and tools. Save, organize and search context anywhere.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides infinite long-term memory for AI agents with persistent, searchable storage of project details, preferences, and snippets. Reduces token costs by retrieving only relevant memories while keeping all data stored locally.155MIT
- AlicenseNot gradedqualityCmaintenanceProvides AI coding agents with persistent, graph-connected memory across projects, enabling cross-project context retrieval via synaptic connections and hybrid search.156MIT
- AlicenseNot gradedqualityBmaintenanceProvides persistent, searchable memory and knowledge capture for AI-assisted development, enabling agents to retain decisions, bugs, and patterns across sessions and projects.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to maintain persistent, local memory with retrieval-augmented search, knowledge graphs, and context surfacing, without any cloud dependencies.135MIT
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/Lexus2016/turbo_quant_memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server