proofscan 0.10.2 → 0.10.4

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.
Files changed (40) hide show
  1. package/README.ja.md +272 -95
  2. package/README.md +200 -311
  3. package/dist/cli.js +4 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/index.d.ts +1 -0
  6. package/dist/commands/index.d.ts.map +1 -1
  7. package/dist/commands/index.js +2 -0
  8. package/dist/commands/index.js.map +1 -1
  9. package/dist/commands/popl.d.ts +16 -0
  10. package/dist/commands/popl.d.ts.map +1 -0
  11. package/dist/commands/popl.js +495 -0
  12. package/dist/commands/popl.js.map +1 -0
  13. package/dist/popl/artifacts.d.ts +78 -0
  14. package/dist/popl/artifacts.d.ts.map +1 -0
  15. package/dist/popl/artifacts.js +205 -0
  16. package/dist/popl/artifacts.js.map +1 -0
  17. package/dist/popl/index.d.ts +10 -0
  18. package/dist/popl/index.d.ts.map +1 -0
  19. package/dist/popl/index.js +14 -0
  20. package/dist/popl/index.js.map +1 -0
  21. package/dist/popl/sanitizer.d.ts +86 -0
  22. package/dist/popl/sanitizer.d.ts.map +1 -0
  23. package/dist/popl/sanitizer.js +271 -0
  24. package/dist/popl/sanitizer.js.map +1 -0
  25. package/dist/popl/service.d.ts +46 -0
  26. package/dist/popl/service.d.ts.map +1 -0
  27. package/dist/popl/service.js +231 -0
  28. package/dist/popl/service.js.map +1 -0
  29. package/dist/popl/types.d.ts +195 -0
  30. package/dist/popl/types.d.ts.map +1 -0
  31. package/dist/popl/types.js +20 -0
  32. package/dist/popl/types.js.map +1 -0
  33. package/dist/shell/popl-commands.d.ts +26 -0
  34. package/dist/shell/popl-commands.d.ts.map +1 -0
  35. package/dist/shell/popl-commands.js +281 -0
  36. package/dist/shell/popl-commands.js.map +1 -0
  37. package/dist/shell/repl.d.ts.map +1 -1
  38. package/dist/shell/repl.js +6 -0
  39. package/dist/shell/repl.js.map +1 -1
  40. package/package.json +6 -4
package/README.ja.md CHANGED
@@ -1,167 +1,344 @@
1
- # ProofScan(日本語)
1
+ # proofscan
2
2
 
3
- > **Languages:** [English](README.md) | 日本語
3
+ > **言語:** [English](README.md) | 日本語
4
4
 
5
- MCPサーバースキャナー - JSON-RPC通信を記録し、ブラックボックスを可視化します。
5
+ MCP サーバースキャナー - JSON-RPC 通信を可視化してブラックボックスを排除
6
+
7
+ **バージョン:** 0.10.3
6
8
 
7
9
  ## 概要
8
10
 
9
- proofscanは、MCPModel Context Protocol)サーバーとの通信を可視化するツールです。
11
+ proofscanMCP (Model Context Protocol) サーバー通信の完全な可視性を提供します:
12
+
13
+ - 🔍 **キャプチャ** 全ての JSON-RPC メッセージ(リクエスト、レスポンス、通知)
14
+ - 💾 **保存** SQLite による効率的なクエリと分析
15
+ - 🌳 **可視化** コネクタ → セッション → RPC の階層構造
16
+ - 🔧 **テスト** CLI から直接 MCP ツールを実行
17
+ - 🎭 **プロキシ** 複数の MCP サーバーを統合した名前空間で提供
18
+ - 📊 **生成** 公開可能な監査証跡(POPL)
19
+ - 🐚 **対話型** TAB 補完付きシェルモード
20
+
21
+ ## クイックリンク
10
22
 
11
- - MCPサーバーへのstdio接続を確立
12
- - すべてのJSON-RPCメッセージ(リクエスト、レスポンス、通知)を記録
13
- - SQLiteに保存し、効率的なクエリと分析が可能
14
- - mcp.so / Claude Desktop形式からの設定インポートに対応
15
- - 直感的なCLIコマンドでデータを確認・探索
23
+ - 📖 **[ユーザーガイド](docs/GUIDE.ja.md)** - 完全な CLI リファレンスと例
24
+ - 🐚 **[シェルモードガイド](docs/SHELL.ja.md)** - 対話型シェルと @参照
25
+ - 🎭 **[プロキシガイド](docs/PROXY.ja.md)** - MCP プロキシサーバードキュメント
26
+ - 📦 **[POPL ガイド](docs/POPL.ja.md)** - 公開可能証明台帳
27
+ - 🔧 **[API ドキュメント](docs/API.ja.md)** - 開発者向け TypeScript API
16
28
 
