mcpField
L
Lain Mcp

Lain Mcp

本地服务
github.com/spuentesp开发工具91 天前更新

关于 Lain Mcp

Lain 为编码 Agent 构建并查询代码图,适用于需要了解代码调用关系和变更影响的开发者。它通过 MCP 提供符号、调用链、依赖及 Git 协同变更信息;图谱保存在本地,语义搜索为可选功能。

主要功能

  1. 01构建符号、调用者和依赖关系图
  2. 02查询调用链、变更影响和架构入口
  3. 03利用 Git 提交协同变更信息
  4. 04支持跨仓库搜索与影响分析
  5. 05通过 intents、presence 和文件声明协调 Agent

适用场景

  1. 01修改函数前检查潜在影响范围
  2. 02追踪两个函数之间的调用路径
  3. 03查找经常随某文件共同变更的文件
  4. 04查看其他 Agent 是否正在处理相同代码

MCP 相关

Lain 通过 MCP 将本地代码图查询工具提供给编码 Agent,包括符号搜索、调用链、变更影响和跨仓库查询。它通过 stdio 服务仓库索引。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"lain": {
"command": "npx",
"args": [
"-y",
"@spuentesp/lain-mcp"
]
}
}
}
启动命令npx -y @spuentesp/lain-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@spuentesp/lain-mcp0.10.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Lain

面向编码 Agent 的代码图谱。 Lain 会映射调用方、依赖项、符号和 Git 协同变更,然后通过模型上下文协议(MCP)提供这些信息。Agent 修改函数前,可以先检查哪些内容依赖它,以及代码的其他部分如何调用它。

Lain Command Center 演示

此演示会跨 bytes 和 tokio 仓库追踪一个符号。Agent 通过 MCP 查询同一张图谱;浏览器则展示 Lain 编入索引的内容,以及答案的来源。

向你的 Agent 提问:

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 会根据本地索引,使用符号名称和源代码路径作答。索引会在运行之间保留在磁盘上,也可以涵盖多个仓库。它追踪的是提交,而非未提交的编辑:提交后,重新索引(lain reindex 或启动新会话)即可更新索引;如果答案可能遗漏近期工作,Lain 会明确说明,而不是保持沉默。语义搜索是可选的;无需嵌入模型也能查询图谱。

安装

使用发行版安装程序:

curl -fsSL https://raw.githubusercontent.com/spuentesp/lain/main/install.sh | bash
source ~/.zshrc   # or ~/.bashrc
lain --version

或通过 npm 安装(macOS、Linux 和 x64 Windows):

npm install -g @spuentesp/lain-mcp
lain --version

关于 npm 的两点说明:

  • 如果 npm 的全局 bin 目录中已有无关的 lain 文件,npm install -g 会因 EEXIST 失败。例如,当 npm 前缀为 ~/.local 时,~/.local/bin 中可能有旧的手动副本。npm 错误本身无法判断该文件是否无关;请移动或删除该文件,或使用其他前缀安装: npm install -g --prefix ~/.local/lain-npm @spuentesp/lain-mcp(然后将 ~/.local/lain-npm/bin 添加到 PATH)。
  • 如果禁用了 npm 安装脚本(使用了 --ignore-scripts,或在受限的 CI 环境中),安装期间不会获取平台二进制文件。首次运行 lain 时会下载并验证该文件,因此首次运行需要网络连接;缓存后,lain 即可离线运行。

仅从源代码构建时才需要 Rust 1.89 或更高版本。快速入门介绍了非交互式安装和可选的本地嵌入模型。

连接 Agent

在你希望 Lain 编入索引的仓库中,运行一条设置命令:

lain setup --agent claude-code
lain setup --agent codex
lain setup --agent cursor
lain setup --agent vscode
lain setup --agent continue

对于其他 MCP 主机,请使用 lain setup --agent generic。每个适配器都会写入客户端自己的配置:Claude Code 使用 claude mcp add,Codex 使用 ~/.codex/config.toml,Cursor 使用 ~/.cursor/mcp.json,VS Code 使用 .vscode/mcp.json(或用户级 mcp.json),Continue 则使用仓库 .continue/mcpServers/ 下的区块文件。generic 会写入此项目级 .mcp.json:

