mcpField
L
Lain Mcp

Lain Mcp

ローカル
github.com/spuentesp開発ツール91 日前に更新

Lain Mcp について

Lainはコーディングエージェント向けにコードグラフを構築・検索し、開発者が呼び出し関係や変更の影響を把握できるようにします。MCP経由でシンボル、呼び出し経路、依存関係、Gitの同時変更情報を提供し、グラフはローカルに保存されます。セマンティック検索は任意です。

主な機能

  1. 01シンボル、呼び出し元、依存関係のグラフを構築
  2. 02呼び出し経路、変更影響、アーキテクチャの入口を検索
  3. 03Gitコミットの同時変更情報を利用
  4. 04リポジトリ横断の検索と影響分析に対応
  5. 05intents、presence、ファイルクレームでエージェントを調整

活用シーン

  1. 01関数を変更する前に影響範囲を確認
  2. 022つの関数間の呼び出し経路を追跡
  3. 03特定ファイルと一緒に変更されやすいファイルを特定
  4. 04別のエージェントが同じコードを編集中か確認

MCP 対応

MCP経由で、シンボル検索、呼び出し経路、変更影響、リポジトリ横断検索などのローカルコードグラフツールをコーディングエージェントに提供します。リポジトリのインデックスを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

コーディングエージェント向けのコードグラフ。 Lain は呼び出し元、依存関係、シンボル、Git の同時変更をマッピングし、それらを Model Context Protocol(MCP)経由で公開します。エージェントは関数を編集する前に、その関数に依存するものや、コードベース内のほかの部分からそこに至る経路を確認できます。

Lain コマンドセンターのデモ

このデモでは、bytes と tokio のリポジトリをまたいでシンボルを追跡します。エージェントは MCP 経由で同じグラフを検索し、ブラウザーでは Lain がインデックス化した内容と、回答の根拠を確認できます。

エージェントに質問してみましょう。

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 または新しいセッション)を行うと最新の状態になり、最近の作業を見落とす可能性がある回答では、その旨が示されます。セマンティック検索は任意で、埋め込みモデルがなくてもグラフクエリを利用できます。

インストール

リリースインストーラーを使用する場合:

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 に関する注意点は 2 つあります。

  • 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 以降が必要です。クイックスタートでは、非対話型インストールと、任意のローカル埋め込みモデルについて説明しています。

エージェントを接続する

Lain にインデックス化させたいリポジトリで、セットアップコマンドを 1 つ実行します。

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 バイナリの絶対パスが常に設定されます。単なる名前ではないため、エージェントは引き継ぐ 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 を明示的に指定してください。

セットアップ後にエージェントを再起動します。Lain はエージェントの作業ディレクトリから上位にたどって .git を探し、.lain/graph.bin を構築して、リポジトリを stdio 経由で提供します。リポジトリが 1 つの場合、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

最初のクエリ

接続されたエージェントに尋ねます。

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 にアクセスします。サーバーは 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
2 つの関数のつながりをたどるget_call_chain
アーキテクチャ上のエントリーポイントを見つけるfind_anchors、list_entry_points
名前または意味から検索するfind_symbol、search_code
リポジトリをまたいでシンボルを追跡するget_cross_repo_blast_radius、search_org
エージェントが同じコードを把握せずに編集するのを防ぐintents、presence、advisory file claims

静的解析では、メッセージバス、依存性注入コンテナー、リフレクティブなルーターを介した 動的呼び出しをすべて証明することはできません。explain_dispatch は静的な呼び出し元と 規約に基づく一致、ランタイムトレース、Git の同時変更に関する証拠を組み合わせます。 結果が空の場合は、編集が安全だと主張するのではなく、insufficient_evidence になります。

ドキュメント

まずはこちら内容
クイックスタートインストール、最初のクエリ、初期対応
ユーザーマニュアルCLI リファレンス、調整、運用、トラブルシューティング
ツールガイドMCP ツール、引数、出力、制限事項
スキルバンドルエージェントに読み込ませるスキルと役割別レシピ
フェデレーション複数リポジトリの設定とクエリ
マルチプレイヤーエージェントのプレゼンス、インテント、クレーム、フック
アーキテクチャグラフの構築と設計上の選択
ドキュメント一覧メンテナンス対象のすべてのドキュメント

プロジェクトのステータス

CI SafeSkill OpenSSF Scorecard OpenSSF Best Practices SBOM Build Provenance

ライセンス

MIT — Copyright (c) 2026 spuentesp

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。