17
29
  ## インストール
18
30
 
19
31
  ```bash
32
+ # グローバルインストール
20
33
  npm install -g proofscan
21
- ```
22
-
23
- またはインストールせずに実行:
24
34
 
25
- ```bash
35
+ # またはインストールせずに実行
26
36
  npx proofscan --help
27
37
  ```
28
38
 
29
- ## クイックスタート
39
+ **要件:** Node.js v18+ (v20+ 推奨)
30
40
 
31
- ```bash
32
- # 1. 設定を初期化
33
- pfscan config init
41
+ ## クイックスタート
34
42
 
35
- # 2. MCPサーバーをインポート
36
- echo '{"mcpServers":{"time":{"command":"uvx","args":["mcp-server-time"]}}}' \
37
- | pfscan connectors import --from mcpServers --stdin
43
+ ### 1. 初期化
38
44
 
39
- # 3. スキャンして確認
40
- pfscan scan start --id time # スキャン実行
41
- pfscan # 最近のイベントを表示
42
- pfscan tree # 構造を表示
45
+ ```bash
46
+ pfscan config init # 設定を作成
47
+ pfscan config path # 設定ファイルの場所を表示
43
48
  ```
44
49
 
45
- ## Phase 3 コンセプト
46
-
47
- ### 設計思想:すべてを残す → 意味のあるものを残す
50
+ ### 2. MCP サーバーを追加
48
51
 
49
- Phase 3では、「すべてのJSON-RPCを記録する」から「セキュリティ上意味のあるものを効率的に残す」へと進化します。
50
-
51
- ### 用語定義
52
+ ```bash
53
+ # Claude Desktop / mcp.so 形式から
54
+ echo '{"mcpServers":{"time":{"command":"npx","args":["-y","@modelcontextprotocol/server-time"]}}}' \
55
+ | pfscan connectors import --from mcpServers --stdin
52
56
 
53
- | 日本語 | 英語 | 意味 |
54
- |--------|------|------|
55
- | **できること** | capability | サーバーが提供する機能(tools/list で取得) |
56
- | **やったこと** | tool call | 実際に実行されたツール呼び出し(tools/call) |
57
+ # または手動で追加
58
+ pfscan connectors add --id time --stdio "npx -y @modelcontextprotocol/server-time"
59
+ ```
57
60
 
58
- ### 操作カテゴリ
61
+ ### 3. スキャンと表示
59
62
 
60
- ツールの操作は以下のカテゴリに分類されます:
63
+ ```bash
64
+ pfscan scan start --id time # スキャン実行
65
+ pfscan # イベント表示(デフォルトコマンド)
66
+ pfscan tree # 構造表示
67
+ pfscan status # システムステータス
68
+ ```
61
69
 
62
- - **読み取り** - ファイルやデータの読み込み
63
- - **書き込み** - ファイルやデータの変更
64
- - **ネット接続** - 外部ネットワークへのアクセス
65
- - **コマンド実行** - シェルコマンドの実行
66
- - **その他操作** - 上記以外の操作
70
+ ## 主な機能
67
71
 
68
- ### CLIコマンド
72
+ ### 📊 イベントタイムライン
69
73
 
70
- #### pfscan summary
74
+ ```bash
75
+ $ pfscan view --limit 10
76
+ Time Sym Dir St Method Session Extra
77
+ -------------------------------------------------------------------
78
+ 21:01:58.743 → → ✓ initialize f2442c... lat=269ms
79
+ 21:01:59.018 ← ← ✓ initialize f2442c...
80
+ 21:01:59.025 • → notifications/initi... f2442c...
81
+ 21:01:59.037 → → ✓ tools/list f2442c...
82
+ 21:01:59.049 ← ← ✓ tools/list f2442c... lat=12ms size=1.0KB
83
+ ```
71
84
 
72
- サマリー表示。**注意点**(セキュリティ上の懸念)も含めて表示します。
85
+ ### 🌳 階層ツリー
73
86
 
74
87
  ```bash
