CONTRI について
CONTRIは、コーディングエージェント向けの読み取り専用MCPサーバーで、貢献を始める前に公開GitHubのIssueやリポジトリを分析します。Issueの担当・着手状況、プロジェクトの活動、メンテナーの応答、貢献先の検索を、CONTRIブラウザー拡張と同じ判定ロジックで扱います。
主な機能
- 01Issueの担当者・着手表明・関連PRを確認
- 02最大10件のIssueを一括確認
- 03リポジトリの活動と応答時間を確認
- 04初心者向けIssueと活動中のプロジェクトを検索
- 05出典リンク付きの貢献ブリーフを作成
- 06レポートをキャッシュしGitHubの残りリクエスト数を表示
活用シーン
- 01Issueにすでに取り組んでいる人がいるか確認
- 02活動中のプロジェクトで初心者向けIssueを選定
- 03プロジェクトの活動状況とメンテナーの応答を評価
- 04貢献前にリポジトリのガイドを確認
MCP 対応
stdio経由で、読み取り専用のGitHub分析ツールとプロンプトをMCPクライアントに提供します。GitHub上の公開データのみを扱い、コメント、着手表明、プルリクエストは作成しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 5 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| force | boolean | いいえ | キャッシュをバイパスします(リクエスト数が増加します)。 |
| issue | string | はい | https://github.com/owner/name/issues/123 または owner/name#123 |
| detail | enum | いいえ | brief:判定 + URL(約 40 トークン);full:根拠を含むbrief | full |
| includeThread | boolean | いいえ | issue の本文と最近のコメントも返します(最大約 14k 文字)。 |
詳細
contri-mcp
AI コーディングエージェント向けの CONTRI です。 エージェントが GitHub の issue に取りかかる前に、CONTRI がブラウザー上で表示する情報を確認できます。すでに誰かが取り組んでいるか、プロジェクトが活発か、メンテナーから返信があるかをチェックできます。
- 作業の重複を防ぎます。 すでに誰かが担当を表明した issue に、エージェントがプルリクエストを作成するケースが増えています。
check_issueは、担当者、「これに取り組みたい」というコメント(および反応が途絶えた担当表明)、issue を参照するオープンなプルリクエストを見つけます。 - 拡張機能と同じ数値です。 サーバーは CONTRI 独自のレポートと判定ロジックを再利用するため、github.com のバッジと同じ結果を返します。
- 読み取り専用で、ローカルから公開データのみを扱います。 お使いのマシン上で stdio を介して動作し、
api.github.comとのみ通信します。コメント、担当表明、プルリクエストの作成は行いません。
ツール
| ツール | 回答する内容 | リクエスト数(サインイン済み/匿名) |
|---|---|---|
check_issue | この issue に取り組めますか? 空いているようです、@x が担当表明しています、担当表明後に反応がありません、オープンな PR #n、担当者あり… | 1~2 / 約4 |
check_issues | 1 回の呼び出しで最大 10 件の issue をまとめて確認します。デフォルトでは判定結果のみなので、候補の絞り込みを低コストで行えます | issue ごとに上記と同じ |
repo_health | 活発ですか? 過去 90 日間にマージされた PR(ボットを除く)、人間の作成者、マージまでの時間、リリース | 2 / 約7 |
team_responsiveness | 誰かが返信しますか? 外部からの PR と issue に対するチームの最初の返信、返信を待っている人、メンテナー | 2~3 / 約35 |
find_issues | 担当者のいない初心者向け issue。サインイン済みの場合は、すでにオープンな PR がその issue を参照しているかどうかも確認します | 3 / 2 |
discover_projects | 言語またはトピック別に、最近の人間によるマージ数と初心者向け issue をもとに順位付けした活発なプロジェクト | 1 / 約7 |
contribution_brief | 出典リンク付きの概要と、README、貢献ガイド、行動規範、テンプレート | 2~3 / 約5 |
プロンプト:find_first_issue(活発なプロジェクトと、誰も取り組んでいない issue を見つける)と can_i_take_this(issue を 1 件確認し、取り組み始める、先に確認する、別の issue を選ぶ、のどれがよいかを伝える)。
すべての結果には、サインイン状態と GitHub が示す残りのリクエスト数を含む github フィールドが付いています。これにより、エージェントはリクエスト数を見積もり、サインインを案内するタイミングを判断できます。レポートは拡張機能と同じ期間、メモリ内にキャッシュされます(issue の確認は 10 分、概要は 30 分、チームの応答状況は 6 時間)。
トークンの予算。 結果は余分な情報を含まないコンパクトな JSON です。check_issue の完全な結果は約 200~300 トークン、detail: "brief"(判定結果と URL)は約 40 トークンです。thread: "digest" は issue の先頭部分と直近 3 件のコメントを追加し、約 400 トークンになります(スレッド全体では約 3,500 トークンになる場合があります)。check_issues では、バッチ全体に対してフッターを 1 つだけ返します。数値は小数第 1 位に丸め、空のセクションは省略するため、取り組むべきかどうかだけを知りたいエージェントは、判定結果分をわずかに上回る程度のトークンで済みます。
セットアップ
サーバーの実行には Node.js 20.3 以降が必要です。npm では contri-mcp として公開されているため、クローンやビルドは不要です。
Claude Code
claude mcp add --transport stdio contri -- npx -y contri-mcp
Claude Desktop、Cursor、Windsurf および mcpServers 設定ファイルを使用するその他のクライアント
{
"mcpServers": {
"contri": {
"command": "npx",
"args": ["-y", "contri-mcp"]
}
}
}
クライアントが npx を見つけられない場合(シェルの設定を読み込まない場合)は、which npx で確認できるフルパスを使用してください。
ソースから(未リリースの変更を試す場合。ビルドには Node.js 22.12 以降が必要で、24 を推奨します)
git clone https://github.com/alphasafal/contri ~/contri
cd ~/contri && npm ci && npm run build:mcp # writes mcp/dist/contri-mcp.js
claude mcp add --transport stdio contri -- node ~/contri/mcp/dist/contri-mcp.js
ソースからインストールしたものを更新するには、cd ~/contri && git pull && npm ci && npm run build:mcp を実行してから、MCP クライアントを再起動してください。
GitHub でサインインする
サインインしていない場合、GitHub では1 時間あたり 60 件までリクエストできますが、エージェントはすぐに上限に達してしまいます。サインインすると上限が 5,000 件になり、CONTRI は数十件の代わりに GraphQL リクエストを 1 件だけ使用できるようになります。コピーするトークンはありません。
- エージェントに _「GitHub にサインインして」_と頼むか、そのまま CONTRI を使い始めてください。サインインしていない場合は、サインインを求められます。
- エージェントに短いコードと
github.com/login/deviceへのリンクが表示されます。リンクを開いてコードを入力し、CONTRI を承認してください。 - これで完了です。CONTRI は承認を自動で検知し、以降のすべての呼び出しでその認証を使用します。
これは拡張機能と同じサインイン方法です。スコープなしの GitHub のデバイスフローと CONTRI OAuth App を使い、パスワードが CONTRI を経由することはありません(公開リポジトリへの読み取り専用アクセス)。サインイン情報は次回のために ~/.config/contri/mcp-credentials.json に保存され、読み取れるのはあなただけです(別のパスを使うには CONTRI_MCP_CREDENTIALS を設定するか、エージェントに remember: false を指定してサインインするよう頼むと、このセッション中のみ有効になります)。sign_out を実行するとサインイン情報が削除されます。github.com/settings/applications からいつでもアクセスを取り消せます。
トークンを使いたい場合:サーバーの env に GITHUB_TOKEN(または GH_TOKEN)を設定し、Public repositories とすべての権限を No access にしたきめ細かなトークンを指定してください。GitHub がトークンを拒否した場合や、PASTE_YOUR_TOKEN_HERE のようなプレースホルダーのままの場合、CONTRI は匿名で処理を続け、エラーにする代わりにサインインを提案します。
試してみる
エージェントに、次のように尋ねてください。
- 「https://github.com/owner/repo/issues/123 を担当してもいいですか?」
- 「メンテナーが数日以内に返信する、活発な TypeScript プロジェクトで、初めて取り組むのに適した issue を探してください。」
- 「この issue に取りかかる前に、ほかに作業している人がいないか確認してください。」
プライバシー
バックエンドもアナリティクスもありません。サーバーがリクエストを送信するのは GitHub(api.github.com と、サインイン時の github.com)のみで、サインイン情報も GitHub にのみ送信されます。分析対象は公開リポジトリのみです。レポートはメモリ上に保持され、プロセスの終了時に消去されます。書き込まれるファイルは、サインインした場合に保存されるサインイン情報だけです。issue のテキストは、エージェントが要求した場合にのみ送信されます(includeThread を指定した check_issue)。PRIVACY.md をご覧ください。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。