mcpField
W
Weavatrix Git

Weavatrix Git

ローカル
github.com/sergii-ziborovバージョン管理08 週間前に更新

Weavatrix Git について

Weavatrix Gitは、AIコーディングエージェント向けの読み取り専用Git証拠エンジンで、Rustライブラリ、CLI、MCPサーバーとして利用できます。Gitを起動せず、リポジトリの保存データをプロセス内で解析し、範囲を制限した正確な情報を返します。

主な機能

  1. 01履歴、参照、状態、差分の読み取り
  2. 02不変なリビジョンスナップショットと作業ツリー安全性
  3. 03SHA-1とSHA-256リポジトリ対応
  4. 04オブジェクトと履歴の読み取り制限
  5. 05非UTF-8パスの正確なバイト列を保持

活用シーン

  1. 01Gitを起動せずにコミット履歴を確認
  2. 02追跡対象の変更と作業ツリー状態を確認
  3. 03リビジョンの不変なファイルマニフェストを取得

MCP 対応

MCPサーバーは、Gitの識別情報、履歴、差分、状態、スナップショット、作業ツリー安全性を調べる読み取り専用ツールを公開します。リスト応答はページ分割に対応し、切り詰めの有無を示します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"sergii-ziborov-weavatrix-git": {
"command": "npx",
"args": [
"-y",
"weavatrix-git"
]
}
}
}
起動コマンドnpx -y weavatrix-git

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

パッケージ
npmweavatrix-git0.3.1

ツール

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

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

詳細

Weavatrix Git

CI crates.io npm docs.rs MIT

Weavatrix エコシステムの一部です。AI ソフトウェアエージェント向けに、範囲を限定した Git の証拠を提供します。

weavatrix-git は、AI コーディングエージェントに高速で範囲を限定した読み取り専用の Git の証拠を提供します。 Rust クレート、CLI、MCP サーバー、npm パッケージは、いずれも同じ仕様です。 リポジトリのストレージを直接解析します。git サブプロセス、C ライブラリ、フック、フィルター、ネットワークアクセス、チェックアウト、変更はありません。いずれのインターフェースにも書き込み API はありません。

チェックイン済みの完全一致ベンチマークでは、ウォーム状態の履歴エントリー 1,000 件の処理時間は、Weavatrix が0.355 ms、gix が0.884 ms、libgit2 が1.552 msでした。8 つのリポジトリを対象に、測定した 5 つの p50 指標すべてで Weavatrix が最速でした。これらはリリースビルドでのエンジン測定値です。この結果に MCP トランスポートの処理時間は意図的に含めていません。

MCP サーバーを実行する

Rust ツールチェーンは必要ありません。

npx -y [email protected] --repository /absolute/path/to/repository

汎用 stdio クライアントの設定:

{
  "mcpServers": {
    "weavatrix-git": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]",
        "--repository",
        "/absolute/path/to/repository"
      ]
    }
  }
}

npm パッケージには、Windows x64、Linux x64 および ARM64、macOS x64 および ARM64 向けの検証済みネイティブバイナリが含まれています。Node は対応するバイナリを選択して起動するだけです。リポジトリの解析と MCP の処理は、安全な Rust のまま実行されます。

エージェント向けツール
MCP ツール返される証拠
git_headリポジトリの識別情報、ハッシュの種類、シンボリック HEAD、正確なターゲット ID、パック数
git_historyページ分割されたコミット ID、ツリー、親、署名、タイムスタンプ、概要
git_diffページ分割された追加/削除/変更/種類変更のパスと、旧/新オブジェクト ID
git_status追跡対象のインデックスとワークツリーの状態。未追跡ファイルは Repository::worktree_safety() で確認できます
git_snapshotリビジョンの正規化された不変のパス、モード、種類、オブジェクト ID のマニフェスト
git_worktree_safetyClean / IgnoredOnly / HasUntracked / DirtyTracked / Unknown。未追跡および無視対象の件数

すべてのリストツールは、nextCursor、正確なオブジェクト ID、truncated フラグを返します。 UTF-8 以外のパスは正確なバイト列を pathHex に保持します。表示用テキストを、正確な証拠であるかのように黙って提示することはありません。

実行時の制限

MCP バイナリは、制御された Tokio を使わないランタイムである mcport を使用します。

  • リクエストの上限は 256 KiB、レスポンスの上限は 1 MiB
  • 同時に処理できるハンドラーは 4 件。リクエストキューと出力キューには上限があります
  • ハンドラーの期限は 30 秒。協調的キャンセルのチェックに対応
  • パニックの分離と、レスポンスサイズ超過時のアトミックなエラー処理
  • Git オブジェクト、履歴、ツリー、ビットマップ、reflog、インデックスの読み取りに上限を設定
  • 進捗通知は任意。レスポンスのバッチ処理は設定可能

デフォルト値は、対話的な stdio 利用に適しています。--help で、バイト予算、同時実行数、キュー、期限、バッチサイズを変更するオプションを確認できます。サーバーは改行区切りの UTF-8 JSON-RPC のみを stdout に書き込み、診断情報は stderr に出力します。

Cargo によるネイティブインストールも利用できます。

