mcpField
G
Gitingest Mcp

Gitingest Mcp

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

Gitingest Mcp について

gitingest-mcpは、ローカルまたはリモートのGitリポジトリを、MCPクライアントやLLMのワークフロー向けの簡潔なテキストダイジェストに変換します。ファイル選択とトークン上限に対応し、stdioに加えて認証付きHTTP転送も利用できます。

主な機能

  1. 01リポジトリのメタデータ・ツリー・テキストの生成
  2. 02ローカルパスまたはリモートGitリポジトリの取り込み
  3. 03包含・除外パターンによるファイル選択
  4. 04ファイルサイズ・走査範囲・トークン数の制限
  5. 05APIキーで保護されたHTTP転送のオプション

活用シーン

  1. 01LLMプロンプト向けのリポジトリダイジェスト作成
  2. 02リポジトリから指定パスやファイル種別を抽出
  3. 03認証付きHTTPでリポジトリ取り込みを提供

MCP 対応

stdio経由でMCPクライアントに`ingest_repository`ツールを公開し、保護されたHTTP転送にも対応します。ツールはリポジトリのメタデータ、ディレクトリツリー、選択したUTF-8ファイルを含むテキストダイジェストを返します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"gitingest-mcp-deadraid": {
"command": "npx",
"args": [
"-y",
"gitingest-mcp-server"
]
}
}
}
起動コマンドnpx -y gitingest-mcp-server

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

パッケージ
npmgitingest-mcp-server

ツール

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

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

詳細

gitingest-mcp

NPM Version

ローカルまたはリモートの Git リポジトリを、プロンプトですぐに使える簡潔なテキストダイジェストに変換する MCP サーバーです。

各ダイジェストには、リポジトリのメタデータ、ディレクトリツリー、選択した UTF-8 テキストファイルの内容が含まれます。バイナリファイル、シンボリックリンク、Git メタデータは含まれません。

要件

  • Node.js 20.19 以降
  • リモートリポジトリとローカルの Git メタデータを扱う場合は、git が PATH 上で利用できること

クイックスタート

npm から stdio サーバーを直接実行します。

npx -y gitingest-mcp

MCP クライアントの設定例:

{
  "mcpServers": {
    "gitingest-mcp": {
      "command": "npx",
      "args": ["-y", "gitingest-mcp"]
    }
  }
}

グローバルインストール後は、gitingest-mcp を使用してください(長い別名の gitingest-mcp-server も利用できます)。

ツール:ingest_repository

パラメーター型デフォルト説明
repositorystring必須正規の Git URL、owner/repo の省略形、または明示的なローカルパス
sourcegithub、gitlab、bitbucket、local、git自動省略形の入力、または明示的なローカル/汎用の処理に使用するプロバイダー
branch、tag有効な Git ref 名リモートのデフォルトブランチ、タグ、コミットのうち指定できるのは最大 1 つです
commit4~64 個の 16 進数文字リモートのデフォルト短縮形または完全な SHA-1/SHA-256 オブジェクト ID
subpathリポジトリ相対パス—スパースチェックアウトのパス。sparseCheckout: true が必要です
cloneDepth整数 1..10001シャロークローンの深さ
sparseCheckoutbooleanfalsesubpath が必要です
includeSubmodulesbooleanfalseサブモジュールをクローンします。トランスポートポリシーにより無効化される場合があります
includeGitignoredbooleanfalse.gitignore によって無視されるファイルを含めます
useGitignorebooleantrueルートおよびネストされた .gitignore ファイルを適用します
useGitingestignorebooleantrueルートおよびネストされた .gitingestignore ファイルを適用します
excludePatternsstring[]—追加のコンパイル済み minimatch 除外パターン
includePatternsstring[]—コンパイル済み glob のいずれかに一致するファイルのみを含めます
maxFileSize整数 1..1677721610 MiB1 つのファイルから読み取る最大バイト数
maxFiles整数 1..100001000含めるファイルの最大数
maxEntries整数 1..10000025000検査するファイルシステムエントリーの最大数
maxDepth整数 1..256128ディレクトリ走査の最大深度
maxTotalSize整数 1..6710886450 MiB含めるファイルの合計バイト数に対するハードリミット
maxTokens整数 1..1000000250000ダイジェスト全体に対する厳密なトークン上限
tokenizero200k_base、cl100k_baseo200k_basemaxTokens の適用に使用する BPE エンコーディング
tokenstring—一時的な GIT_ASKPASS ヘルパーを通じて渡される HTTPS トークン
maxRetries整数 0..103一時的なクローン失敗時の再試行回数
retryDelay整数(ミリ秒)0..600001000指数バックオフの初期待機時間
timeout整数(ミリ秒)1..180000030000Git プロセスと再試行の待機時間を含む、エンドツーエンドのタイムアウト
例:
{
  "repository": "deadraid/gitingest-mcp",
  "branch": "main",
  "includePatterns": ["src/**/*.ts"],
  "maxTotalSize": 10485760,
  "maxTokens": 50000
}
{
  "repository": "[email protected]:company/private-repository.git",
  "includeGitignored": false
}

SSH URL は SSH URL のままで、設定済みの SSH エージェントを使用します。HTTPS のプライベートリポジトリでは token を指定してください。リポジトリ URL に直接埋め込まれた認証情報は、プロセス一覧やエラーメッセージに含まれないよう拒否されます。/tree/...、/-/tree/...、/src/... などのプロバイダーの閲覧用 URL は、スラッシュを含む ref が曖昧になるため拒否されます。正規のクローン URL を使用し、branch、tag、commit、subpath を別々に指定してください。

