mcpField
A
Alive2

Alive2

ローカル
github.com開発ツール01 週間前に更新

Alive2 について

Alive2 は、IR 最適化が動作を保つか確認したい LLVM 開発者向けの MCP サーバー兼 CLI です。公開 Alive2 サービスまたはローカルの `alive-tv` で変換を検証し、共有リンクの作成や読み込みも行えます。

主な機能

  1. 01LLVM IR の精緻化を検証
  2. 02パッチ版または上流の `opt` でパスを実行
  3. 03判定結果と反例を返却
  4. 04Alive2 リンクの作成と読み込み
  5. 05IR テキストまたはファイルパスを受け付け

活用シーン

  1. 01マージ前に LLVM 最適化を確認
  2. 02パッチ版 `opt` と trunk LLVM を比較
  3. 03共有された Alive2 検証を表示または再実行

MCP 対応

MCP サーバーは検証とリンク管理のツールを MCP クライアントに公開します。既定では alive2.llvm.org の公開インスタンスを使い、ローカルの `alive-tv` も設定できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"phongndo-alive2": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/phongndo/alive2-mcp:0.1.2"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/phongndo/alive2-mcp:0.1.2

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/phongndo/alive2-mcp:0.1.2

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

alive2-mcp

Alive2 を使って LLVM IR の変換をチェックする MCP サーバーと CLI です。エージェントが最適化の正しさを証明または反証したり、パッチを適用した opt を trunk と比較したり、LLVM の Issue や PR で使われる alive2.llvm.org/ce/z/... リンクを読み取ったり作成したりできます。

デフォルトでは公開インスタンスの alive2.llvm.org に接続し、ローカルに alive-tv がある場合はそちらに接続します。ランタイム依存関係のない単一の静的 Go バイナリです。

ツール

ツール機能アノテーション
verify関数ごとに、tgt が src を細分化しているかをチェックします。tgt は直接指定するか、passes からお使いの opt または trunk LLVM(opt: "upstream")で生成します。各判定と、正しくない場合は Alive2 の反例を返します。読み取り専用
create_linkチェック結果を短縮リンクとして公開し、送信した IR と一致することを確認するために読み戻します。追加、冪等
get_link短縮リンクから IR とオプションを読み取り、任意で再実行します。読み取り専用

判定結果は correct、incorrect、unknown(タイムアウトまたは近似)および error です。 入力にはテキスト形式の IR(src、tgt)またはパス(src_file、tgt_file)を指定できるため、エージェントが大きなモジュールを貼り付ける必要はありません。結果は構造化コンテンツとして返されます。

インストール

方法実行コマンド
Homebrew(macOS、Linux)brew install phongndo/tap/alive2-mcp
misemise use -g github:phongndo/alive2-mcp
Gogo install github.com/phongndo/alive2-mcp@latest
Nixnix profile add github:phongndo/alive2-mcp
Dockerdocker pull ghcr.io/phongndo/alive2-mcp
ダウンロードリリースページにある Linux、macOS、Windows 用アーカイブ

MCP Registry にも io.github.phongndo/alive2-mcp として掲載されています。リリースアーカイブにはビルド来歴が含まれています。次のコマンドで検証できます。 gh attestation verify <archive> --repo phongndo/alive2-mcp

使用方法

Claude Code
claude mcp add alive2 -- alive2-mcp -opt /path/to/build/bin/opt

または、プロジェクトの .mcp.json に記述します。

{
  "mcpServers": {
    "alive2": { "command": "alive2-mcp", "args": ["-opt", "build/bin/opt"] }
  }
}
Codex
codex mcp add alive2 -- alive2-mcp -opt /path/to/build/bin/opt
インストールせずに使用する

このイメージは stdio 経由でサーバーを実行します。ローカルファイルや opt にはアクセスできないため、IR をテキストとして渡し、opt: "upstream" を指定します。

{
  "mcpServers": {
    "alive2": { "command": "docker", "args": ["run", "-i", "--rm", "ghcr.io/phongndo/alive2-mcp"] }
  }
}
フラグ
フラグ環境変数意味
-opt PATHALIVE2_MCP_OPTpasses から tgt を生成する際のデフォルトの opt。通常はパッチを適用したビルドを指定します。指定しない場合、パスは upstream で実行されます。
-alive-tv PATHALIVE2_MCP_ALIVE_TVローカルの alive-tv。指定するとチェックはローカルで実行され、ネットワークは使用しません。
-web URLALIVE2_MCP_WEBAlive2 Compiler Explorer インスタンス(デフォルトは https://alive2.llvm.org/ce)。
-http ADDRstdio の代わりにステートレスなストリーミング可能 HTTP を提供します。
CLI

同じバイナリをシェルから実行できます。終了ステータスは、正しい場合は 0、それ以外は 1、エラーの場合は 2 です。そのため、スクリプトや git bisect run で利用できます。

alive2-mcp -opt build/bin/opt verify -passes gvn repro.ll   # your patch
alive2-mcp verify -opt upstream -passes gvn repro.ll        # trunk LLVM
alive2-mcp verify before.ll after.ll                        # two files, matched by name
alive2-mcp get-link -verify https://alive2.llvm.org/ce/z/_kCuTV
alive2-mcp link -function f before.ll after.ll              # publishes

仕組み

Alive2 のウェブサイトは、コンパイラとして alive-tv を実行する Compiler Explorer のインスタンスです。そのため、Compiler Explorer の API(/api/compiler/alive/compile、/shortener、/api/shortlinkinfo/<id>)を使用します。

ウェブサイトが比較するのは、@src と @tgt という名前の関数のみです。2 つのモジュールを指定した場合、両方に存在する関数をそれぞれ 1 つのモジュールに統合して名前を変更し、並行してチェックします。ターゲットの属性グループとメタデータは、ソース側と衝突しないように番号を振り直します。ローカルの alive-tv は両方のファイルを受け取り、関数の対応付けを自ら行います。

接続の切断、DNS タイムアウト、ゲートウェイエラーは、短いバックオフを挟んで 2 回再試行します。それ以外の HTTP エラーは、ただちに報告します。

制限事項

Alive2 は対象範囲と実行時間に制限があり、関数内での解析に限られます。ループは数回アンロールされ、他の関数の呼び出しは不透明として扱われるため、correct は証明ではなく、強い証拠です。ウェブサイトに送信した内容はすべて公開サーバーに送られ、create_link で作成した内容は永続的に保存されます。

開発

nix develop          # Go, gopls, golangci-lint, nixfmt
go test -race ./...  # unit tests against a fake Alive2 server
nix flake check      # build, tests, golangci-lint, formatting

CI では、Linux(x86-64 および ARM)と macOS で nix flake check を実行します。毎週、稼働中の alive2.llvm.org API を確認します。この API に変更があると、このツールが動作しなくなるためです。

リリースするには、VERSION を設定し、main に対応する vX.Y.Z タグをプッシュします。Release ワークフローでは、GoReleaser でアーカイブとイメージをビルドして証明書を付与し、Homebrew formula(phongndo/homebrew-tap が取り込みます)とともにリリースを公開し、MCP Registry にバージョンを登録します。CI では、プッシュのたびに同じビルドをドライランとして実行します。

ライセンス

MIT。詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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