cargo install weavatrix-git --version 0.3.3 --features mcp \
  --bin weavatrix-git-mcp
weavatrix-git-mcp --repository /absolute/path/to/repository

なぜ独立したクレートなのか?

スキャナーはファイルを検出し、コードグラフは関係性をモデル化します。このクレートはバージョン管理の証拠を担います。この境界を独立させることで、より大きな製品を取り込まずに、あらゆる Rust アプリケーションで Git の情報を再利用できます。

サポート対象の仕様

領域サポート内容
レイアウトworktree、bare、.git の間接参照、リンクされた worktree の commondir
ハッシュSHA-1 および SHA-256 のオブジェクト ID
参照loose、シンボリック、detached HEAD、packed refs、reflogs
オブジェクトcommit、tree、blob、注釈付き tag
loose ストレージこのクレートがデコードする、サイズ制限付きの zlib/DEFLATE
packed ストレージPACK v2/v3、index v2、OFS_DELTA、REF_DELTA
オブジェクト検索alternates、classic MIDX、キャッシュ、共有ゼロコピー・スナップショット
commit の高速化モノリシックおよび分割 commit-graph チェーン
パスの高速化変更パス Bloom フィルター v1/v2
到達可能性RIDX の順序付けを使用する pack および MIDX EWAH ビットマップ
indexDIRC v2/v3/v4、自動更新される共有スナップショット
クエリ型付き読み取り、遅延 revwalk、履歴、追跡対象のステータス、worktree の安全性、tree の差分
不変ビューパス、モード、オブジェクトの証拠を含む、正規化された commit スナップショット
スケールアウト並列オープン、リビジョン対応タイムライン、変更セット、相関
拡張順序付き、スレッドセーフ、読み取り専用のカスタム ODB バックエンド

すべての公開読み取りはインプロセスで行われます。ライブラリコードにはサブプロセスへのフォールバックはありません。 サポート対象外のデータには、近似値ではなく型付きエラーを返します。

Rust ライブラリ

use weavatrix_git::{PathBloom, Repository};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let repository = Repository::open(".")?;
    let head = repository.resolve("HEAD")?;

    for id in repository.revwalk().push_head()?.take(100) {
        println!("{}", id?);
    }

    if repository.commit_maybe_changed_path(head, b"src/lib.rs")?
        == Some(PathBloom::DefinitelyNot)
    {
        println!("the commit definitely did not change src/lib.rs");
    }

    if let Some(objects) = repository.bitmap_reachable(head)? {
        println!("{} reachable objects", objects.len());
    }
    Ok(())
}

カスタムストアにも、同じオブジェクト仕様を使用します。

use std::sync::Arc;
use weavatrix_git::{Limits, MemoryObjectBackend, Repository};

let backend = Arc::new(MemoryObjectBackend::default());
let repository =
    Repository::open_with_backends(".", Limits::default(), vec![backend])?;
# Ok::<_, weavatrix_git::GitError>(repository)

複数リポジトリの分析では、RepositorySet がオブジェクトストアを分離し、決定論的な逐次または並列の結果を返します。

use weavatrix_git::{HistoryOptions, RepositorySet};

let repositories = RepositorySet::open_parallel([
    ("service", "/code/service"),
    ("client", "/code/client"),
])?;
let histories =
    repositories.histories_from_parallel("HEAD", HistoryOptions::default())?;
let snapshots = repositories.snapshots_parallel("HEAD")?;
let timeline = repositories.timeline("HEAD", HistoryOptions::default())?;
let shared = repositories.shared_commits(HistoryOptions::default())?;
# Ok::<_, weavatrix_git::GitError>((histories, snapshots, timeline, shared))

診断用 CLI はライブラリを使用します。

weavatrix-git [-C repository] head
weavatrix-git [-C repository] log [revision] [max-count]
weavatrix-git [-C repository] cat <object>
weavatrix-git [-C repository] diff <old-commit> <new-commit>

アーキテクチャ

Repository
  +-- refs + reflog
  +-- commit-graph chain + changed-path Bloom
  +-- index -> tracked status
  +-- custom ODB backends
  +-- object directories + alternates
        +-- loose object -> bounded zlib
        +-- MIDX -> pack -> bounded delta chain
        +-- pack/MIDX bitmap -> reachable object IDs

Limits は、オブジェクトのバイト数、キャッシュのバイト数、delta/ref/tree の深さ、tree および index のエントリー数、reflog/履歴の長さ、親の数、ビットマップの展開を制限します。このクレートでは unsafe Rust を禁止しています。ライブラリのデフォルト機能セットは引き続き依存関係がなく、別個の mcp 機能を有効にした場合にのみ mcport が追加されます。

ソースツリーは、明確なモジュール境界に従っています。

レイヤー役割
modelオブジェクト ID、型付き Git オブジェクト、エラー、検証仕様
storageloose/pack/MIDX/commit-graph のデコード、サイズ制限付き inflate、キャッシュ
repositoryrefs、履歴、差分、ステータス、スナップショット、tree、revwalk
workspace決定論的な複数リポジトリのクエリと相関
mcpライブラリを介したオプションの読み取り専用プロトコルアダプター
facade / CLI安定した Rust エクスポートと診断コマンドのエントリーポイント