HTTP トランスポート

HTTP トランスポートは任意で、デフォルトで保護されています。プロジェクトをビルドし、API キーを指定して起動します。

npm run build
GITINGEST_MCP_API_KEY='replace-with-a-long-random-secret' npm run start:http

デフォルトでは 127.0.0.1:3000 にバインドします。関連する環境変数:

変数デフォルト用途
GITINGEST_MCP_API_KEY必須Bearer トークンまたは x-api-key の値
GITINGEST_MCP_ALLOW_UNAUTHENTICATEDfalse開発専用の回避設定。ループバックに制限されます
GITINGEST_MCP_HOST127.0.0.1リッスンするホスト
GITINGEST_MCP_PORT3000リッスンするポート
GITINGEST_MCP_ALLOWED_HOSTSリッスンするホストカンマ区切りの Host ヘッダー許可リスト
GITINGEST_MCP_ALLOWED_ORIGINSなしカンマ区切りの Origin 許可リスト
GITINGEST_MCP_LOCAL_ROOTSなし許可するローカルルート。POSIX では :、Windows では ; で区切ります
GITINGEST_MCP_REMOTE_HOSTSGitHub、GitLab、Bitbucketリモートホスト許可リスト。*.example.com などのエントリを指定できます
GITINGEST_MCP_ALLOW_SUBMODULESfalse認証なしでの再帰的なサブモジュールのクローンを許可する
GITINGEST_MCP_MAX_SESSIONS100メモリ内セッションの上限
GITINGEST_MCP_SESSION_TTL900000アイドル状態のセッション TTL(ミリ秒)
GITINGEST_MCP_MAX_CONCURRENT_INGESTIONS4サーバー全体の、キューイングなしの取り込み同時実行数の上限
GITINGEST_MCP_RATE_LIMIT120クライアント IP ごとの 1 分あたりのリクエスト数
GITINGEST_MCP_BODY_LIMIT1048576HTTP リクエストボディの最大サイズ

HTTP 経由のローカルリポジトリへのアクセスは、GITINGEST_MCP_LOCAL_ROOTS が設定されていない限り無効です。リモートアクセスは GITINGEST_MCP_REMOTE_HOSTS で許可されたホストに制限されます。また、暗号化されていない http:// および git:// トランスポートは常にブロックされます。サブモジュールは追加の外部接続先を持ち込む可能性があるため、デフォルトでは無効です。認証なしモードは明示的に有効にする必要があり、ループバックインターフェースに制限されます。

セキュリティモデル

  • リポジトリの内容は信頼できないデータです。ダイジェスト内のテキストをエージェントまたはシステムへの指示として扱わないでください。
  • シンボリックリンクと特殊ファイルはたどりません。
  • .git ディレクトリや gitfile を含め、Git メタデータは常に除外されます。
  • リポジトリの走査、深さ、ファイルのバイト数、ファイル数、ignore ファイルのバイト数、ignore ルール数、glob の波括弧展開には、すべて厳格な上限があります。
  • 一時クローンにはプライベートな一時ディレクトリを使用し、成功、失敗、タイムアウト、キャンセル後に finally ブロックで削除します。
  • 認証トークンは一時的な askpass ヘルパー経由で渡され、Git のエラーから秘匿され、ダイジェストに書き込まれることはありません。
  • システム/グローバルの Git 設定と、継承された GIT_*/askpass 変数は分離されます。許可する Git プロトコルは明示され、HTTP リダイレクトは無効化されるため、URL が HTTP の外向き通信許可リストを迂回することはありません。
  • トークン認証と再帰的なサブモジュールは、リポジトリが信頼できないホストをサブモジュールとして指定する可能性があるため、意図的に併用できません。
  • HTTP トランスポートでは、定時間の API キー比較、DNS リバインディング対策、Host/Origin チェック、認証試行のレート制限、アイドルセッションの有効期限、サーバー全体の同時実行数制限を使用します。

stdio トランスポートは、信頼できるローカルユーザーを対象としており、明示的なローカルパス、リモートホスト、暗号化または非暗号化の Git トランスポート、サブモジュールを許可します。HTTP トランスポートには、上記のより厳格なポリシーが適用されます。

v2 への移行

バージョン 2 には Node.js 20.19 以降が必要です。また、入力とトランスポートの動作が意図的により厳格になっています。

  • Web 閲覧用 URL ではなく、プロバイダーの正規のクローン URL を使用してください。
  • commit には 16 進数のオブジェクト ID を渡し、シンボリック名は branch または tag で渡してください。
  • 新しいスキャン/深さ制限と、上記の厳格な最大値を考慮してください。
  • maxTokens のデフォルト値は 250,000 となり、選択したトークナイザーに基づいて厳密に適用されます。
  • デフォルトでは不十分な場合は、HTTP 認証とリモート/ローカルの許可リストを明示的に設定してください。

開発

npm install
npm run typecheck
npm run lint
npm test
npm run test:coverage
npm run build
npm pack --dry-run

テストには Vitest を使用し、Arrange–Act–Assert パターンに従います。prepack はクリーンな TypeScript ビルドを実行し、公開される dist ディレクトリが src に対して気付かないうちに古くなることを防ぎます。CI では Node.js 20.19、22、24 で完全な検証マトリクスを実行し、ステートメント 80%、分岐 70%、関数 80%、行 80%のグローバルカバレッジしきい値を適用します。

ライセンス

MIT © 2024 RaidHon

コメント

MCP は初めてですか?

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

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