depmap について
depmapは、入力されたmonorepoのパッケージ依存関係を構造化グラフデータとMermaid図に変換するローカルCLIおよびMCPサーバーです。ルート、リーフ、外部依存、循環を特定し、決定的な出力と入力検証を行います。
主な機能
- 01パッケージ間の内部依存をマッピング
- 02エッジ、ルート、リーフを表示
- 03循環パッケージと循環経路を特定
- 04外部依存の数を集計
- 05Mermaidグラフを生成
- 06入力を検証して結果をソート
活用シーン
- 01monorepoの依存関係を調査
- 02依存循環に含まれるパッケージを特定
- 03Mermaidビューアーでパッケージグラフを表示
MCP 対応
MCPクライアントにmap_internal_dependenciesツールを公開します。パッケージ名と依存関係を受け取り、構造化グラフデータとMermaid出力を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| packages | array | はい | モノレポ内のパッケージ(1 つ以上) |
詳細
depmap
モノレポでは、どのパッケージがセット内のどのパッケージに依存しているのか、依存元がない最上位のパッケージは何か、内部依存がない最下位のパッケージは何か、内部グラフが自分自身に戻るループを持つかを把握するのが簡単ではありません。depmap はパッケージグラフ、つまり各パッケージの名前と依存先の名前を受け取り、全体のマップを描画します。
- パッケージごとのエントリー — すべてのパッケージについて、内部依存先(
depends_on)、そのパッケージに依存するパッケージ(depended_by)、および依存名のうちセット外を指すものの数であるexternal_countを示します。外部の名前は数に含めますが、マッピングはせず、エラーにもなりません。モノレポに含まれていないライブラリにパッケージが自由に依存できます。 - エッジ、ルート、リーフ — すべての内部依存を
{from, to}エッジとして示し、内部依存元がないパッケージをルート、内部依存先がないパッケージをリーフとして示します。 - 2 通りのサイクル検出 —
cyclic_packagesには、いずれかのサイクルに含まれるすべてのパッケージを列挙します。複数のパッケージからなる強連結成分のメンバーに加え、自身に依存するパッケージも含まれます。さらにcycleには、名前と依存先を昇順で訪問する深さ優先探索で見つかった、具体的なサイクルを 1 つ示します。サイクルは検出結果であり、エラーではありません。 - Mermaid グラフ — マップを
graph TD図として描画します。Mermaid レンダラーに貼り付けて利用できます。有効な Mermaid ID ではないパッケージ名には、サニタイズした ID(@scope/appは_scope_appになります)を割り当て、宣言行でその ID と実際の名前を対応付けます。
1 つのパッケージの dependencies に重複して含まれる項目は、マッピング前に重複を除去します。また、結果内のすべてのリストは昇順でソートされるため、同じグラフからは常にまったく同じマップが生成されます。パッケージリストがない、または空である、パッケージ名がない、または重複している、フィールドの型が正しくないなどの不正な入力は、問題のあるパスを示す検証エラーになります(例:packages[1].dependencies[0] must be a string)。部分的なマップは生成されません。計算は純粋かつローカルで行われます。ネットワークや設定は不要で、渡された入力以外のファイルは読み込みません。
CLI
npx @reneturcios/depmap map --input args.json
npx @reneturcios/depmap --version
args.json には引数オブジェクト全体が含まれます。
{
"packages": [
{ "name": "core" },
{ "name": "lib", "dependencies": ["core"] },
{ "name": "app", "dependencies": ["lib", "react"] }
]
}
各パッケージの dependencies はデフォルトで [] です。ここでは react はセット外なので、app の external_count にのみ表示されます。マップは JSON として出力されます。
{
"packages": [
{ "name": "app", "depends_on": ["lib"], "depended_by": [], "external_count": 1 },
{ "name": "core", "depends_on": [], "depended_by": ["lib"], "external_count": 0 },
{ "name": "lib", "depends_on": ["core"], "depended_by": ["app"], "external_count": 0 }
],
"edges": [
{ "from": "app", "to": "lib" },
{ "from": "lib", "to": "core" }
],
"roots": ["app"],
"leaves": ["core"],
"has_cycle": false,
"cycle": [],
"cyclic_packages": [],
"mermaid": "graph TD\n app --> lib\n lib --> core"
}
終了コード:成功時は 0、実行時エラー時は 1(入力ファイルが読み取れない、または無効な場合や、入力が無効な場合を含む)、使用方法のエラー時は 2。
MCP サーバー
npx -y @reneturcios/depmap mcp
MCP クライアントの設定:
{
"mcpServers": {
"depmap": {
"command": "npx",
"args": ["-y", "@reneturcios/depmap", "mcp"]
}
}
}
ツール
map_internal_dependencies— モノレポの内部依存をマッピングします。packages(配列、必須、1 つ以上) —{name, dependencies?}オブジェクトとして指定するパッケージ。nameはセット内で一意であり、各dependenciesの項目は、指定された別のパッケージ(内部依存)を指すか、それ以外(外部依存、数にのみ含む)を指します。
戻り値は {packages, edges, roots, leaves, has_cycle, cycle, cyclic_packages, mermaid} です。
Docker
docker run -i ghcr.io/cloudcorprecords/depmap
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/depmap map --input /w/args.json
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。