75
- $ pfscan summary --session abc123
76
-
77
- time (1 session)
78
- ├── できること: read_file, write_file, execute_command
79
- ├── やったこと: read_file (3回), write_file (1回)
80
- └── 注意点: コマンド実行可能、書き込み操作あり
88
+ $ pfscan tree
89
+ └── 📦 time
90
+ ├── 📋 f2442c9b... (2 rpcs, 8 events)
91
+ ├── ↔️ tools/list (id=2, 12ms)
92
+ │ └── ↔️ initialize (id=1, 269ms)
93
+ └── 📋 3cf5a66e... (2 rpcs, 8 events)
94
+ ├── ↔️ ✓ tools/list (id=2, 13ms)
95
+ └── ↔️ ✓ initialize (id=1, 271ms)
81
96
  ```
82
97
 
83
- #### pfscan permissions
84
-
85
- 詳細なパーミッション情報を表示します。**注意点は表示しません**(詳細確認用のため)。
98
+ ### 🐚 対話型シェル
86
99
 
87
100
  ```bash
88
- $ pfscan permissions --session abc123
101
+ $ pfscan shell
102
+ proofscan> pwd
103
+ Context: session=f2442c9b (connector=time)
89
104
 
90
- time
91
- ├── 読み取り: read_file
92
- ├── 書き込み: write_file
93
- ├── コマンド実行: execute_command
94
- └── その他操作: (なし)
95
- ```
105
+ proofscan> tool ls
106
+ Found 2 tools: get_current_time, get_timezone
96
107
 
97
- ### record dry-run
108
+ proofscan> ref add mytask @this
109
+ ✓ Reference 'mytask' saved
98
110
 
99
- スキャン候補の記録をプレビューします。
111
+ proofscan> popl @last --title "タイムサーバーテスト"
112
+ ✓ POPL entry created: 20260104-f2442c9b
113
+ ```
100
114
 
101
- ```bash
102
- # デフォルト: tools/call のみ候補化
103
- $ pfscan record dry-run --session abc123
115
+ ### 🎭 MCP プロキシ
104
116
 
105
- 記録候補:
106
- [1] tools/call: read_file (2025-12-28 12:00:00)
107
- [2] tools/call: write_file (2025-12-28 12:00:05)
117
+ ```bash
118
+ # 複数のバックエンドでプロキシを起動
119
+ pfscan proxy start --connectors time,weather
108
120
 
109
- # --include-capabilities: tools/list も候補に追加
110
- $ pfscan record dry-run --session abc123 --include-capabilities
121
+ # 別ターミナルで - 統合 MCP サーバーとして使用
122
+ echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | pfscan proxy start --all
111
123
 
112
- 記録候補:
113
- [0] tools/list (2025-12-28 11:59:55) ← 1回のみ
114
- [1] tools/call: read_file (2025-12-28 12:00:00)
115
- [2] tools/call: write_file (2025-12-28 12:00:05)
124
+ # ツールは名前空間化: time__get_current_time, weather__get_forecast
116
125
  ```
117
126
 
118
- ### セキュリティデフォルト
127
+ ### 🔧 直接ツールテスト
119
128
 
120
- 安全を優先した設計:
129
+ ```bash
130
+ # ツール一覧
131
+ pfscan tool ls time
121
132
 
122
- | 設定 | デフォルト | 説明 |
123
- |------|-----------|------|
124
- | input/output | `digest_only` | 生データではなくハッシュのみ保存 |
125
- | canonicalize | `sha256` | 正規化後にSHA-256ハッシュ化 |
133
+ # ツールスキーマ表示
134
+ pfscan tool show time get_current_time
126
135
 
127
- これにより、機密データの漏洩リスクを最小化しながら、操作の証跡を残すことができます。
136
+ # ツール実行
137
+ pfscan tool call time get_current_time --args '{}'
138
+ ```
128
139
 
129
- ## 主要コマンド
140
+ ## コマンド概要
130
141
 
131
142
  ```