チェックイン済みの厳格なアーキテクチャ契約では、物理行数が 300 行を超えるファイル、物理行数が 100 行を超える関数、実行時の循環依存、foo.rs と foo/ のモジュール所有権の混在、プロトコル非依存ライブラリからオプションの MCP アダプターへの依存を拒否します。ベースラインも例外もありません。

正確性

テストスイートは実際の Git リポジトリを作成し、次の項目を検証します。

  • loose および積極的に pack された OFS/REF delta オブジェクト
  • SHA-1 および SHA-256 のリポジトリ
  • bare およびリンクされた worktree のレイアウト
  • classic MIDX の検索
  • 複数レイヤーの分割 commit-graph と変更パス Bloom の結果
  • pack および MIDX のビットマップによる到達可能性と git rev-list --objects の結果との照合
  • index v2 と v4、reflog の順序、revwalk の hide/reset、追跡対象のステータス
  • 決定論的な並列結果と複数リポジトリの結果
  • 不変のリビジョンスナップショット、統合タイムライン、一括変更セット
  • 悪意のある形式と設定済み制限によるエラー

現在のコアの行カバレッジは 85.27% です。CI は Linux、Windows、macOS で Rust 1.88 を実行し、警告をエラーとして扱う Clippy、カバレッジ、監査、ドキュメント、パッケージ検証を行います。

パフォーマンス

2026-07-27 の Windows でのリリース計測値です。すべての行で結果を生成し、計測前に識別子、パス、オブジェクトのバイト列、またはステータスが完全に一致することを検証しています。

完全一致を検証した操作weavatrix-git p50git.exe p50
6,000 オブジェクトのビットマップ到達可能性0.431 ms72.656 ms
1 エントリーのインデックス読み取り0.033 ms60.758 ms
変更のない追跡対象のステータス0.186 ms72.735 ms
キャッシュ済みコミットの検索0.001 ms65.267 ms
リポジトリを再利用した 1,000 コミットの履歴0.086 ms66.961 ms

同じパック済み 2,000 コミットのフィクスチャでのプロセス内直接比較:

完全一致を検証した操作Weavatrix p50gix 0.86 p50git2 0.21 p50
1,000 コミットの履歴、ウォーム状態0.355 ms0.884 ms1.552 ms
1,000 コミットの履歴、再オープン2.521 ms3.940 ms10.483 ms
キャッシュ済みオブジェクト 1,000 件の読み取り0.082 ms0.068 ms5.640 ms
履歴と生オブジェクト 1,000 件0.494 ms0.992 ms1.375 ms

別の 10,000 パスのインデックスでは、ウォーム状態での読み取りはそれぞれ 1.160/1.100/1.489 ms、再オープン時は 5.225/7.745/11.251 ms でした。ベンチマークではエンジンの実行順序を入れ替え、計測前に履歴 ID、生オブジェクトのバイト列、正規化されたインデックスパスが完全に一致することを検証しています。BENCHMARKS.md を参照してください。

8 つの独立したリポジトリで、選択された 8,000 件のコミットを対象にした場合、Weavatrix の計測値は、履歴のシリアル処理が 5.667 ms、並列処理が 4.080 ms、再オープンが 11.810 ms、共有コミットの関連付けが 4.148 ms、不変マニフェストが 1.736 ms でした。gix と libgit2 に対する 5 つすべての p50 契約で優位でした。事前に、リポジトリごとの履歴順序、共有ロケーション、パス、オブジェクト ID が完全に一致することを検証しています。

代替手段との位置付け

機能weavatrix-gitGit CLIgixlibgit2
プロセス内で動作はいいいえはいはい
安全な純 Rust 実装はいいいえはいいいえ、C コア
クレートの依存関係なし該当なし多数のモジュラークレートネイティブライブラリ
オブジェクト/デルタキャッシュはいはいはいはい
MIDX と到達可能性ビットマップの読み取りはいはいはいはい
分割コミットグラフとパス Bloom の読み取りはいはいはいコミットグラフ
カスタム読み取り専用 ODBはい該当なしストア抽象化はい
遅延 revwalk、reflog、インデックス、追跡対象のステータスはいはいはいはい
リポジトリ横断の証拠クエリを標準機能として提供はいアプリケーションコードアプリケーションコードアプリケーションコード
正規化された不変コミットマニフェストはいアプリケーションコードトラバーサル APIツリーウォーク API
ネットワークと変更操作いいえはいはいはい

意図的に対象外としている機能は、パックインデックス v1、reftable、増分 MIDX チェーン、分割/スパースインデックス拡張、浅いクローンと置換オブジェクトのセマンティクス、リビジョン式の文法、未追跡ファイル/無視ルール/フィルターを考慮したステータス、サブモジュールのワークツリーステータス、ネットワーク操作、変更操作です。

完全なクライアントが必要な場合は、Git、gix、または libgit2 を使用してください。対象範囲を限定したローカルの証拠、小さな監査対象、決定論的な読み取り、依存関係ゼロが重要な場合は、このクレートを使用してください。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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