RepoContext について
RepoContextは、提供されたREADMEではGitPinに改名された、コーディングエージェント向けの読み取り専用MCPサーバーです。リポジトリの証拠をコミット済みGitの行に結び付け、引用箇所とハッシュを検証しますが、主張の真偽はレビュアーに委ねます。
主な機能
- 01リポジトリの文書とコードを検索
- 02行単位の証拠パックを作成
- 03Git HEADに対して引用を検証
- 04変更ファイルの主張カバレッジを確認
- 05Gitオブジェクトへの読み取り専用アクセス
活用シーン
- 01エージェント作成のプルリクエスト証拠を確認
- 02変更の主張を裏付けるコミット済み行を検索
- 03変更ファイルの証拠カバレッジを確認
MCP 対応
ローカルMCPサーバーが、MCPクライアント向けに読み取り専用のリポジトリ検索、証拠作成、検証ツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
重要
2026-10-15 にアーカイブされました。 決定論的なエージェント制御のリファレンスアーキテクチャである Assay に置き換えられました。 理由:変更とその証拠マニフェストの両方を同じエージェントが作成するため、ゲートで証明できるのは網羅性とハッシュの固定であり、主張が真実かどうかではありません。Assay では、代わりに決定論的なコードに判断を委ねます。 最後のリリースである 0.6.4 は npm で引き続き利用できます。この README の残りの部分に変更はありません。
GitPin
エージェントが作成したプルリクエストは、マージ前に正確な証拠を提示する必要があります。
読み取り専用の PR ゲート兼ローカル MCP サーバーです。AI エージェントが変更について行うすべての主張を、誰でも通常の git だけで再確認できる、コミット済みの正確な行に結び付けます。
存在理由
コーディングエージェントは、自信に満ちた説明とともにプルリクエストを作成するようになりました。「リトライのログを追加」「プロトコルのドキュメントを更新」「ほかのファイルには手を加えていない」などです。こうした文の一つを信頼したいレビュー担当者は、ファイルを開いて該当行を探し、次の文についても同じ作業を繰り返さなければなりません。多くのレビュー担当者は確認をやめてしまい、エージェントが言及していないファイルを変更することもあります。
GitPin は説明を証拠に変えます。エージェントは小さなマニフェストをコミットします。このマニフェストでは、重要な主張ごとに対象となるパスを指定し、テキストの SHA-256 を付けた正確な行範囲を示します。必須チェックでは、このマニフェストを実際の差分と比較します。どの主張にもカバーされていない変更ファイルがあればビルドは失敗し、チェックを通過した主張は、GitPin もエージェントもホスト型プラットフォームも使わず、人間が git show で再確認できます。
クイックスタート:30 秒でゲートを実行
git clone https://github.com/shmindmaster/gitpin.git && cd gitpin
corepack enable && pnpm install --frozen-lockfile
pnpm demo:gate
demo:gate は GitPin をビルドし、一時フォルダーに使い捨ての合成リポジトリを作成して、実際の gitpin gate を 2 回実行します。エージェントの最初のコミットでは、docs/protocol.md を変更しますが、その変更について主張しないため、ゲートは終了コード 1 で失敗します。エージェントが証拠ロケーターを 1 つ(5 行目、ハッシュ付き)追加すると、同じゲートが終了コード 0 で通過します。
$ gitpin gate --base <base> --head <agent-commit>
status: failed exit code: 1
violation: uncovered-change: Changed path has no material claim: docs/protocol.md.
covered: synthetic-service/docs/overview.md:3 @ <agent-commit> (verified)
$ gitpin gate --base <base> --head <locator-commit>
status: ok exit code: 0
covered: synthetic-service/docs/overview.md:3 @ <locator-commit> (verified)
covered: synthetic-service/docs/protocol.md:5 @ <locator-commit> (verified)
一時フォルダーの外には何も書き込まれず、実行後にフォルダーは削除されます。
実際の動作を見る
リポジトリで使う
1. 信頼できるポリシーをデフォルトブランチにインストールします(別途レビュー済みの変更として行うため、プルリクエストが自分自身のゲートを弱めることはありません):
mkdir -p .gitpin
curl -fsSL https://raw.githubusercontent.com/shmindmaster/gitpin/v0.6.4/templates/gate.yml -o .gitpin/gate.yml
2. 必須チェックとして設定します:
name: Agent delivery assurance
on: pull_request # never pull_request_target
permissions:
contents: read
jobs:
evidence:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- uses: shmindmaster/gitpin@514799cb0eae55e965e51d510d5e7a0a7604c9cc # v0.6.4
with:
base-sha: ${{ github.event.pull_request.base.sha }}
head-sha: ${{ github.event.pull_request.head.sha }}
3. 各エージェントの PR で .gitpin/change-evidence.json をコミットします。templates/change-evidence.json をひな形として使用します。ルールセットを含むセットアップ全体については、docs/pr-evidence-gate.md をご覧ください。
エージェントにエビデンスツールを提供しましょう。 ローカルの MCP サーバーを使うと、Claude Code、Codex、Cursor、その他の MCP クライアントが候補を見つけ、ゲートがチェックするエビデンスパックを作成できます:
# Run inside any committed Git repository
npx -y [email protected] init --client codex # or claude-code, cursor, windsurf, zed, continue
init はリポジトリの外部に ~/.gitpin/repositories.yaml を書き込み、doctor を実行して、完全な SHA を含む最初のエビデンス行と、貼り付けてすぐ使える MCP 設定を出力します。登録するリポジトリは編集しません。
仕組み
flowchart LR
subgraph BASE["Trusted: base commit"]
POL[".gitpin/gate.yml<br/>policy"]
end
subgraph HEAD["Submitted: head commit"]
MAN[".gitpin/change-evidence.json<br/>claims → path, lines, sha256"]
end
DIFF["git diff merge-base..head<br/>the real change"]
POL --> GATE{"gitpin gate<br/>read-only, never runs PR code"}
MAN --> GATE
DIFF --> GATE
GATE -- "uncovered path, wrong hash,<br/>sensitive path" --> FAIL(["exit 1: check fails"])
GATE -- "every changed path covered,<br/>every slice re-hashed" --> PASS(["exit 0: report with full-SHA citations"])
PASS -.-> HUMAN(["Reviewer: git show <sha>:<path>"])
ゲートは、信頼できるベースコミットからポリシーを、ヘッドコミットからマニフェストを読み取ります。読み取りには git show を使い、作業ツリーからは読み取りません。マージベースとの差分を比較し、引用されたすべての行範囲を再ハッシュして、完全な SHA を含む引用付きのレポートを出力します。
MCP 側では、1 つのループに沿って処理します。検索は候補を返すだけで、答えは返しません。証明では、候補をエビデンスパックに変換します。検証では、git show を使って再チェックします:
pin.search_docs / pin.search_code candidates only, with a forced next step
→ pin.prove evidence pack: path, line, full SHA, content hash
→ pin.verify independent git show re-check, HEAD match report
→ you: git show <sha>:<path>
| 処理 | ツール(12 個、すべて読み取り専用) |
|---|---|
| 検出 | pin.catalog |
| 候補の検索 | pin.search_docs、pin.search_code |
| 証明 | pin.prove、pin.prove_set(引用 1~8 件)、pin.get_doc、pin.read |
| 検証 | pin.verify、pin.verify_set |
| 判断 | pin.analyze → EvidenceBrief(既知の事実、ギャップ、安定した evidenceSetId) |
| 調査と差分確認 | pin.inspect、pin.compare |
リソースは gitpin://catalog、プロンプトは prove-with-git-head です。引用形式については docs/cite-spec.md を、エージェントスキルのテンプレートについては templates/gitpin-skill.md をご覧ください。
ガードレールと対象外
- 常に読み取り専用です。 GitPin は、読み取るリポジトリに書き込み、コミット、プッシュを行いません。また、ゲートはプルリクエストのコードを実行しません。
- PR が自分自身のゲートを弱めることはできません。 ポリシーはベースコミットから取得し、エビデンスはヘッドコミットから取得します。汚れた作業ツリーは読み取りません。
- 未コミットの作業はエビデンスになりません。 汚れた内容と追跡されていない内容は、HEAD の引用から除外されます。
- 機密性の高いパスは機密として扱われます。 拒否ルールはエビデンスに適用され、マニフェスト自身を引用することはできません。
- 候補は主張ではありません。 検索結果には
evidence-candidatesとラベルが付き、pin.proveを通す必要があります。 - 埋め込みなし、データベースなし、再インデックスなし。 エビデンスは Git オブジェクトから取得するため、オフラインでもプライベートリポジトリでも動作します。
対象外:セマンティック検索、コードの作成やコミット、GitHub Issues や PR 自動化の置き換え、Git リポジトリではないフォルダーを 1 つのリポジトリとして扱うこと。
ステータスと制限
このソースツリーとパッケージ化されたドキュメントは、公開状況を断定することなく GitPin 0.6.4 について説明しています。各配布先の状況は個別に確認してください:npm、MCP Registry(io.github.shmindmaster/gitpin)、GitHub Releases。
Node 20 以降。サイト:shmindmaster.github.io/gitpin。
GitPin が検証するのは、網羅性、位置、リビジョン、コンテンツハッシュです。証明するのはコミットされた内容であり、主張の真偽ではありません。意味的な正しさ、実行時の動作、作成者、認可、コンプライアンスを立証するものではありません。その判断はレビュー担当者に委ねられます。レビュー担当者は、該当箇所を探し回る代わりに、引用された 1 行を確認できるようになります。予定されている作業については、ロードマップをご覧ください。
設定
| 変数 | 用途 |
|---|---|
GITPIN_REGISTRY | レジストリ YAML のパス(旧バージョンとの互換性のための別名:REPOCONTEXT_REGISTRY) |
GITPIN_MCP_TOKEN | HTTP ベアラートークン(旧バージョンとの互換性のための別名:REPOCONTEXT_MCP_TOKEN) |
GITPIN_ALLOWED_HOSTS | HTTP ホストの許可リスト(旧バージョンとの互換性のための別名:REPOCONTEXT_ALLOWED_HOSTS)。HOST がループバックアドレスでない場合は必須です |
HOST | HTTP のバインドアドレス。デフォルトは 127.0.0.1 です。Dockerfile.remote では 0.0.0.0 が設定されています |
デフォルトのレジストリ:~/.gitpin/repositories.yaml(旧バージョンとの互換性のため、存在する場合は ~/.repocontext/... にフォールバックします)。
以前は RepoContext 0.3.x でした。移行ガイドをご覧ください。
ドキュメント
ツール · PR エビデンスゲート · クライアント · アーキテクチャ · 比較 · FAQ · トラブルシューティング · ロードマップ · ガバナンス
貢献、セキュリティ、ライセンス
- 貢献: バグや提案については、まず issue を作成し、CONTRIBUTING.md に従ってください。初めての貢献に適した issue には、
good first issueのラベルが付いています。 プルリクエストを作成する前に、pnpm validate && pnpm build && pnpm verify:packageを実行してください。 - セキュリティ: 脆弱性は、SECURITY.md の説明に従い、 GitHub セキュリティアドバイザリを通じて非公開で報告してください。公開 issue は作成しないでください。
- ライセンス: MIT。
Sarosh Hussain が作成し、保守しています。関連するオープンソースプロジェクト:Assay は、エージェントの判断が副作用に影響しないようにします。CrewScore は、エージェントのプロンプトに安全策が明記されているかを確認します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。