132
- 共通コマンド:
133
- view, v 最近のイベントタイムラインを表示(デフォルト)
134
- tree, t connectorsessionrpc の構造を表示
135
- explore, e インタラクティブなデータブラウザ
136
- scan, s 新しいスキャンを実行
137
- status, st システム状態を表示
138
- rpc RPC呼び出しの詳細を表示
143
+ 一般コマンド:
144
+ view, v 最近のイベントタイムライン表示(デフォルト)
145
+ tree, t コネクタセッションRPC 構造表示
146
+ explore, e 対話的データブラウザ
147
+ scan, s 新規スキャン実行
148
+ status, st システムステータス表示
149
+ shell 対話型シェル(REPL)TAB 補完付き
150
+ rpc RPC 呼び出し詳細表示(list, show)
151
+ summary セッションサマリ表示
152
+ permissions カテゴリ別権限統計表示
153
+ tool MCP ツール操作(ls, show, call)
139
154
 
140
155
  管理:
141
- archive, a 古いデータのアーカイブと削除
156
+ archive, a 古いデータのアーカイブと削減
142
157
  config, c 設定管理
143
158
  connectors コネクタ管理
159
+ secrets シークレット管理
160
+ doctor データベース診断と修復
161
+ popl 公開可能証明台帳
162
+
163
+ 高度な機能:
164
+ proxy MCP プロキシサーバー操作
165
+ log プロキシログ表示
166
+ monitor スキャンイベント監視
167
+ sessions セッション管理
168
+ events イベントエクスポート
144
169
 
145
170
  ショートカット:
146
171
  v=view t=tree e=explore s=scan st=status a=archive c=config
147
172
  ```
148
173
 
149
- ## 設定ファイルの場所
174
+ ## ドキュメント
175
+
176
+ ### ユーザー向け
177
+
178
+ - **[ユーザーガイド](docs/GUIDE.ja.md)** - 完全な CLI コマンドリファレンスと例
179
+ - **[シェルモード](docs/SHELL.ja.md)** - 対話型シェル、@参照、高度なワークフロー
180
+ - **[プロキシガイド](docs/PROXY.ja.md)** - MCP プロキシサーバーのセットアップと使用方法
181
+ - **[POPL ガイド](docs/POPL.ja.md)** - 公開監査証跡の作成
182
+
183
+ ### 開発者向け
150
184
 
151
- OSごとの標準的な場所に保存されます:
185
+ - **[API ドキュメント](docs/API.ja.md)** - TypeScript API と EventLine モデル
186
+ - **[アーキテクチャ](docs/ARCHITECTURE.ja.md)** - 内部設計とデータベーススキーマ
187
+ - **[コントリビューション](CONTRIBUTING.md)** - 開発環境のセットアップとガイドライン
152
188
 
189
+ ## 設定
190
+
191
+ 設定ファイルの場所(OS 標準):
153
192
  - **Windows**: `%APPDATA%\proofscan\config.json`
154
193
  - **macOS**: `~/Library/Application Support/proofscan/config.json`
155
194
  - **Linux**: `~/.config/proofscan/config.json`
156
195
 
157
- ## グローバルオプション
196
+ 基本的な設定構造:
197
+
198
+ ```json
199
+ {
200
+ "version": 1,
201
+ "connectors": [
202
+ {
203
+ "id": "time",
204
+ "enabled": true,
205
+ "transport": {
206
+ "type": "stdio",
207
+ "command": "npx",
208
+ "args": ["-y", "@modelcontextprotocol/server-time"]
209
+ }
210
+ }
211
+ ],
212
+ "retention": {
213
+ "keep_last_sessions": 50,
214
+ "raw_days": 7,
215
+ "max_db_mb": 500
216
+ }
217
+ }
218
+ ```
219
+
220
+ 詳細は **[ユーザーガイド](docs/GUIDE.ja.md#設定)** を参照してください。
158
221
 
222
+ ## データストレージ
223
+
224
+ proofscan は 2 ファイル構成の SQLite を使用:
225
+
226
+ ```
227
+ ~/.config/proofscan/
228
+ ├── config.json
229
+ ├── events.db # セッション、イベント、RPC 呼び出し(削減可能)
230
+ ├── proofs.db # 不変の証明記録(削減不可)
231
+ ├── proxy-runtime-state.json # プロキシ状態(プロキシ使用時)
232
+ └── proxy-logs.jsonl # プロキシログ(プロキシ使用時)
159
233
  ```
160
- -c, --config <path> 設定ファイルのパス
161
- --json JSON形式で出力
234
+
235
+ ## グローバルオプション
236
+
237
+ ```bash
238
+ -c, --config <path> 設定ファイルパス
239
+ --json JSON 形式で出力
162
240
  -v, --verbose 詳細出力
