MCP

MCP Git Ingest:GitHub リポジトリのディレクトリ木と重要ファイルを読む

MCP クライアントで先に GitHub リポジトリのディレクトリを見、指定した重要ファイルを抜きたい人向け。各照会はリポジトリ URL に基づきこのマシンの一時ディレクトリへクローンする。

公式ソース · MCP Git Ingest

インストール

uvx --from git+https://github.com/adhikasp/mcp-git-ingest mcp-git-ingest

誰向けか

MCP クライアントに GitHub リポジトリのディレクトリ木を先に見せ、いくつかの重要ファイルを読ませたいが、手でクローンしてディレクトリを辿りたくないなら、このサービスが合う。公開するツールは2つ。github_directory_structure は木状ディレクトリを返し、github_read_important_files は指定ファイルの内容を読む。実装は GitPython でリポジトリ URL のハッシュから決定的な一時ディレクトリを作る。既にクローン済みなら再利用し、そうでなければ clone を実行する。公開リポジトリの構造把握と重要ファイル照合に合う。未許可でプライベートリポジトリを引くのには合わず、完全な git 作業領域としても合わない。クローンとファイル読みはこのマシンで起きる。これは「ネットワーク無し、ローカル読み取り無し、プライバシー境界無し」ではない。

3分で最初の試行

公式の主経路は uvx で Git リポジトリから直接実行する。実行時は Python 3.8+ が要り、fastmcp と gitpython に依存する。クライアントではコマンドをこう書く:

uvx --from git+https://github.com/adhikasp/mcp-git-ingest  mcp-git-ingest

接続後、低リスクな呼び出しを1回。公式リポジトリ自身に github_directory_structure を使い、リポジトリ住所は https://github.com/adhikasp/mcp-git-ingest 証拠はこのツールが木状ディレクトリを返すと書くが、パラメータ名は無い。クライアントが repo_url を求めるなら、上の既出住所を入れ、ブランチや token パラメータを作らない。成功の合図はディレクトリ木を見ることであり、ファイルが書き換えられたことではない。今回は GitHub に届き、ハッシュ名の一時ディレクトリにクローンを残す。要約は処理後に掃除すると書くが、証拠は掃除のタイミングと失敗残留を書いていない。一時ディレクトリを起こり得る副作用として扱う。読み取り専用ツールはゼロリスクではない。

利用事例

事例1: 先にディレクトリ木を見る。知らない公開リポジトリでは先に github_directory_structure を呼ぶ。証拠は木状表現を返すことだけ保証する。深さ制限、無視規則、サブモジュール動作は書いていない。欠けていれば完全木またはクライアントの切り詰めを受け入れ、.gitignore パラメータを作らない。

事例2: 重要ファイルを読む。パスが分かったら github_read_important_files で指定ファイルを読む。同じクローン論理を再び使う。証拠は「重要」の既定一覧を書いておらず、パスはあなたが出す。先に README または短いテキストを選び、未知ファイルを大量に指定しない。体積上限も符号化処理も書いていない。巨大ファイルが完全に返るかは、既存説明の外。

利用上の境界

これはローカル stdio サービスであり、ホストされた読み取り専用ゲートウェイではない。Git 操作能力(GitPython)が無ければクローンできない。私有リポジトリの認証方法は証拠に無い。書いていない token 環境変数を既対応と思わない。clone_repo は実装説明に現れ、URL ハッシュで一時ディレクトリに落ちる。ディスクに副本が残らないとは仮定しない。2つのツール以外の git 書き込みは範囲外。プロジェクトページ: https://github.com/adhikasp/mcp-git-ingest 最初の試行は公式の uvx --from git+... コマンドだけにし、成功の合図を公式リポジトリのディレクトリ木を見ることとする。