{
  "mcpServers": {
    "lain": {
      "command": "/home/you/.local/lain/lain",
      "args": ["mcp"]
    }
  }
}

command 始终是运行设置命令的 lain 二进制文件的绝对路径,而非单独的名称,因此无论 Agent 继承哪个 PATH,都会运行同一个二进制文件。该路径取决于安装方式:发行版安装程序会将二进制文件放在 ~/.local/lain/lain,而 npm 包会注册它启动的、经过验证的缓存二进制文件(Linux 上为 ~/.cache/lain/<version>/<target>/lain,macOS 上为 ~/Library/Caches/lain/…,Windows 上为 %LOCALAPPDATA%\lain\Cache\…)。设置完成后,会恰好启动该命令一次,并验证 MCP 握手。

在终端中,不带 --agent 运行 lain setup 时,会询问要配置哪个客户端(按 Enter 键选择 Claude Code);不带 --lsp 时,会询问要安装哪些可选语言服务器(按 Enter 键表示不安装)。非交互式运行默认使用 generic,且不安装语言服务器,因此脚本应明确传入 --agent 和 --lsp。

设置完成后,重启 Agent。Lain 会从 Agent 的工作目录向上查找 .git,构建 .lain/graph.bin,并通过 stdio 提供仓库服务。只有一个仓库时,无需 repos.yaml。

语言

Rust、Python、TypeScript、JavaScript、Go、Java、C、C++、C#、Ruby、 Swift、Kotlin、Scala 和 PHP 的解析器都内置于二进制文件中,Vue 和 Svelte 组件的 <script> 代码块也不例外。每种语言都能生成定义和调用图,无需安装其他任何内容。

语言服务器是可选的,只能提升精度。lain setup 会列出检测到的语言,并询问要安装哪些服务器;按 Enter 键则不安装任何服务器。非交互式运行时不会安装任何服务器,除非你指定:

lain setup --lsp python,go      # just these
lain setup --lsp detected       # every missing one for this repository
lain setup --lsp none

首次查询

向已连接的 Agent 提问:

Use Lain to show the blast radius of validate_token.

也可以在终端中调用同一个工具:

lain oneshot get_blast_radius validate_token

请用仓库中的符号替换 validate_token。如果图尚未就绪,或者答案看起来已过时,请运行 lain doctor。

多个仓库

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

打开 http://localhost:9999 访问 Command Center。服务器仅监听 localhost;设置 LAIN_BIND_ADDR=0.0.0.0(并设置 LAIN_API_KEYS=key1,…)即可在网络中公开访问。联邦功能支持组织范围的搜索和跨仓库影响范围查询。联邦指南介绍了配置、来源类型和故障状态。联邦架构升级后,运行 lain reindex,从来源重建磁盘上的图。

检查图

在源代码检出目录中:

scripts/demo.sh --quick

该脚本会创建一个调用图已知的小型仓库,启动真实的 Lain 服务器,并将答案与该调用图进行比较。检查失败时,脚本会以非零状态码退出。完整运行还会记录针对当前仓库的耗时。

Lain 提供的功能

需求工具或功能
修改符号前查看调用方get_blast_radius、assess_change
追踪两个函数之间的连接路径get_call_chain
查找架构入口点find_anchors、list_entry_points
按名称或含义搜索find_symbol、search_code
跨仓库追踪符号get_cross_repo_blast_radius、search_org
避免 Agent 在不了解情况时同时编辑同一段代码意图、状态信息和建议性文件声明

静态分析无法证明每个通过消息总线、依赖注入容器或反射式路由器触发的动态调用。explain_dispatch 会结合静态调用方、约定匹配、运行时追踪和 Git 联合变更证据;结果为空时会标记为 insufficient_evidence,而不会声称编辑是安全的。

文档

从这里开始内容
快速入门安装、首次查询和故障排查
用户手册CLI 参考、调优、操作和故障排查
工具指南MCP 工具、参数、输出和限制
技能包可由 Agent 加载的技能和角色配方
联邦多仓库配置和查询
多人协作Agent 状态、意图、声明和钩子
架构图的构建和设计选择
文档索引所有维护中的文档

项目状态

CI SafeSkill OpenSSF Scorecard OpenSSF Best Practices SBOM Build Provenance

许可证

MIT — 版权所有 (c) 2026 spuentesp

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。