archtracker-mcp 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +344 -0
- package/README.md +16 -321
- package/dist/bin.js +1 -1
- package/dist/bin.js.map +1 -1
- package/dist/cli/index.js +507 -1689
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.js +79 -17
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.js +507 -81
- package/dist/mcp/index.js.map +1 -1
- package/dist/web/viewer.js +1572 -0
- package/package.json +5 -3
package/README.ja.md
ADDED
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
<p align="right">
|
|
2
|
+
<a href="README.md">🇺🇸 English</a>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="https://img.shields.io/badge/MCP-Compatible-blue?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAxMnM0LjQ4IDEwIDEwIDEwIDEwLTQuNDggMTAtMTBTMTcuNTIgMiAxMiAyem0tMiAxNWwtNS01IDEuNDEtMS40MUwxMCAxNC4xN2w3LjU5LTcuNTlMMTkgOGwtOSA5eiIvPjwvc3ZnPg==" alt="MCP Compatible">
|
|
7
|
+
<img src="https://img.shields.io/npm/v/archtracker-mcp?style=for-the-badge&color=cb3837&logo=npm" alt="npm version">
|
|
8
|
+
<img src="https://img.shields.io/github/license/un907/archtracker-mcp?style=for-the-badge" alt="License">
|
|
9
|
+
<img src="https://img.shields.io/node/v/archtracker-mcp?style=for-the-badge&logo=node.js" alt="Node.js">
|
|
10
|
+
<img src="https://img.shields.io/github/actions/workflow/status/un907/archtracker-mcp/ci.yml?style=for-the-badge&logo=github&label=CI" alt="CI">
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
<h1 align="center">archtracker-mcp</h1>
|
|
14
|
+
|
|
15
|
+
<p align="center">
|
|
16
|
+
<b>AI駆動開発のためのアーキテクチャ & 依存関係トラッカー</b><br>
|
|
17
|
+
MCP サーバー + CLI + Web ビューア + Claude Code Skills
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<p align="center">
|
|
21
|
+
<a href="#クイックスタート">クイックスタート</a> •
|
|
22
|
+
<a href="#機能">機能</a> •
|
|
23
|
+
<a href="#マルチレイヤーアーキテクチャ">マルチレイヤー</a> •
|
|
24
|
+
<a href="#web-ビューア">Web ビューア</a> •
|
|
25
|
+
<a href="#mcp-ツール">MCP ツール</a> •
|
|
26
|
+
<a href="#cli-コマンド">CLI</a>
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## なぜ archtracker?
|
|
32
|
+
|
|
33
|
+
AI エージェントがコードを修正する際、**波及的な影響を見逃します**:
|
|
34
|
+
|
|
35
|
+
| 問題 | archtracker なし | archtracker あり |
|
|
36
|
+
|------|-----------------|-----------------|
|
|
37
|
+
| `auth.ts` を変更 | 12ファイルが依存していることを知らない | 影響を受ける全12ファイルを即座に表示 |
|
|
38
|
+
| リファクタでファイル名変更 | 次のセッションで古いパスを参照 | `context` コマンドで現在の有効パスを取得 |
|
|
39
|
+
| 新しい依存関係を追加 | 結合度の増加が見えない | 差分レポートがアーキテクチャ変更を検出 |
|
|
40
|
+
| PRレビュー | 手動で依存関係を追跡 | CIが自動でアーキテクチャドリフトをチェック |
|
|
41
|
+
| マルチサービス構成 | サービス境界を跨ぐ影響が見えない | レイヤー対応分析でクロスレイヤー接続を検出 |
|
|
42
|
+
|
|
43
|
+
**archtracker-mcp** は依存関係分析、スナップショット差分、影響シミュレーション、インタラクティブな可視化を提供します。MCP ツール、CLI、Web UI、Claude Code Skills からアクセス可能です。
|
|
44
|
+
|
|
45
|
+
## 機能
|
|
46
|
+
|
|
47
|
+
- **依存関係グラフ分析** — 正規表現ベースの静的解析、**13言語**対応(JS/TS, Python, Rust, Go, Java, C/C++, C#, Ruby, PHP, Swift, Kotlin, Dart, Scala)
|
|
48
|
+
- **マルチレイヤーアーキテクチャ** — 複数サービス/レイヤーを統合グラフとして分析、クロスレイヤー接続の自動検出
|
|
49
|
+
- **インタラクティブ Web ビューア** — D3.js による力学モデルグラフ(凸包レイヤーグループ表示)、階層図、差分ビュー
|
|
50
|
+
- **セキュリティ強化** — XSS安全なHTMLエスケープ、全MCPツールにパストラバーサル防止(v0.6.0)
|
|
51
|
+
- **影響シミュレーション** — ファイルをクリックして推移的な被依存ファイルを可視化(BFS探索)
|
|
52
|
+
- **スナップショット差分** — アーキテクチャスナップショットを保存し、ドリフトを検出
|
|
53
|
+
- **MCP サーバー** — Model Context Protocol 経由で6つのツールを提供
|
|
54
|
+
- **Claude Code Skills** — 6つのスラッシュコマンド(`/arch-check`、`/arch-snapshot`、`/arch-serve` 等)
|
|
55
|
+
- **CI 統合** — `--ci` モード + GitHub Actions ワークフロー自動生成
|
|
56
|
+
- **多言語対応** — 日本語・英語完全対応(`LANG` 環境変数から自動検出)
|
|
57
|
+
- **ダーク/ライトテーマ** — localStorage で設定を永続化
|
|
58
|
+
- **SVG/PNG エクスポート** — ドキュメント用にグラフをエクスポート
|
|
59
|
+
|
|
60
|
+
## クイックスタート
|
|
61
|
+
|
|
62
|
+
### インストール
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm install -g archtracker-mcp
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 1. プロジェクトを分析
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
archtracker analyze --target src
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. ベースラインスナップショットを保存
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
archtracker init --target src
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 3. Web ビューアを起動
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
archtracker serve --target src --watch
|
|
84
|
+
# => http://localhost:3000
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 4. アーキテクチャドリフトをチェック
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
archtracker check --target src
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## マルチレイヤーアーキテクチャ
|
|
94
|
+
|
|
95
|
+
フロントエンド + バックエンド + 共有ライブラリなど、複数のサービスやレイヤーを持つプロジェクトを統合的に分析できます。
|
|
96
|
+
|
|
97
|
+
### セットアップ
|
|
98
|
+
|
|
99
|
+
プロジェクトルートに `.archtracker/layers.json` を作成:
|
|
100
|
+
|
|
101
|
+
```json
|
|
102
|
+
{
|
|
103
|
+
"version": "1.0",
|
|
104
|
+
"layers": [
|
|
105
|
+
{
|
|
106
|
+
"name": "Frontend",
|
|
107
|
+
"targetDir": "frontend/src",
|
|
108
|
+
"language": "javascript",
|
|
109
|
+
"color": "#58a6ff",
|
|
110
|
+
"description": "React Web App"
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
"name": "Backend",
|
|
114
|
+
"targetDir": "backend/app",
|
|
115
|
+
"language": "python",
|
|
116
|
+
"color": "#3fb950",
|
|
117
|
+
"description": "FastAPI Server"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"connections": [
|
|
121
|
+
{
|
|
122
|
+
"fromLayer": "Frontend",
|
|
123
|
+
"fromFile": "api/client.ts",
|
|
124
|
+
"toLayer": "Backend",
|
|
125
|
+
"toFile": "main.py",
|
|
126
|
+
"type": "api-call",
|
|
127
|
+
"label": "REST API"
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
テンプレートの自動生成:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
archtracker layers init
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### 使い方
|
|
140
|
+
|
|
141
|
+
`layers.json` が存在する場合、全コマンドが自動的にマルチレイヤーモードで動作します:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
archtracker analyze --root . # 全レイヤーを分析
|
|
145
|
+
archtracker serve --root . --watch # レイヤータブ・凸包表示付き Web ビューア
|
|
146
|
+
archtracker check --root . # クロスレイヤー差分チェック
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
各レイヤーは独立した言語設定で個別に分析され、プレフィックス付きパス(例: `Backend/worker.py`)で統合グラフにマージされます。
|
|
150
|
+
|
|
151
|
+
### Web ビューアでのレイヤー表示
|
|
152
|
+
|
|
153
|
+
- **レイヤータブ**: 複数選択トグルで特定レイヤーにフォーカス(Shift+クリックでソロモード)
|
|
154
|
+
- **凸包グループ**: 各レイヤーが色付きの境界で視覚的にグループ化
|
|
155
|
+
- **クロスレイヤーリンク**: レイヤー間接続を点線で表示(設定で切替可能)
|
|
156
|
+
- **Layer Cohesion スライダー**: レイヤー内ノードの凝集度を調整
|
|
157
|
+
- **差分ハイライト**: 変更を含むレイヤーの境界がハイライト
|
|
158
|
+
|
|
159
|
+
## Web ビューア
|
|
160
|
+
|
|
161
|
+
インタラクティブな Web ビューアは3つの可視化モードを提供します:
|
|
162
|
+
|
|
163
|
+
### グラフビュー(力学モデル)
|
|
164
|
+
|
|
165
|
+

|
|
166
|
+
|
|
167
|
+
- ドラッグ、ズーム、クリックでノードの依存関係を探索
|
|
168
|
+
- ノードをクリックでハイライトを**ピン固定** — 他のノードをホバーして比較
|
|
169
|
+
- 下部のピルでディレクトリごと、上部のタブでレイヤーごとにフィルタリング
|
|
170
|
+
- 重力、レイヤー凝集力、ノードサイズ、フォントサイズ、リンク透明度を調整可能
|
|
171
|
+
- **影響モード**: ファイルをクリックして推移的に影響を受ける全ファイルを表示
|
|
172
|
+
|
|
173
|
+

|
|
174
|
+
|
|
175
|
+
#### レイヤーフォーカス
|
|
176
|
+
|
|
177
|
+

|
|
178
|
+
|
|
179
|
+
- レイヤータブを Shift+クリックで**ソロ表示**、他をクリックで追加
|
|
180
|
+
- 凸包でレイヤー境界を表示、破線でクロスレイヤーリンクを表示
|
|
181
|
+
- フィルタ時は物理演算が自動調整され、より明確な分離に
|
|
182
|
+
|
|
183
|
+
### 階層ビュー(DAGレイアウト)
|
|
184
|
+
|
|
185
|
+

|
|
186
|
+
|
|
187
|
+
- 依存の深さを示すレイヤー型トップダウンレイアウト
|
|
188
|
+
- クリックでピン固定 + 詳細パネル
|
|
189
|
+
- レイヤー対応フィルタリング + コンパクト再配置
|
|
190
|
+
|
|
191
|
+
### 差分ビュー
|
|
192
|
+
|
|
193
|
+

|
|
194
|
+
|
|
195
|
+
- アーキテクチャ変更の色分け可視化
|
|
196
|
+
- 緑=追加、赤=削除、黄=変更、青=影響
|
|
197
|
+
- 変更を含むレイヤー境界のハイライト表示
|
|
198
|
+
- スナップショットが存在する場合に利用可能
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# ファイル変更の自動リロード付きで起動
|
|
202
|
+
archtracker serve --target src --port 3456 --watch
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## MCP ツール
|
|
206
|
+
|
|
207
|
+
archtracker を MCP サーバーとして Claude Code や MCP 互換 AI エージェントに追加:
|
|
208
|
+
|
|
209
|
+
```json
|
|
210
|
+
{
|
|
211
|
+
"mcpServers": {
|
|
212
|
+
"archtracker": {
|
|
213
|
+
"command": "npx",
|
|
214
|
+
"args": ["-y", "archtracker-mcp"]
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
| ツール | 説明 |
|
|
221
|
+
|--------|------|
|
|
222
|
+
| `generate_map` | 依存関係グラフを解析し構造化JSONで返す(プログラム用) |
|
|
223
|
+
| `analyze_existing_architecture` | 包括的な人間向け分析レポート |
|
|
224
|
+
| `save_architecture_snapshot` | `.archtracker/snapshot.json` にスナップショットを保存 |
|
|
225
|
+
| `check_architecture_diff` | スナップショットと現在のコードを比較し影響を表示 |
|
|
226
|
+
| `get_current_context` | 有効なファイルパスとアーキテクチャサマリーを取得 |
|
|
227
|
+
| `search_architecture` | パス、影響範囲、重要度、孤立ファイルで検索 |
|
|
228
|
+
|
|
229
|
+
`.archtracker/layers.json` が存在する場合、全ツールがマルチレイヤーモードを自動検出します。
|
|
230
|
+
|
|
231
|
+
## CLI コマンド
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
archtracker init [options] 初期アーキテクチャスナップショットを生成
|
|
235
|
+
archtracker analyze [options] 包括的な分析レポート
|
|
236
|
+
archtracker check [options] スナップショットと現在のコードを比較
|
|
237
|
+
archtracker context [options] アーキテクチャコンテキストを表示(AIセッション用)
|
|
238
|
+
archtracker serve [options] インタラクティブ Web ビューアを起動
|
|
239
|
+
archtracker ci-setup [options] GitHub Actions ワークフローを生成
|
|
240
|
+
archtracker layers init テンプレート layers.json を作成
|
|
241
|
+
archtracker layers list 設定済みレイヤーを一覧表示
|
|
242
|
+
|
|
243
|
+
オプション:
|
|
244
|
+
-t, --target <dir> 対象ディレクトリ(デフォルト: "src")
|
|
245
|
+
-r, --root <dir> プロジェクトルート(デフォルト: ".")
|
|
246
|
+
-l, --language <lang> 対象言語(省略時は自動検出)
|
|
247
|
+
-p, --port <number> Web ビューアのポート(デフォルト: 3000)
|
|
248
|
+
-w, --watch ファイル変更の監視と自動リロード
|
|
249
|
+
-e, --exclude <pattern> 除外パターン(正規表現)
|
|
250
|
+
-n, --top <number> 分析の上位N件(デフォルト: 10)
|
|
251
|
+
--save 分析後にスナップショットを保存
|
|
252
|
+
--ci CIモード: 要確認ファイルがあれば exit 1
|
|
253
|
+
--json JSON形式で出力(context コマンド)
|
|
254
|
+
--lang <locale> 言語: en | ja(LANG から自動検出)
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
> **マルチレイヤー**: `.archtracker/layers.json` が存在し `--target` が明示指定されていない場合、全コマンドが自動的にマルチレイヤー分析を使用します。`--root` でプロジェクトルートを指定してください。
|
|
258
|
+
|
|
259
|
+
## Claude Code Skills
|
|
260
|
+
|
|
261
|
+
`skills/` ディレクトリをプロジェクトにコピー:
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
cp -r node_modules/archtracker-mcp/skills/ .claude/skills/
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
| スキル | 説明 |
|
|
268
|
+
|--------|------|
|
|
269
|
+
| `/arch-analyze` | 包括的なアーキテクチャ分析を実行 |
|
|
270
|
+
| `/arch-check` | スナップショットと現在のコードを比較 |
|
|
271
|
+
| `/arch-snapshot` | 現在のアーキテクチャスナップショットを保存 |
|
|
272
|
+
| `/arch-context` | 有効なファイルパスでAIセッションを初期化 |
|
|
273
|
+
| `/arch-search` | アーキテクチャ検索(パス、影響、重要度、孤立) |
|
|
274
|
+
| `/arch-serve` | インタラクティブ Web ビューアを起動 |
|
|
275
|
+
|
|
276
|
+
全スキルがマルチレイヤープロジェクトに自動対応します。
|
|
277
|
+
|
|
278
|
+
## プログラマティック API
|
|
279
|
+
|
|
280
|
+
```typescript
|
|
281
|
+
import {
|
|
282
|
+
analyzeProject,
|
|
283
|
+
analyzeMultiLayer,
|
|
284
|
+
saveSnapshot,
|
|
285
|
+
loadSnapshot,
|
|
286
|
+
computeDiff,
|
|
287
|
+
formatDiffReport,
|
|
288
|
+
formatAnalysisReport,
|
|
289
|
+
} from "archtracker-mcp";
|
|
290
|
+
|
|
291
|
+
// 単一ディレクトリ分析
|
|
292
|
+
const graph = await analyzeProject("src", { exclude: ["__tests__"] });
|
|
293
|
+
|
|
294
|
+
// マルチレイヤー分析
|
|
295
|
+
const layers = [
|
|
296
|
+
{ name: "Frontend", targetDir: "frontend/src", language: "javascript" },
|
|
297
|
+
{ name: "Backend", targetDir: "backend/app", language: "python" },
|
|
298
|
+
];
|
|
299
|
+
const multi = await analyzeMultiLayer(".", layers);
|
|
300
|
+
|
|
301
|
+
// スナップショット
|
|
302
|
+
const snapshot = await saveSnapshot(".", graph);
|
|
303
|
+
|
|
304
|
+
// 差分比較
|
|
305
|
+
const prev = await loadSnapshot(".");
|
|
306
|
+
if (prev) {
|
|
307
|
+
const diff = computeDiff(prev.graph, graph);
|
|
308
|
+
console.log(formatDiffReport(diff));
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## CI / CD
|
|
313
|
+
|
|
314
|
+
### GitHub Actions ワークフローの自動生成
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
archtracker ci-setup --target src
|
|
318
|
+
# .github/workflows/arch-check.yml を生成
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
## 多言語対応
|
|
322
|
+
|
|
323
|
+
`LANG` / `LC_ALL` 環境変数から自動検出されます:
|
|
324
|
+
|
|
325
|
+
```bash
|
|
326
|
+
LANG=ja_JP.UTF-8 archtracker analyze # 日本語出力
|
|
327
|
+
archtracker --lang ja check # 明示的に日本語指定
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Web ビューアでも設定パネルから言語を切り替え可能です。
|
|
331
|
+
|
|
332
|
+
## 動作要件
|
|
333
|
+
|
|
334
|
+
- **Node.js** >= 18.0.0
|
|
335
|
+
|
|
336
|
+
対応言語: JavaScript/TypeScript, Python, Rust, Go, Java, C/C++, C#, Ruby, PHP, Swift, Kotlin, Dart, Scala
|
|
337
|
+
|
|
338
|
+
## コントリビュート
|
|
339
|
+
|
|
340
|
+
[CONTRIBUTING.md](CONTRIBUTING.md) をご覧ください。
|
|
341
|
+
|
|
342
|
+
## ライセンス
|
|
343
|
+
|
|
344
|
+
[MIT](LICENSE) © un907
|