241
+ -h, --help ヘルプ表示
242
+ -V, --version バージョン表示
163
243
  ```
164
244
 
245
+ ## 使用例
246
+
247
+ ### 基本ワークフロー
248
+
249
+ ```bash
250
+ # 1. MCP サーバーをインポート
251
+ cat claude_desktop_config.json | pfscan connectors import --from mcpServers --stdin
252
+
253
+ # 2. スキャン実行
254
+ pfscan scan start --id myserver
255
+
256
+ # 3. 結果表示
257
+ pfscan # 最近のイベント
258
+ pfscan tree # 階層表示
259
+ pfscan rpc list --session abc # RPC 詳細
260
+ ```
261
+
262
+ ### シェルモードワークフロー
263
+
264
+ ```bash
265
+ pfscan shell
266
+
267
+ # セッションに移動
268
+ proofscan> cc time
269
+ proofscan> pwd
270
+ Context: connector=time
271
+
272
+ proofscan> up abc123
273
+ Context: session=abc123 (connector=time)
274
+
275
+ # 参照を保存して後で使用
276
+ proofscan> ref add important @this
277
+ proofscan> tool call get_current_time --args '{}'
278
+ proofscan> popl @last --title "本番環境テスト"
279
+ ```
280
+
281
+ ### プロキシモード
282
+
283
+ ```bash
284
+ # ターミナル 1: プロキシ起動
285
+ pfscan -v proxy start --connectors server1,server2
286
+
287
+ # ターミナル 2: ステータス確認
288
+ pfscan proxy status
289
+ pfscan log --tail 20
290
+
291
+ # Claude Desktop でプロキシを使用
292
+ # claude_desktop_config.json に追加:
293
+ # {
294
+ # "mcpServers": {
295
+ # "proofscan-proxy": {
296
+ # "command": "pfscan",
297
+ # "args": ["proxy", "start", "--all"]
298
+ # }
299
+ # }
300
+ # }
301
+ ```
302
+
303
+ ## 開発
304
+
305
+ ```bash
306
+ git clone https://github.com/proofofprotocol/proofscan.git
307
+ cd proofscan
308
+ npm install
309
+ npm run build
310
+ npm test
311
+
312
+ # ソースから実行
313
+ node dist/cli.js --help
314
+ ```
315
+
316
+ ## ユースケース
317
+
318
+ - 🔍 **MCP サーバーのデバッグ**: JSON-RPC 通信で何が起きているかを正確に把握
319
+ - 📊 **ツール使用状況の分析**: どのツールがどのくらい呼ばれているかを追跡
320
+ - 🎯 **パフォーマンス監視**: RPC レイテンシを測定しボトルネックを特定
321
+ - 🔐 **セキュリティ監査**: 権限リクエストとデータアクセスをレビュー
322
+ - 📝 **ドキュメント作成**: バグレポート用の公開可能なログを生成
323
+ - 🧪 **テスト**: MCP サーバーの動作とツールスキーマを検証
324
+ - 🎭 **統合**: プロキシモードで複数の MCP サーバーを集約
325
+
326
+ ## 関連プロジェクト
327
+
328
+ - **[Model Context Protocol](https://modelcontextprotocol.io)** - 公式 MCP 仕様
329
+ - **[MCP Servers](https://github.com/modelcontextprotocol/servers)** - 公式サーバー実装
330
+ - **[@proofofprotocol/inscribe-mcp-server](https://github.com/proofofprotocol/inscribe-mcp-server)** - ブロックチェーンベースの証明ストレージ
331
+
165
332
  ## ライセンス
166
333
 
167
334
  MIT
335
+
336
+ ## サポート
337
+
338
+ - 📖 **ドキュメント**: [docs/](docs/) ディレクトリを参照
339
+ - 🐛 **バグレポート**: [GitHub Issues](https://github.com/proofofprotocol/proofscan/issues)
340
+ - 💬 **ディスカッション**: [GitHub Discussions](https://github.com/proofofprotocol/proofscan/discussions)
341
+
342
+ ---
343
+
344
+ **❤️ を込めて [Proof of Protocol](https://github.com/proofofprotocol) が作成**