mcpField
D
depmap

depmap

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

depmap について

depmapは、入力されたmonorepoのパッケージ依存関係を構造化グラフデータとMermaid図に変換するローカルCLIおよびMCPサーバーです。ルート、リーフ、外部依存、循環を特定し、決定的な出力と入力検証を行います。

主な機能

  1. 01パッケージ間の内部依存をマッピング
  2. 02エッジ、ルート、リーフを表示
  3. 03循環パッケージと循環経路を特定
  4. 04外部依存の数を集計
  5. 05Mermaidグラフを生成
  6. 06入力を検証して結果をソート

活用シーン

  1. 01monorepoの依存関係を調査
  2. 02依存循環に含まれるパッケージを特定
  3. 03Mermaidビューアーでパッケージグラフを表示

MCP 対応

MCPクライアントにmap_internal_dependenciesツールを公開します。パッケージ名と依存関係を受け取り、構造化グラフデータとMermaid出力を返します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-depmap": {
"command": "npx",
"args": [
"-y",
"@reneturcios/depmap"
]
}
}
}
起動コマンドnpx -y @reneturcios/depmap

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

パッケージ
npm@reneturcios/depmap0.1.0
ocighcr.io/cloudcorprecords/depmap:0.1.0

ツール

1

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
packagesarrayはいモノレポ内のパッケージ(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

コメント

MCP は初めてですか?

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

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