What's Inherited について
What's Inheritedは、AIエージェントにリポジトリを使わせる前に確認するためのMCPサーバーです。エージェント向けの指示や設定を一覧化し、指示ファイルの本文は返さず、悪意やクライアントの実行動作も判定しません。
主な機能
- 01指示ファイルとインポートの一覧
- 02エージェントイベント用フックの報告
- 03リポジトリが宣言するMCPサーバーの確認
- 04同梱スキルとサブエージェントの検出
- 05指示のトークン量の推定
活用シーン
- 01クローンしたリポジトリのエージェント指示を確認
- 02エージェントイベント用フックの場所を特定
- 03起動前にリポジトリ宣言のMCPサーバーを確認
- 04同梱スキルとサブエージェントを一覧化
MCP 対応
MCPクライアントからツールを呼び出し、リポジトリ内のエージェント向けファイル、フック、宣言済みMCPサーバー、スキル、サブエージェントを調べられます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| dir | string | いいえ | 調査するチェックアウトの絶対パスです。WI_DEFAULT_ROOT が設定されている場合はその値、それ以外の場合はサーバーの作業ディレクトリがデフォルトです。 |
詳細
whats-inherited-mcp
クローンしたコードはレビューします。しかし、エージェントとやり取りする部分までレビューする人はほとんどいません。 自分ではなくAI エージェントを対象とした、チェックアウト内のあらゆるものを列挙する MCP サーバーです。指示ファイル、エージェントのイベントに結び付けられたフックコマンド、リポジトリが宣言する MCP サーバー、同梱されているスキルやサブエージェントを確認できます。
理由
git diff にはコードが表示されるので、コードを読みます。また、CLAUDE.md に追加された3行も表示されます。それらはドキュメントのように見えるので、ざっと目を通すでしょう。しかし、ドキュメントではありません。モデルが従う指示です。
対象となる範囲は、多くの人が想像するより広いものです。クローンしたディレクトリには、次のものが含まれている可能性があります。
CLAUDE.md/AGENTS.md/.cursorrules— コンテキストに読み込まれ、指示として扱われます。ツリーの奥深くにある入れ子になったファイルも含まれ、エージェントがそのサブディレクトリで作業するときにのみ適用されます.claude/settings.jsonのフックコマンド — ツールの使用、セッション開始、プロンプト送信時に実行されるよう設定されたシェルコマンドです.mcp.json— リポジトリが追加を求める MCP サーバーです。多くの場合、npx -y <package>で起動されるため、実行されるコードは起動時にダウンロードされ、レビューしたコードとは異なるものです.claude/skills、.claude/commands、.claude/agents— リポジトリがエージェントに提供する機能です
これらを一か所にまとめるものはありません。このツールがまとめます。
langfuse/langfuse の 7d2afa4 のチェックアウトに対して実行してみましょう。問題がないからこそ選んだ、一般的で評判のよいオープンソースリポジトリです。
# Inherited agent surface
**12 item(s) in this checkout are addressed to an agent, not to you.**
| Surface | Count | Detail |
|-------------------------------|------:|--------------------------------------------------------------|
| Instruction files | 12 | ~41,848 est. tokens, 5,593 lines your agent is told to follow |
| Hook commands | 0 | configured to run on agent events |
| MCP servers declared | 0 | 0 fetch code from a registry at launch |
| Skills / commands / subagents | 33 extensions (196 files) | shipped under `.agents/`, available to the agent |
## Worth a look
- 11 instruction file(s) are **not at the repo root** — they apply when the agent
works in those subdirectories and are easy to miss in review.
さらに、instruction_files には次のように表示されます。
> Counted once, reachable under more than one name (symlinks):
> - `AGENTS.md` ← also `.agents/AGENTS.md`, `CLAUDE.md`
恒常的な指示が5,500行以上あり、その大半は普段なら開かないファイルに含まれています。誰も疑う理由のないリポジトリでのことです。重要なのはここです。問題のないケースでも数が多いため、その中の異常な項目が見過ごされやすいのです。
ツール
| ツール | 内容 |
|---|---|
inherited_summary | 概要です。チェックアウト内にある、エージェントを対象としたすべてのものを表示します。まずはこちらを確認してください |
instruction_files | すべての CLAUDE.md / AGENTS.md / .cursorrules と、そのサイズやトークンコスト、さらに @import 行が読み込む内容を表示します。リポジトリの外部に解決されるインポートも含みます |
auto_run_commands | チェックアウトがエージェントのイベントに結び付けたフックコマンドと、各コマンドが参照するスクリプトがリポジトリ内、リポジトリ外、または存在しないかを表示します |
declared_mcp_servers | リポジトリが宣言する MCP サーバー、そのうち起動時にコードを取得するもの、およびチェックアウト外でアクセスを許可されているファイルシステムパスを表示します |
agent_extensions | リポジトリに同梱されているスキル、スラッシュコマンド、サブエージェントを表示します |
すべてのツールで dir を省略できます。省略した場合、WI_DEFAULT_ROOT が設定されていればその値を使い、設定されていなければ作業ディレクトリを使います。
インストール
Claude Desktop(ワンクリック、ターミナル不要): Releases から最新の whats-inherited-mcp-<version>.dxt をダウンロードし、Claude Desktop で開きます(ダブルクリックするか、Settings → Extensions → Install Extension… を選択します)。サーバーと依存関係はバンドルに含まれているため、npm も Node のインストールも不要です。
Claude Code に登録すると、すべてのセッションで利用できます。
claude mcp add --scope user whats-inherited -- npx -y whats-inherited-mcp
または、任意の MCP クライアント設定に追加します。
{
"mcpServers": {
"whats-inherited": {
"command": "npx",
"args": ["-y", "whats-inherited-mcp"]
}
}
}
ソースからインストール
git clone https://github.com/stcmain/whats-inherited-mcp.git
cd whats-inherited-mcp
npm install && npm run build
# then point your client at node /path/to/whats-inherited-mcp/dist/index.js
npm では whats-inherited-mcp として、MCP Registry では io.github.stcmain/whats-inherited-mcp として公開されています。
設定
任意の設定項目が1つあります。認証情報は不要です。
| 変数 | デフォルト | 意味 |
|---|---|---|
WI_DEFAULT_ROOT | サーバーの作業ディレクトリ | dir 引数を指定せずにツールを呼び出したときに調査するディレクトリ。 |
すべてのツールで dir を明示的に指定でき、指定した場合は常にそちらが優先されます。WI_DEFAULT_ROOT はフォールバック先を変更するだけですが、デスクトップクライアントがサーバーを起動する場合は設定しておくと便利です。プロセスはそのクライアントの作業ディレクトリを引き継ぎますが、そこが調査したいチェックアウト先であることはほとんどありません。
{
"mcpServers": {
"whats-inherited": {
"command": "npx",
"args": ["-y", "whats-inherited-mcp"],
"env": { "WI_DEFAULT_ROOT": "/path/to/the/checkout" }
}
}
}
カウントするものと、推測しないもの
これを不安をあおる方向に誇張するのは簡単ですが、そうすればツールとして役に立たなくなります。そのため、集計は意図的に控えめにしています。
- 悪意のあるコンテンツは検出しません。 ヒューリスティックなスキャナーも、「疑わしいフレーズ」を検出する正規表現も、リスクスコアもありません。これらは通常のリポジトリで確信度の高い誤検出を生み、慎重に書かれたものは見逃します。このサーバーは確認すべき場所を示します。内容を読むのはあなたです。
- ファイルは一度だけカウントします。 リポジトリでは、1つのファイルが複数の名前で公開されることがあります。
CLAUDE.md → AGENTS.md → .agents/AGENTS.mdは実際によく見られるパターンです。エントリは解決後の実パスで重複を除去し、同じ内容を3回カウントするのではなく、エイリアスを一覧表示します。 .claude/は二重にカウントしません。 スキル独自のCLAUDE.mdはスキルとして報告され、プロジェクトの指示ファイルとしては報告されません。- 「パスのトークンを特定できませんでした」は、安全性を保証するものではありません。 フックコマンドに、このサーバーが確実に抽出できるファイルシステムのパスがない場合、その旨を示して処理を終了します。これは分析における明示的な不足であり、判定結果ではありません。
- インポートの検出は控えめです。 まずフェンス付きコードブロックを除外し、ルートが指定されていない
@tokenはドキュメントを指す場合にのみカウントします。そのため、@scope/pkgや@mentionsは件数に含まれません。
正直な制限事項
- 報告はしますが、判断も修正もしません。 編集、隔離、スコア付けは一切行いません。一覧に表示される項目はすべて、正当なリポジトリに普通に存在するものです。
- プロジェクトのフックを実際に実行するかどうかは、クライアントによって異なります。 クライアントごとに動作が異なり、確認の求め方も異なります。また、バージョン間で動作が変わることもあります。このサーバーが報告するのはファイルに宣言されている内容であり、クライアントが実際にどう動作するかではありません。
- トークン数は推定値です(約4文字/トークン)。課金額ではなく、順位付けと大まかな規模の目安として扱ってください。Anthropic のトークナイザーは公開されていないため、ローカルでそれ以上正確に数えることはできません。
- モデルとしているのは Claude Code のレイアウトです。 Cursor、Windsurf、Cline、Copilot の指示ファイルも認識しますが、フックと MCP の解析には Claude Code のスキーマを使用します。
- 非常に大規模なモノレポでは、出力が途中で切り詰められます。 ディレクトリの走査には深さとエントリ数の上限があります。上限に達すると、その旨を出力に示し、結果が部分的であることを明記します。黙って過少報告することはありません。
- Git の履歴は読み取りません。 差分で何が変更されたかではなく、現時点でディスク上にある作業ツリーを説明します。
- シンボリックリンクされたディレクトリはたどりません(ループの危険があるため)。シンボリックリンクされたファイルはたどります。
設計上の注意点/脅威モデル
このサーバーの役割は、悪意のある可能性があるコンテンツを調べることだけなので、その前提で設計されています。
- 報告対象のインジェクションベクトルになってはいけません。 指示ファイルの本文は一切返されません。返されるのはメタデータ、パス、および既知の JSON 設定キーから解析した構造化フィールドのみです。リポジトリに問題が含まれているかもしれないと伝えるために、そのリポジトリの
CLAUDE.mdをコンテキストに貼り付けるのは本末転倒です。 - リポジトリが記述した文字列は囲って明示します。 フックコマンドや MCP の起動行は、有用な情報を得るために表示する必要があります。これらは、バッククォートを無効化し、パイプをエスケープし、改行を平坦化したインラインコードスパン内に出力されるため、細工された文字列がスパンや Markdown テーブルから抜け出すことはできません。また、各ブロックには、引用されたテキストはチェックアウト内のデータであり、指示ではないことを示す注記が常に付記されます。
- 子プロセスなし。シェルなし。ネットワークなし。書き込みなし。 使用する Node API は
node:fsの読み取り、node:path、node:osのみです。ソース内のどこにもchild_processのインポートはないため、スキャン対象のリポジトリ内のものがスキャンによって実行されることはありません。 - モデルが制御するパスは
dirだけで、設計上、その範囲は制限されています。パスは解決され、実パスに変換され、既存のディレクトリであることが必須です。ファイル本文は出力されないため、機密情報のある場所を指定しても開示されるのはファイル名とサイズのみで、内容は開示されません。また、書き込み、実行、送信もできません。 - 環境変数の値は読み取らず、名前のみを読み取ります。
.mcp.jsonは、API キーを平文のまま置いてしまいがちな場所です。 - 処理量を制限: 深さの上限、エントリ数の上限、ファイルサイズの上限を設け、シンボリックリンクされたディレクトリはたどりません。
開発元
Shift The Culture が開発しました。AI エージェントを活用する一人会社を運営し、自分たちに必要だったツールを提供しています。このサーバーは無料で、MIT ライセンスです。条件はありません。
姉妹プロジェクトが 3 つあり、いずれも無料で MIT ライセンスです。
- whats-running-mcp — 古いトランスクリプトに書かれている内容ではなく、今このマシンで 実際に 動いているものを確認できます。
- whats-loaded-mcp — 入力する前からコンテキストウィンドウを消費しているもの、つまりスキルの説明、メモリファイル、およびそのインポートを確認できます。
- whats-allowed-mcp — エージェントがあなたに確認せずに実行できることを確認できます。統合された権限ルール、どの設定ファイルが優先されるか、クライアントが受け入れた後に無視するルールを確認できます。
そのほかのツールは有料です。
- Agent Fleet Ops Kit($29)— 1 台のマシンで 3、4 つのエージェントを動かす際に起こる、ほかの障害モードに対応します。同じチェックアウトを 2 つのセッションが編集する、所有者のいない開発サーバー(そのため、エージェントが編集しているものとは別のアプリをテストする)、クラッシュしたセッションから MCP サーバーが残り、ポートと RAM を何週間も占有するといった問題です。 PayPal をご希望ですか?同じキットを Payhip でも購入できます。
- Agent Reliability Kit($29)— エージェントが、実際には一度も確認していないリポジトリ、URL、またはビルドについて「完了」と主張したとき、ターンをブロックする Stop フックと 2 つの CLI を提供します。 PayPal をご希望ですか?同じキットを Payhip でも購入できます。
上記のサーバーは、どちらの場合も無料で MIT ライセンスのままです。アップセルはなく、テレメトリーもなく、有料キットへの依存もありません。
スポンサー
このサーバーは MIT ライセンスであり、今後も MIT ライセンスのままです。プロ版はなく、テレメトリーもなく、無料版から機能を取り除くこともありません。これらを変えることなくメンテナンス費用を賄う方法が、スポンサーです。
現在スポンサーはいません — 最初の枠は空いています。 企業スポンサーは、こちらのセクション、姉妹サーバー 2 件、スポンサーのページに社名またはロゴを掲載できます。スポンサーのランク、掲載内容の詳細、そしてスポンサーが明確に得られないものについては、こちらをご覧ください: https://shifttheculture.media/sponsor
個人の方:https://paypal.me/ShiftTheCultureLLC — 金額は自由で、特典やランクはありません。
ライセンス
MIT © Zachary Pampu
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。