docs-manage について
docs-manage は、ローカルの Grounded Docs ストアを管理する CLI スキルです。ドキュメントの取得、差分更新、バージョン削除、ストアの圧縮を扱います。
主な機能
- 01Webやローカルのドキュメント取得
- 02変更ページの差分更新
- 03インデックス済みバージョンの削除
- 04ドキュメントストアの圧縮
- 05--server-url によるリモートワーカー利用
活用シーン
- 01検索用にライブラリのドキュメントを登録
- 02上流ドキュメントの変更を反映
- 03古いバージョンをインデックスから削除
- 04削除後にストアの空き領域を回収
MCP 対応
このスキルは @arabold/docs-mcp-server が使うドキュメントストアを操作し、登録、更新、管理用の CLI コマンドを説明します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ arabold/ docs-mcp-server --skill docs-manageインストール後、Claude Code で/docs-manageを入力して読み込まれたか確認します。
詳細
Docs Manage
ローカルの Grounded Docs ストアで、ライブラリのドキュメントをインデックス化、更新、削除します。これらのコマンドはインデックスを変更し、標準出力にプレーンテキストの結果を出力します。
使用する場面
- ライブラリがまだインデックス化されておらず、検索にドキュメントが必要な場合。
- インデックス化済みのドキュメントが古くなっている可能性があり、変更されたページを取得したい場合。
- インデックスからライブラリのバージョンを削除したい場合。
- 削除後もストアファイルのサイズが大きく、縮小したい場合。
コマンド
すべてのコマンドで、次のフラグを使用できます。
| フラグ | 説明 |
|---|---|
--server-url <url> | ローカルストアの代わりにリモートワーカーを使用します(例:http://localhost:8080/api) |
--quiet | エラーのみをログに出力します |
--verbose | デバッグ出力をログに出力します |
scrape
URL またはローカルフォルダーからドキュメントをダウンロードし、インデックス化します。インデックス化が完了すると、コマンドが終了します。
npx @arabold/docs-mcp-server@latest scrape <library> <url> [options]
| フラグ | エイリアス | デフォルト | 説明 |
|---|---|---|---|
--version <ver> | -v | バージョンなし | インデックス化するバージョンラベル |
--max-pages <n> | -p | 1000 | インデックス化するページの最大数 |
--max-depth <n> | -d | 3 | 開始 URL からのリンクの最大深度 |
--max-concurrency <n> | -c | 3 | 同時に取得するページ数 |
--scope subpages|hostname|domain | subpages | クロール範囲:開始 URL のパス、ホスト名、またはサブドメインを含むドメイン | |
--include-pattern <pattern> | パターンに一致する URL のみをクロールします(glob、または/pattern/形式の正規表現。複数指定可能) | ||
--exclude-pattern <pattern> | パターンに一致する URL を除外します(複数指定可能。include より優先されます) | ||
--scrape-mode auto|fetch|playwright | auto | autoとplaywrightはヘッドレス Chromium で HTML をレンダリングします。fetchは JavaScript を実行しません | |
--header "Name: Value" | カスタム HTTP ヘッダー(複数指定可能) | ||
--no-follow-redirects | リダイレクトに従う | HTTP リダイレクトをエラーとして扱います | |
--no-ignore-errors | エラーを無視する | ページの取得に失敗した場合、スキップせずにスクレイプを失敗させます | |
--preserve-hashes | false | URL ハッシュでルーティングするドキュメントサイト向けに、#/routeフラグメントを保持します | |
--replace | false | バージョンがすでに存在する場合、そのバージョンを再構築します | |
--no-clean | 失敗させずに、既存のバージョンへドキュメントを追加します | ||
--embedding-model <model> | 埋め込みモデル。例:openai:text-embedding-3-small |
ページ数、深度、並列実行数のデフォルト値はサーバーの設定に基づくため、ユーザーのマシンによって異なる場合があります。
例:
# Index React docs under a version
npx @arabold/docs-mcp-server@latest scrape react https://react.dev/reference/react --version 19.0.0
# Index a local folder
npx @arabold/docs-mcp-server@latest scrape mylib file:///Users/me/Documents/my-library
# Limit the crawl
npx @arabold/docs-mcp-server@latest scrape nextjs https://nextjs.org/docs --max-pages 200 --max-depth 3
# Send an auth header with every request
npx @arabold/docs-mcp-server@latest scrape internal-api https://docs.example.com \
--header "Authorization: Bearer tok_xxx"
# Skip changelog pages
npx @arabold/docs-mcp-server@latest scrape react https://react.dev/reference/react \
--exclude-pattern "**/changelog*"
成功すると、Successfully scraped <n> pagesと出力されます。エラーを無視する設定でも、開始 URL の取得に失敗した場合、またはその他のページの半数を超えるページで取得に失敗した場合(デフォルト)は、スクレイプは失敗します。
refresh
インデックス化済みのバージョンをその場で更新します。変更されていないページはスキップされます。Web ページでは HTTP ETag、ローカルファイルでは更新日時を使用します。削除されたページは取り除かれ、新しいリンクはクロールされます。前回のインデックス化が完了していないバージョンは、最初から再度スクレイプされます。最初のスクレイプで指定したオプションが再利用されます。
npx @arabold/docs-mcp-server@latest refresh <library> [options]
| フラグ | エイリアス | 説明 |
|---|---|---|
--version <ver> | -v | 更新するバージョン。バージョンなしのドキュメントの場合に限り、省略できます。 |
--preserve-hashes | 今回の更新では、保存済みのハッシュルート設定を上書きします | |
--embedding-model <model> | 埋め込みモデル |
例:
npx @arabold/docs-mcp-server@latest refresh react --version 19.0.0
バージョンはすでにインデックス化されている必要があります。新しいバージョンには scrapeを使用してください。成功すると、Successfully refreshed <n> pagesと出力されます。
remove
インデックスからライブラリのバージョンを削除します。ライブラリの最後のバージョンを削除すると、そのライブラリも削除されます。
npx @arabold/docs-mcp-server@latest remove <library> [options]
| フラグ | エイリアス | 説明 |
|---|---|---|
--version <ver> | -v | 削除するバージョン。指定しない場合、バージョンなしのドキュメントが削除されます。 |
例:
npx @arabold/docs-mcp-server@latest remove react --version 18.3.1
Successfully removed [email protected].と出力されます。ライブラリがインデックス化されていない場合は失敗します。削除は取り消せません。再度インデックス化するには、scrapeを実行してください。正確なバージョンラベルを確認するには、先にlist(docs-search スキル)を実行してください。
compact
未使用の領域を再利用して、ストアファイルを縮小します。ドキュメントを削除しても、それだけではファイルは縮小されません。コンパクション中は排他ロックがかかるため、完了するまで検索が待機する場合があります。また、ストアの一時コピーを作成するための空きディスク容量も必要です。ほかの処理がストアを使用していないときに実行してください。
npx @arabold/docs-mcp-server@latest compact [--force]
| フラグ | 説明 |
|---|---|
--force | SQLite が空きページなしと報告した場合でも、ストアを書き換えます |
Compacted store from <size> to <size> (reclaimed <size>). または
Store is already compact. と表示されます。
出力の動作
各コマンドは標準出力(stdout)にプレーンテキストの結果を1行出力し、--output は無視します。ログは標準エラー出力(stderr)に出力されます。ターミナルでは、📄 Scraping react v19.0.0: 3/10 pages のような進捗行が含まれます。ターミナル以外では、エラーのみがログに出力されます。進捗を確認するには、LOG_LEVEL=INFO を設定するか、--verbose を指定します。コマンドが失敗すると、ゼロ以外の終了ステータスで終了します。
一般的なワークフロー
# 1. Index documentation for the first time
npx @arabold/docs-mcp-server@latest scrape react https://react.dev/reference/react --version 19.0.0
# 2. Later, pick up changed pages
npx @arabold/docs-mcp-server@latest refresh react --version 19.0.0
# 3. Remove an old version
npx @arabold/docs-mcp-server@latest remove react --version 18.3.1
# 4. Shrink the store if needed
npx @arabold/docs-mcp-server@latest compact
重要な注意事項
- スクレイピングには時間がかかります。 大規模なサイトでは数分かかることがあります。サイトの一部だけが必要な場合は、
--max-pagesと--max-depthを使用してください。 scrapeは誤って上書きすることはありません。 すでに存在するバージョンをスクレイピングすると失敗し、既存の内容はそのまま残ります。再構築するには--replaceを指定し、インプレースで更新するにはrefreshを使用するか、追加するには--no-cleanを指定してください。- ライブラリ名の大文字・小文字は維持され(
React、Next.js Docs)、大文字・小文字を区別せずに照合されるため、reactでReactを指定できます。名前の文字に特別な意味はありません。react@18ではなく、--version 18を使用してください。 - ローカルファイルには、絶対パスを指定した
file://URL が必要です。デフォルトでは、ユーザーの Documents フォルダー内のファイルのみをインデックス化できます。別のフォルダーをインデックス化する場合は、ユーザーに許可を求めてから、DOCS_MCP_SCRAPER_SECURITY_FILE_ACCESS_ALLOWED_ROOTS=/path/to/folderを指定してコマンドを実行してください。 - プライベートネットワークアドレス(
localhostや10.x.x.xなど)は、デフォルトで拒否されます。ユーザーはサーバー設定(scraper.security.network)で許可できます。