local-rag
Tu agente empieza cada sesión a ciegas: adivinando nombres de archivo, haciendo grep de palabras clave, quemando contexto en archivos irrelevantes y olvidando todo lo que hablaste ayer.
En un proyecto real, un prompt típico quemaba 380K tokens y ~12 segundos de principio a fin.
Tras indexar con mimirs: 91K tokens, ~3 segundos — una reducción del 76% en esa base de código. Tus cifras variarán según el tamaño del repositorio, la consulta y el modelo.
Inicio rápido
1. Requisitos previos
Bun (curl -fsSL https://bun.sh/install | bash) y, en macOS, un SQLite moderno: el integrado de Apple no admite extensiones:
brew install sqliteLinux y Windows ya traen un SQLite compatible.
2. Configura tu editor (automático)
bunx mimirs init --ide claude # or: cursor, windsurf, copilot, jetbrains, allEsto crea la configuración del servidor MCP, las reglas del editor, .mimirs/config.json y la entrada de .gitignore. Ejecútalo con --ide all para configurar todos los editores compatibles a la vez.
init cubre Claude Code, Cursor, Windsurf, Copilot y JetBrains (Junie). Para todo lo demás — Codex, Zed, clientes personalizados — copia uno de los fragmentos siguientes.
3. Configura tu editor (referencia manual)
El servidor MCP de mimirs se ejecuta sobre stdio. Cada cliente necesita las mismas tres cosas: un command (bunx), args (["mimirs@^1", "serve"]) y una variable de entorno RAG_PROJECT_DIR que apunte a la raíz de tu proyecto.
¿Por qué
@^1y no@latest? El rango te mantiene en 1.x, así que los arreglos de errores y las nuevas funciones siguen llegando automáticamente, pero una futura 2.0 con cambios incompatibles nunca se instalará sin que lo pidas. Para subir a una versión mayor, edita el argumento o vuelve a ejecutarbunx mimirs init. Si ya tienesmimirs@latesten una configuración, volver a ejecutarbunx mimirs initlo reescribe amimirs@^1.
¿«command not found: bunx» o el servidor no arranca (aunque
bunxfunciona en tu terminal)? Los editores lanzados desde el Dock o un lanzador de escritorio no cargan el perfil de tu shell, así que~/.bun/binno está en su PATH. Usa la ruta absoluta dewhich bunxcomocommanden lugar del simplebunxen los fragmentos siguientes.bunx mimirs initescribe la ruta absoluta automáticamente (vuelve a ejecutarlo para corregir una configuración existente), ybunx mimirs doctordetecta el problema.
{
"mcpServers": {
"mimirs": {
"command": "bunx",
"args": ["mimirs@^1", "serve"],
"env": {
"RAG_PROJECT_DIR": "/absolute/path/to/your/project"
}
}
}
}{
"mcpServers": {
"mimirs": {
"command": "bunx",
"args": ["mimirs@^1", "serve"],
"env": {
"RAG_PROJECT_DIR": "/absolute/path/to/your/project"
}
}
}
}Windsurf lee los servidores MCP desde tu directorio personal, no desde el proyecto. La variante del plugin de JetBrains usa ~/.codeium/mcp_config.json.
{
"mcpServers": {
"mimirs": {
"command": "bunx",
"args": ["mimirs@^1", "serve"],
"env": {
"RAG_PROJECT_DIR": "/absolute/path/to/your/project"
}
}
}
}{
"mcpServers": {
"mimirs": {
"command": "bunx",
"args": ["mimirs@^1", "serve"],
"env": {
"RAG_PROJECT_DIR": "/absolute/path/to/your/project"
}
}
}
}El Copilot de VS Code usa un mapa servers (no mcpServers) y un campo type.
{
"servers": {
"mimirs": {
"type": "stdio",
"command": "bunx",
"args": ["mimirs@^1", "serve"],
"env": {
"RAG_PROJECT_DIR": "/absolute/path/to/your/project"
}
}
}
}Codex usa TOML, no JSON, y lee de ~/.codex/config.toml. Un bloque por proyecto: elige un nombre de tabla único si conectas varios repositorios (mimirs-frontend, mimirs-api, etc).
[mcp_servers.mimirs]
command = "bunx"
args = ["mimirs@^1", "serve"]
env = { RAG_PROJECT_DIR = "/absolute/path/to/your/project" }O, de forma equivalente, con una tabla de entorno expandida:
[mcp_servers.mimirs]
command = "bunx"
args = ["mimirs@^1", "serve"]
[mcp_servers.mimirs.env]
RAG_PROJECT_DIR = "/absolute/path/to/your/project"Si el proyecto está en un montaje de solo lectura, configura RAG_DB_DIR en una ubicación con permiso de escritura. El índice se guardará allí en lugar de en <project>/.mimirs/.
{
"mcpServers": {
"mimirs": {
"command": "bunx",
"args": ["mimirs@^1", "serve"],
"env": {
"RAG_PROJECT_DIR": "/read/only/project",
"RAG_DB_DIR": "/home/me/.cache/mimirs/myproject"
}
}
}
}4. Primer índice
El servidor MCP indexa de forma diferida en la primera consulta, así que una vez conectado puedes pedirle algo a tu agente directamente. Para forzar un índice completo desde el principio (útil en repositorios grandes):
bunx mimirs index # current directory
bunx mimirs status # how many files, chunks, embeddings5. Prueba la demo (opcional)
bunx mimirs demoRelated MCP server: codeix
Flujo de trabajo manual (sin init)
init es una conveniencia: conecta tu editor (config MCP, reglas de agente, .gitignore, .mimirs/config.json). No construye el índice, y nada de lo siguiente lo necesita: el índice y una configuración por defecto se crean automáticamente la primera vez que indexas o consultas.
1. Añade el servidor MCP a mano. Copia el fragmento de tu cliente de la referencia manual de arriba: command: "bunx", args: ["mimirs@^1", "serve"] y RAG_PROJECT_DIR apuntando a la raíz de tu proyecto. Esa es toda la configuración MCP.
Sin
initno hay archivo de reglas de agente, así que tu asistente no sabrá que las herramientas existen. Menciona mimirs en tu prompt o copia la lista de herramientas de CLAUDE.md en las reglas de tu editor.
2. Construye el índice. El servidor MCP indexa de forma diferida en la primera llamada a una herramienta, así que a través de un agente puedes omitir este paso. Para indexar de antemano (recomendado en repositorios grandes y necesario antes del search/read de la CLI de abajo):
bunx mimirs index # current directory
bunx mimirs index /path/to/repo # a specific directory
bunx mimirs index --patterns "src/**/*.ts,*.md" # restrict to globs
bunx mimirs status # files, chunks, embeddingsNo se requiere init ni archivo de configuración: se aplican los valores por defecto y el índice se escribe en <project>/.mimirs/.
3. Consulta desde la CLI. Dos comandos de lectura, ambos ejecutándose contra el índice del directorio actual (usa --dir para apuntar a otro lugar):
# Where is it? — ranked file paths + snippet previews
bunx mimirs search "where is auth handled" --top 10
# What is it? — the actual matching code chunks (functions, classes, sections)
bunx mimirs read "jwt validation" --top 8 --threshold 0.3Acota el alcance con --ext .ts,.tsx, --in src,packages/core o --exclude tests. Nota: el search/read de la CLI no se autoindexan: ejecuta mimirs index primero (solo el servidor MCP indexa bajo demanda).
Plugin de Claude Code
Para una integración más profunda, mimirs también está disponible como plugin de Claude Code. En una sesión de Claude Code:
/plugin marketplace add https://github.com/TheWinci/mimirs.git
/plugin install mimirsEl plugin conecta el servidor MCP, tres hooks — SessionStart (resumen de contexto), PostToolUse (reindexado automático al editar), SessionEnd (checkpoint automático) — y un conjunto de skills de flujo de trabajo que orquestan las herramientas para tareas habituales: explore, plan, review, debug, research, recall, catch-up, handoff, doc-gaps, scout y wiki.
¿Quieres las skills sin el plugin? Son simples archivos SKILL.md en skills/. Copia las que quieras en .claude/skills/<name>/ de tu proyecto (compartidas con el repositorio) o en ~/.claude/skills/<name>/ (todos tus proyectos) y Claude Code las detectará en la próxima sesión. Las skills son una función de Claude Code, así que no se aplican a otros editores — pero las herramientas MCP en sí funcionan en todas partes.
Calidad de búsqueda
89–97% Recall@10, 97–100% Recall@20, MRR 0.69–0.77. Evaluado en cuatro bases de código reales en tres lenguajes con conjuntos de consultas estratificados y de dificultad mixta (72–120 consultas cada uno, ~⅓ difíciles), re-medido el 2026-06-04 con el pipeline actual. Metodología completa en BENCHMARKS.md.
Base de código | Lenguaje | Archivos | Consultas | Recall@10 | MRR | Cero fallos |
mimirs | TypeScript | 244 | 74 | 95.3% | 0.759 | 4.1% |
Excalidraw | TypeScript | 693 | 72 | 90.3% | 0.773 | 9.7% |
Django | Python | 3,181 | 116 | 97.4% | 0.727 | 2.6% |
Kubernetes | Go | 8,792 | 120 | 89.2% | 0.689 | 10.8% |
Los repositorios más grandes (Kubernetes, Excalidraw) son lo bastante grandes como para que algunos archivos correctos queden justo después del top-10; el recall alcanza el 97–100% en el top-20, así que configura searchTopK: 15–20 en repositorios grandes.
vs. agentes de codificación (ContextBench)
También ejecutamos mimirs en ContextBench (recuperación de contexto de referencia en repositorios reales), cuyos otros participantes son agentes de codificación completos — exploradores de varios pasos —, no herramientas de una sola llamada. Dada una consulta centrada (lo que un LLM envía tras leer el issue), una sola llamada de recuperación de mimirs se posiciona así frente a trayectorias completas de agentes:
Métrica | mimirs | Puesto | Campo |
Cobertura de archivos | 0.799 | #1 | por encima de OpenHands, SWE-agent, Agentless… |
Cobertura de líneas | 0.341 | #1 | por encima de Agentless, mini-SWE… |
Precisión de líneas | 0.316 | #2 | solo por detrás de Agentless (0.376) |
Precisión de archivos | 0.192 | #6 | baja por diseño — prioridad al recall |
mimirs lidera ambas métricas de cobertura con una sola llamada. La precisión de archivos es la última a propósito: perder un archivo gold es fatal (el LLM nunca ve el código que debe corregir), mientras que una referencia extra a un archivo es barata de filtrar — por eso mimirs maximiza el recall y deja que el modelo haga el pase de precisión. Y esa baja precisión de archivos es en su mayor parte un artefacto de la métrica: ~86% de los archivos no gold que devuelve mimirs son contexto relevante acoplado a la corrección (callers, tipos, implementaciones hermanas), no ruido — medido contra el gold la precisión es 0.19, contra la relevancia es 0.87.
El mismo recall, a una fracción del coste. Cara a cara contra un agente que solo usa grep (issue en bruto, sin índice, sin espiar la corrección) localizando los mismos 15 issues: mimirs entrega el clúster relevante en una llamada de ~15 ms con cero tokens de LLM; el agente necesitó ~11.5 llamadas a herramientas por issue (cada una un paso de LLM) para converger — y se detuvo en el archivo principal. En correcciones de varios archivos, el agente alcanzó el 22% de los archivos gold; mimirs, el 56% en esa única llamada — el grafo de dependencias saca a la luz los archivos secundarios que el issue nunca nombra.
Muestra de n=15 frente al conjunto de 500 de los agentes — orientativo; las llamadas a herramientas de los agentes son autodeclaradas y con tope. Clasificaciones completas, advertencias y tablas de relevancia + coste en BENCHMARKS.md.
Comparativa
mimirs | Sin herramienta (grep + Read) | Context stuffing | Servicios RAG en la nube | |
Configuración | Un comando | Nada | Nada | Claves de API, cuentas |
Coste de tokens | ~91K/prompt | ~380K/prompt | Toda la base de código | Variable |
Calidad de búsqueda | 89–97% Recall@10 | Depende de las palabras clave | N/D (todo cargado) | Variable |
Comprensión del código | Consciente de AST (24 lenguajes) | A nivel de línea | Ninguna | Normalmente a nivel de línea |
Memoria entre sesiones | Conversaciones + checkpoints | Ninguna | Ninguna | Algo |
Privacidad | Totalmente local | Local | Local | Los datos salen de tu máquina |
Precio | Gratis | Gratis | Facturas de tokens elevadas | $10-50/mes + tokens |
¿Por qué no una herramienta existente?
El
@codebasede Continue.dev — la superposición más cercana (RAG local, código abierto), pero la recuperación vive dentro de la extensión del editor. Mimirs es un servidor MCP independiente con herramientas explícitas (search,read_relevant,project_map,search_conversation,annotate) alrededor de las cuales el agente puede planificar, además de seguimiento de conversación y un generador de wiki integrado.El repo-map de Aider — resumen estático de tree-sitter del repositorio, sin embeddings. Ingenioso y ligero, pero un resumen no es recuperación: mimirs clasifica fragmentos por consulta con vector + BM25 y los potencia por centralidad de grafo.
Sourcegraph Cody / OpenCtx — excelentes en búsqueda de código, pero la indexación depende de infraestructura en la nube y una cuenta. Mimirs está a un
bunxde distancia y nunca sale de tu máquina.llama-index / LangChain / hazlo tú mismo — esas son bibliotecas. Mimirs viene con todo incluido: fragmentación consciente de AST, recuperación híbrida, vigilancia de archivos, seguimiento de conversación y anotaciones ya conectadas.
Cómo funciona
Analizar y fragmentar — Divide el contenido usando estrategias según el tipo: límites de funciones/clases para código (mediante tree-sitter en 24 idiomas), encabezados para markdown, claves de nivel superior para YAML/JSON. Los fragmentos que superan el límite de tokens del modelo de embeddings se dividen en ventanas y se fusionan.
Incrustar — Cada fragmento se convierte en un vector de 384 dimensiones usando all-MiniLM-L6-v2 (en proceso mediante Transformers.js + ONNX, sin llamadas a API). Los vectores se almacenan en sqlite-vec.
Construir grafo de dependencias — Los especificadores de importación y los símbolos exportados se capturan durante la fragmentación AST y luego se resuelven para construir un grafo de dependencias a nivel de archivo y un grafo de llamadas a nivel de símbolo.
impactrecorre los llamadores transitivos de una función (radio de explosión + pruebas a ejecutar);traceencuentra cómo un símbolo llega a otro; la CLImimirs affectedconvierte un git diff en el conjunto exacto de pruebas a ejecutar.Búsqueda híbrida — Las consultas ejecutan similitud vectorial y BM25 en paralelo, combinadas por fusión de rango recíproco (ponderada, por defecto 0.5), robusta a las escalas de puntuación muy diferentes de los dos evaluadores. Los identificadores se dividen (camelCase/snake_case) para que una búsqueda de
dependscoincida congetDependsOn. Luego, los resultados se potencian por centralidad del grafo de dependencias y heurísticas de ruta.read_relevantdevuelve fragmentos individuales con nombres de entidad y rangos de línea exactos (path:start-end).Vigilar y reindexar — Los cambios de archivo se detectan con un debounce de 2 segundos. Los archivos modificados se reindexan; los archivos eliminados se podan.
Conversación y puntos de control — Sigue las transcripciones JSONL de Claude Code en tiempo real. Los agentes pueden crear puntos de control en momentos importantes para que futuras sesiones los busquen.
Anotaciones — Las notas adjuntas a archivos o símbolos aparecen como bloques
[NOTE]en línea en los resultados deread_relevant.Analíticas — Cada consulta se registra. Las analíticas muestran consultas sin resultados, consultas de baja relevancia y tendencias periódicas.
Manejo de datos
mimirs se ejecuta enteramente en tu máquina. Indexa los archivos que tu repositorio rastrea, además de los archivos no rastreados pero no ignorados por git (por lo que un .env que olvidaste añadir a .gitignore podría leerse; los patrones de secretos comunes como .env, *.pem, *.key y las claves SSH están excluidos por defecto; añade los tuyos a exclude en .mimirs/config.json). El contenido de los archivos y los embeddings se almacenan en <project>/.mimirs/index.db, un archivo SQLite local. La indexación de conversaciones solo lee las transcripciones del proyecto actual en ~/.claude/projects/<this-project>/.
La única llamada de red es la descarga única del modelo de embeddings (Xenova/all-MiniLM-L6-v2) desde huggingface.co, almacenado en caché en ~/.cache/mimirs/models. Tu código nunca sale de tu máquina: no se envía nada a ningún servidor.
Idiomas admitidos
Fragmentación consciente de AST mediante bun-chunk con gramáticas de tree-sitter:
TypeScript, JavaScript, Python, Go, Rust, Java, C, C++, C#, Ruby, PHP, Scala, Kotlin, Lua, Zig, Elixir, Haskell, OCaml, Dart, Bash/Zsh, TOML, YAML, HTML, CSS/SCSS/LESS
También indexa: Markdown, JSON, XML, SQL, GraphQL, Protobuf, Terraform, Dockerfiles, Makefiles y más. Los archivos sin una extensión conocida recurren a la división en párrafos.
Documentación
Ejemplos de salidas de herramientas — lo que tu agente realmente recibe a través de MCP
Stack
Capa | Elección |
Tiempo de ejecución | Bun (SQLite integrado, TS rápido) |
Fragmentación AST | bun-chunk — gramáticas tree-sitter para 24 idiomas |
Embeddings | Transformers.js + ONNX (en proceso, sin demonio) |
Modelo de embeddings | all-MiniLM-L6-v2 (~23MB, 384 dimensiones) — configurable |
Almacén de vectores | sqlite-vec (archivo |
MCP | @modelcontextprotocol/sdk (transporte stdio) |
Plugin | plugin de Claude Code con skills y hooks |
Todos los datos viven en .mimirs/ dentro de tu proyecto: añádelo a .gitignore.
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 gradedqualityCmaintenanceProvides semantic code search and retrieval capabilities for AI agents, enabling them to query codebases using natural language with automatic learning, hybrid search, and intelligent chunking of functions and classes.429ISC
- AlicenseNot gradedqualityCmaintenanceFast semantic code search for AI agents — find symbols, references, and callers across any codebase.9Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to semantically search and navigate code repositories using natural language, with support for multiple repos, incremental indexing, and no local install needed.
- AlicenseNot gradedqualityDmaintenanceAdds semantic code search to AI coding agents, enabling natural language queries across entire codebases to retrieve relevant code chunks, saving tokens and providing deep context.541MIT
Related MCP Connectors
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Search your knowledge bases from any AI assistant using hybrid RAG.
Persistent semantic memory for AI agents: store and recall text by meaning (RAG). x402
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/TheWinci/mimirs'
If you have feedback or need assistance with the MCP directory API, please join our Discord server