LAIN-mcp
Servidor MCP en Rust que otorga a los agentes de codificación de IA conciencia arquitectónica: grafo de conocimiento persistente, análisis de radio de explosión, detección de co-cambio mediante git y búsqueda semántica local. Sin claves API, se ejecuta completamente en las instalaciones.
Documentación
Lain
Un grafo de código para agentes de codificación. Lain mapea llamadores, dependencias, símbolos y co-cambios de Git, y luego los expone a través del Protocolo de Contexto de Modelo (MCP). Antes de que un agente edite una función, puede inspeccionar qué depende de ella y cómo el resto del código la alcanza.

La demo rastrea un símbolo a través de los repositorios bytes y tokio. Los agentes
consultan el mismo grafo a través de MCP; el navegador muestra qué indexó Lain y de dónde
provino una respuesta.
Pregúntale a tu agente:
If I change validate_token, what breaks?
Show me the call chain from entry to helper_a.
Which files usually change with auth.rs?
Is another agent already editing this code?
Lain responde con nombres de símbolos y rutas de origen desde un índice local. El índice permanece en disco entre ejecuciones, se actualiza cuando el código cambia y puede cubrir más de un repositorio. La búsqueda semántica es opcional; las consultas de grafo funcionan sin un modelo de incrustación.
Instalación
Usando el instalador de lanzamiento:
curl -fsSL https://raw.githubusercontent.com/spuentesp/lain/main/install.sh | bash
source ~/.zshrc # or ~/.bashrc
lain --version
Rust 1.89 o más reciente solo se necesita al compilar desde el código fuente. La guía de inicio rápido cubre la instalación no interactiva y el modelo de incrustación local opcional.
Conectar un agente
Ejecuta un comando de configuración desde el repositorio que quieres que Lain indexe:
lain setup --agent claude-code
lain setup --agent codex
lain setup --agent cursor
lain setup --agent vscode
lain setup --agent continue
Usa lain setup --agent generic para otro host de MCP. Esto escribe este
.mcp.json a nivel de proyecto, con la ruta absoluta del binario lain que
ejecutó la configuración como command:
{
"mcpServers": {
"lain": {
"command": "/home/you/.local/bin/lain",
"args": ["mcp"]
}
}
}
Reinicia el agente después de la configuración. Lain sube desde el directorio de trabajo del agente
para encontrar .git, construye .lain/graph.bin y sirve el repositorio a través de stdio.
No se necesita repos.yaml para un solo repositorio.
Lenguajes
Los analizadores para Rust, Python, TypeScript, JavaScript, Go, Java, C, C++, C#, Ruby,
Swift, Kotlin, Scala y PHP están integrados en el binario, al igual que los bloques <script>
de los componentes Vue y Svelte. Cada uno obtiene definiciones y un grafo de llamadas
sin necesidad de instalar nada más.
Los servidores de lenguaje son opcionales y solo añaden precisión. lain setup lista los
lenguajes que encontró y pregunta qué servidores instalar; presionar Enter no instala
ninguno. Las ejecuciones no interactivas no instalan ninguno a menos que los nombres:
lain setup --lsp python,go # just these
lain setup --lsp detected # every missing one for this repository
lain setup --lsp none
Primera consulta
Pregúntale al agente conectado:
Use Lain to show the blast radius of validate_token.
O llama a la misma herramienta desde una terminal:
lain oneshot get_blast_radius validate_token
Usa un símbolo de tu repositorio en lugar de validate_token. Si el grafo
no está listo o una respuesta parece desactualizada, ejecuta lain doctor.
Múltiples repositorios
lain repos add bytes https://github.com/tokio-rs/bytes.git
lain repos add tokio https://github.com/tokio-rs/tokio.git
lain workspaces create tokio-stack --members bytes,tokio
lain server --config ./repos.yaml --transport http --port 9999
Abre http://localhost:9999 para el Centro de Comando. El servidor escucha solo en
localhost; establece LAIN_BIND_ADDR=0.0.0.0 (con LAIN_API_KEYS=key1,…)
para exponerlo en la red. La federación añade
búsqueda a nivel de organización y consultas de radio de explosión entre repositorios. La
guía de federación cubre configuración, tipos de fuente y
estados de fallo. Después de una actualización del esquema de federación, ejecuta lain reindex para
reconstruir el grafo en disco desde las fuentes.
Verificar el grafo
Desde un checkout de fuente:
scripts/demo.sh --quick
El script crea un repositorio pequeño con un grafo de llamadas conocido, inicia un servidor Lain real y compara las respuestas con ese grafo. Sale con código distinto de cero cuando una verificación falla. Una ejecución completa también registra tiempos contra este repositorio.
Lo que proporciona Lain
| Necesidad | Herramienta o característica |
|---|---|
| Ver llamadores antes de cambiar un símbolo | get_blast_radius, assess_change |
| Rastrear cómo se conectan dos funciones | get_call_chain |
| Encontrar puntos de entrada arquitectónicos | find_anchors, list_entry_points |
| Buscar por nombre o significado | find_symbol, search_code |
| Seguir un símbolo entre repositorios | get_cross_repo_blast_radius, search_org |
| Evitar que los agentes editen el mismo código a ciegas | intenciones, presencia y reclamos de archivos de asesoría |
El análisis estático no puede probar cada llamada dinámica a través de un bus de mensajes, contenedor
de inyección de dependencias o enrutador reflexivo. explain_dispatch combina llamadores
estáticos con coincidencias de convenciones, rastros de ejecución y evidencia de co-cambios de Git; un
resultado vacío se convierte en insufficient_evidence, no en una afirmación de que la edición es segura.
Documentación
| Comienza aquí | Cubre |
|---|---|
| Inicio rápido | Instalación, primera consulta y primeros auxilios |
| Manual de usuario | Referencia de CLI, ajuste, operación y solución de problemas |
| Guía de herramientas | Herramientas MCP, argumentos, salidas y límites |
| Paquete de habilidades | Habilidades cargables por agentes y recetas de roles |
| Federación | Configuración y consultas de múltiples repositorios |
| Multijugador | Presencia de agentes, intenciones, reclamos y enlaces |
| Arquitectura | Construcción del grafo y decisiones de diseño |
| Índice de documentación | Cada documento mantenido |
Estado del proyecto
Licencia
MIT — Copyright (c) 2026 spuentesp