LAIN-mcp
Servidor MCP em Rust que dá aos agentes de IA consciência arquitetural — grafo de conhecimento persistente, análise de raio de explosão, detecção de co-mudança via git e busca semântica local. Sem chaves de API, executa inteiramente on-premise.
Documentação
Lain
Um grafo de código para agentes de codificação. Lain mapeia chamadores, dependências, símbolos e co-alterações do Git, e os expõe através do Model Context Protocol (MCP). Antes de um agente editar uma função, ele pode inspecionar o que depende dela e como o resto do código a alcança.

A demonstração rastreia um símbolo nos repositórios bytes e tokio. Os agentes
consultam o mesmo grafo via MCP; o navegador mostra o que Lain indexou e de onde
veio uma resposta.
Pergunte ao seu 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 com nomes de símbolos e caminhos de origem de um índice local. O índice permanece no disco entre execuções, é atualizado quando o código muda e pode cobrir mais de um repositório. A busca semântica é opcional; as consultas de grafo funcionam sem um modelo de incorporação.
Instalação
Usando o instalador de lançamento:
curl -fsSL https://raw.githubusercontent.com/spuentesp/lain/main/install.sh | bash
source ~/.zshrc # or ~/.bashrc
lain --version
Rust 1.89 ou mais recente só é necessário ao compilar a partir do código-fonte. O quickstart cobre a instalação não interativa e o modelo de incorporação local opcional.
Conecte um agente
Execute um comando de configuração no repositório que você deseja que Lain indexe:
lain setup --agent claude-code
lain setup --agent codex
lain setup --agent cursor
lain setup --agent vscode
lain setup --agent continue
Use lain setup --agent generic para outro host MCP. Ele grava este
.mcp.json no nível do projeto, com o caminho absoluto do binário lain que
executou a configuração como command:
{
"mcpServers": {
"lain": {
"command": "/home/you/.local/bin/lain",
"args": ["mcp"]
}
}
}
Reinicie o agente após a configuração. Lain sobe a partir do diretório de trabalho do agente
para encontrar .git, constrói .lain/graph.bin e serve o repositório via stdio.
Nenhum repos.yaml é necessário para um repositório.
Linguagens
Analisadores para Rust, Python, TypeScript, JavaScript, Go, Java, C, C++, C#, Ruby,
Swift, Kotlin, Scala e PHP estão embutidos no binário, assim como os blocos <script>
dos componentes Vue e Svelte. Cada um recebe definições e um grafo de chamadas
sem mais nada instalado.
Servidores de linguagem são opcionais e apenas adicionam precisão. lain setup lista as
linguagens que encontrou e pergunta quais servidores instalar; pressionar Enter instala
nenhum. Execuções não interativas não instalam nada, a menos que você os nomeie:
lain setup --lsp python,go # just these
lain setup --lsp detected # every missing one for this repository
lain setup --lsp none
Primeira consulta
Pergunte ao agente conectado:
Use Lain to show the blast radius of validate_token.
Ou chame a mesma ferramenta de um terminal:
lain oneshot get_blast_radius validate_token
Use um símbolo do seu repositório no lugar de validate_token. Se o grafo
não estiver pronto ou uma resposta parecer desatualizada, execute lain doctor.
Múltiplos repositórios
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
Abra http://localhost:9999 para o Command Center. O servidor escuta apenas em
localhost; defina LAIN_BIND_ADDR=0.0.0.0 (com LAIN_API_KEYS=key1,…)
para expô-lo na rede. A federação adiciona
busca em toda a organização e consultas de raio de explosão entre repositórios. O
guia de federação cobre configuração, tipos de origem e
estados de falha. Após uma atualização do esquema de federação, execute lain reindex para
reconstruir o grafo em disco a partir das origens.
Verifique o grafo
A partir de um checkout de origem:
scripts/demo.sh --quick
O script cria um pequeno repositório com um grafo de chamadas conhecido, inicia um servidor Lain real e compara as respostas com esse grafo. Ele sai com código diferente de zero quando uma verificação falha. Uma execução completa também registra tempos em relação a este repositório.
O que Lain fornece
| Necessidade | Ferramenta ou recurso |
|---|---|
| Ver chamadores antes de alterar um símbolo | get_blast_radius, assess_change |
| Rastrear como duas funções se conectam | get_call_chain |
| Encontrar pontos de entrada arquiteturais | find_anchors, list_entry_points |
| Buscar por nome ou significado | find_symbol, search_code |
| Seguir um símbolo entre repositórios | get_cross_repo_blast_radius, search_org |
| Impedir que agentes editem o mesmo código às cegas | intenções, presença e reivindicações de arquivos consultivas |
A análise estática não pode provar toda chamada dinâmica através de um barramento de mensagens, contêiner
de injeção de dependência ou roteador reflexivo. explain_dispatch combina chamadores
estáticos com correspondências de convenção, rastreamentos de tempo de execução e evidências de co-alteração do Git; um
resultado vazio se torna insufficient_evidence, não uma afirmação de que a edição é segura.
Documentação
| Comece aqui | Cobre |
|---|---|
| Quickstart | Instalação, primeira consulta e primeiros socorros |
| Manual do usuário | Referência de CLI, ajuste, operação e solução de problemas |
| Guia de ferramentas | Ferramentas MCP, argumentos, saídas e limites |
| Pacote de habilidades | Habilidades carregáveis por agentes e receitas de papéis |
| Federação | Configuração e consultas de múltiplos repositórios |
| Multijogador | Presença de agentes, intenções, reivindicações e ganchos |
| Arquitetura | Construção do grafo e escolhas de design |
| Índice de documentação | Todo documento mantido |
Status do projeto
Licença
MIT — Copyright (c) 2026 spuentesp