Bookworm について
Bookwormは、docs.rsのクレートドキュメントをダウンロード、索引化、検索するRust開発者向けツール集です。MCPサーバーを通じて、対応クライアントからクレート検索やドキュメントリソースを利用できます。
主な機能
- 01docs.rsのクレート文書のダウンロード
- 02SQLiteへの文書索引化
- 03クレートと項目の検索
- 04キャッシュ済み文書リソースの取得
活用シーン
- 01クレートとバージョン情報の確認
- 02関数、型、モジュールの検索
- 03ローカル索引を使った文書検索
MCP 対応
MCPサーバーは、クレート検索ツールとcrate://リソースをクライアントに公開し、メタデータ、README、項目、ソースリソースを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Bookworm
docs.rs のドキュメントを扱うためのツール集です。
Crates
wrm_dl
docs.rs からクレートのドキュメントをダウンロードし、ローカルディレクトリに保存します。
ライブラリとバイナリの両方が用意されています。次のコマンドでローカルで実行できます。
cargo run --bin wrm-dl --features cli -- regex
Documentation downloaded successfully to /tmp/...
wrm_index
ローカルに保存されたクレートのドキュメントを SQLite データベースにインデックス化します。
ライブラリとバイナリの両方が用意されています。次のコマンドでローカルで実行できます。
cargo run --bin wrm-index --features cli -- /tmp/...
Documentation indexed successfully to ./index.sqlite
wrm_query
ローカルに保存されたクレートのドキュメントとインデックスデータベースを使って、クレートのドキュメントを検索します。
wrm_docs
ローカルにキャッシュされた docs.rs ドキュメントから詳細を取得します。
wrm_mcp
クレートのドキュメントを提供する モデルコンテキストプロトコル サーバーです。
次のコマンドでローカルで実行できます。
cargo run --bin wrm-mcp
MCP クライアントへのサーバーの追加方法はクライアントによって異なりますが、次の例は Claude.ai で動作します。
{
"mcpServers": {
"bookworm": {
"command": "/path/to/wrm-mcp"
}
}
}
ツール
MCP クライアント機能を備えた LLM で、次のツールを利用できます。
crates_search
指定したクエリに一致するクレートの一覧を取得します。
返される一覧には、各クレートの追加情報を取得するための URI が含まれます。
crate_search_items
指定したクエリに一致するアイテムの一覧を取得します。
各アイテムの種類には、次の情報が含まれます。
- アイテムのパス(例:
serde_json::value::Value) - アイテムの種類(例:
enum) - 型シグネチャ
- ドキュメント
- 関連リソースの URI
crate_search_src (TODO)
指定したクエリについて、クレートのソースコード全体を検索します。
各アイテムには、ソースコードファイルの URI、行番号、一致した行の内容が含まれます。一致箇所の前後に追加のコンテキストがある場合は、その内容も含まれます。
crate_resource
クレートを見つけた場合(またはクレート名がわかっている場合)は、crate_resource ツールを使って関連リソースを取得できます。このツールには、リソースの URI を指定します。
次の URI がサポートされています。
crate://{crate_name}- クレートのバージョン一覧crate://{crate_name}/{crate_version}- メタデータを取得crate://{crate_name}/{crate_version}/readme- readme の内容を取得crate://{crate_name}/{crate_version}/items- アイテムリソースの一覧crate://{crate_name}/{crate_version}/src- ソースコードリソースの一覧crate://{crate_name}/{crate_version}/{path}- アイテム/ソースリソースを取得
crate://{crate_name} - クレートのバージョン一覧
指定したクレート名のバージョン一覧を返します。
一覧の各アイテムには、次の情報が含まれます。
- バージョン
- リリース日
- MSRV
- ダウンロード数
- 公開者
crate://{crate_name}/{crate_version} - クレートのメタデータを取得
次のメタデータが返されます。
- 名前
- バージョン
- リリース日
- 説明
- ホームページ
- リポジトリ
- ライセンス
- URI:
- Readme(例:
crate://serde_json/1.0.85/readme) - クレートアイテム(例:
crate://serde_json/1.0.85/items) - ソースコード(例:
crate://serde_json/1.0.85/src)
- Readme(例:
crate://{crate_name}/{crate_version}/readme - クレートの readme を取得
クレートの README を Markdown 形式の文字列として返します。
crate://{crate_name}/{crate_version}/items - クレートのアイテム一覧
指定したクレートのバージョンのアイテム一覧を返します。
アイテムはクレートを構成する要素です。アイテムには次の種類があります。
- モジュール
- 関数定義
- 型定義
- 構造体定義
- 列挙型定義
- トレイト定義
- 実装
特定のアイテムを検索するには、search_crate_items を使用してください。
crate://{crate_name}/{crate_version}/src - クレートのソースコードリソース一覧
指定したクレートのバージョンのソースコードリソース一覧を返します。
例:
<Resources>
<Resource uri="crate://serde_json/1.0.85/src/serde_json/lib.rs" />
<Resource uri="crate://serde_json/1.0.85/src/serde_json/value.rs" />
<Resource uri="crate://serde_json/1.0.85/src/serde_json/map.rs" />
<Resource uri="crate://serde_json/1.0.85/src/serde_json/value/mod.rs" />
...
</Resources>
クレートのソースコード全体を検索するには、search_crate_src を使用してください。
crate://{crate_name}/{crate_version}/{crate_resource_path} - クレートリソースを取得
指定したパスにあるリソースの内容を返します。
URL テンプレート
{crate_name}はクレートの正確な名前です。{crate_version}は(部分的な)セマンティックバージョニング互換のバージョン番号、または 最新の公開済みクレートバージョンを示すlatestです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。