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.

Lain Command Center demo

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

NecessidadeFerramenta ou recurso
Ver chamadores antes de alterar um símbologet_blast_radius, assess_change
Rastrear como duas funções se conectamget_call_chain
Encontrar pontos de entrada arquiteturaisfind_anchors, list_entry_points
Buscar por nome ou significadofind_symbol, search_code
Seguir um símbolo entre repositóriosget_cross_repo_blast_radius, search_org
Impedir que agentes editem o mesmo código às cegasintençõ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 aquiCobre
QuickstartInstalação, primeira consulta e primeiros socorros
Manual do usuárioReferência de CLI, ajuste, operação e solução de problemas
Guia de ferramentasFerramentas MCP, argumentos, saídas e limites
Pacote de habilidadesHabilidades carregáveis por agentes e receitas de papéis
FederaçãoConfiguração e consultas de múltiplos repositórios
MultijogadorPresença de agentes, intenções, reivindicações e ganchos
ArquiteturaConstrução do grafo e escolhas de design
Índice de documentaçãoTodo documento mantido

Status do projeto

CI SafeSkill OpenSSF Scorecard OpenSSF Best Practices SBOM Build Provenance

Licença

MIT — Copyright (c) 2026 spuentesp