Ferritin — Rust documentation について
Ferritin は、rustdoc JSON を読み込んで標準ライブラリ、ローカルのワークスペースクレート、crates.io のクレートのドキュメントを表示するターミナル型の Rust ドキュメントビューアーです。コマンドラインからの API 確認を素早く行いたい開発者に向いています。
主な機能
- 01インタラクティブなターミナル用ドキュメントブラウザー
- 02get と search による一回限りのコマンド
- 03std、ワークスペースクレート、crates.io に対応
- 04履歴とパンくずリストによるナビゲーション
- 05スクリプト向けの JSON 出力
活用シーン
- 01ターミナルで標準ライブラリの型を確認
- 02特定のクレート内の関数を検索
- 03スクリプトやコーディングエージェントから Rust API ドキュメントを JSON で取得
MCP 対応
この入力では、このプロジェクトは MCP サーバーとして説明されていません。README には、当初 rustdoc-mcp MCP サーバーを支えるために開発されたと記載されています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://ferritin.rs/mcpclaude mcp add --transport http rs-ferritin-rustdoc https://ferritin.rs/mcp{"mcpServers":{"rs-ferritin-rustdoc":{"type":"http","url":"https://ferritin.rs/mcp"}}}Cursor で開く{"servers":{"rs-ferritin-rustdoc":{"type":"http","url":"https://ferritin.rs/mcp"}}}VS Code で開く{"mcpServers":{"rs-ferritin-rustdoc":{"type":"http","url":"https://ferritin.rs/mcp"}}}{"mcpServers":{"rs-ferritin-rustdoc":{"serverUrl":"https://ferritin.rs/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
2| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | アイテムのパス。例:`serde::Deserialize` または `std::vec::Vec`。crate セグメントには `@` 接尾辞付きの semver 要件を指定できます(完全一致のバージョンではありません): `tokio@1::runtime::Runtime` は最新の 1.x を使用し、`tokio@=1.40` は特定のリリースに固定します。 |
詳細
🩸 Ferritin
ターミナルベースのRustドキュメントビューアー
FerritinはrustdocのJSON出力を読み取り、Rustのドキュメントをターミナルに直接表示します。ローカルのワークスペースクレート、標準ライブラリのドキュメント、crates.ioのクレートに対応し、検索機能や、マウス操作、シンタックスハイライト、クリック可能なリンクなどの最新のターミナル機能を備えています。
機能
- キーボードとマウスで操作できるインタラクティブなドキュメントブラウザー
- ターミナルですばやくドキュメントを検索できるワンショットCLI
- クレート全体、または特定のクレート内を検索
- 次の3つのコンテキストでシームレスに動作します:
- ローカルのワークスペースクレート(nightlyツールチェーンが必要)
- 標準ライブラリ(
rust-docs-jsonrustupコンポーネントが必要) - crates.ioのクレート(必要に応じてdocs.rsから取得)
- 最新のターミナルUI。イタリック体、Unicodeのボックス描画、シンタックスハイライト、OSC8ハイパーリンク、対応ターミナルでのカーソル変更、マウスホバー時のプレビューなどの機能を備えています
- 履歴とパンくずリストによるすばやいナビゲーション
インストール
ビルド済みバイナリ(推奨)
ビルド済みバイナリを使えばコンパイルを省略でき、x86_64/aarch64 macOS、x86_64 Linux、 x86_64 Windowsで利用できます。
cargo-binstallをお使いの場合、リリースメタデータを読み取り、 お使いのプラットフォームに適したバイナリをインストールします:
cargo binstall ferritin
それ以外の場合、インストーラースクリプトがプラットフォームを検出して、対応するバイナリをダウンロードし、
~/.cargo/binに配置します:
macOSとLinux:
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/jbr/ferritin/releases/download/ferritin-latest/ferritin-installer.sh | sh
Windows(PowerShell):
powershell -c "irm https://github.com/jbr/ferritin/releases/download/ferritin-latest/ferritin-installer.ps1 | iex"
上記はいずれも常に最新のリリースをインストールします。特定の バージョンを選ぶか、[リリースページ]からアーカイブを直接ダウンロードすることもできます。
ソースから
ソースからビルドする場合(またはビルド済みバイナリがないプラットフォームの場合):
cargo install ferritin
オプション:標準ライブラリのドキュメント
std、core、allocのドキュメントを表示する場合:
rustup component add rust-docs-json
ローカルワークスペースのドキュメント
ローカルクレートのドキュメントにはnightlyツールチェーンが必要です:
rustup toolchain install nightly
注:ferritinのバージョンとnightlyツールチェーンのバージョンには関連があります。Ferritinは 最近のrustdoc JSON形式の複数のバージョンに対応しており、お使いのnightlyがより新しい 形式を生成する場合も、Ferritinは可能な限り解析します。
使い方
インタラクティブモード
インタラクティブブラウザーを起動します:
ferritin -i
起動したら、hまたは?を押すと利用可能なキー割り当てを確認できます。基本的な操作方法:
g- パスを指定して項目に移動(例:std::vec::Vec)s- 検索(Tabで現在のクレートとすべてのクレートを切り替え)l- 利用可能なクレートを一覧表示- 矢印キー、j/k、またはマウスで移動
- リンクをクリックして移動
CLIモード
特定の項目のドキュメントを表示します:
ferritin get std::vec::Vec
ferritin get serde::Serialize
項目を検索します:
ferritin search "hash map"
ferritin search --crate tokio "spawn"
ワークスペースで利用可能なクレートを一覧表示します:
ferritin list
出力形式
Ferritinは、表示方法を自動検出します。ターミナルではANSIカラー、パイプで渡された場合はプレーンテキスト、コーディングエージェントではコンパクトなMarkdown形式で出力します。--format <tty|plain|agent|json>で指定することもできます。--format jsonは構造化されたデータを出力します。getの場合は解決された項目、search/listの場合は検索結果を出力するため、スクリプトやプログラムから利用できます:
ferritin get std::vec::Vec --format json
(ライブラリAPIの進化に伴い、JSONの構造は現在も調整中です。公開用のJSON Schemaを提供する予定です。)
キャッシュとストレージ
Ferritin はキャッシュを単一のディレクトリに保存します。$FERRITIN_HOME が設定されていればその場所、そうでなければ $XDG_CACHE_HOME/ferritin、それもなければ ~/.cache/ferritin です。保存されるものはすべて再構築可能(取得または生成されたもの)なので、いつでも安全に削除できます。
- Crates.io のドキュメント:生の rustdoc JSON を
docs/{crate}/{version}/{format-version}.jsonに保存し、その隣に派生バイナリキャッシュ(部分読み込みを高速化する rkyv アーカイブと、初回検索時に遅延生成される.indexファイル)を保存します - crates.io のメタデータ:バージョン解決と入力補完に使われる crate 名のアーティファクト(
crate-names/)と、crate ごとのバージョン検索結果(crates-io-versions/)です - 標準ライブラリの検索インデックス:利用可能な場合は
{rustc sysroot}/share/doc/rust/json/に書き込まれます - ローカルワークスペースのドキュメント:共有キャッシュではなく、ワークスペース自身の
target/doc/にビルドされます
以前のバージョンでは $CARGO_HOME/rustdoc-json にキャッシュが保存されていました。この場所にキャッシュが見つかった場合は、初回実行時に自動的に移行されます。
環境変数
| 変数 | 意味 |
|---|---|
FERRITIN_HOME | キャッシュのルートディレクトリを指定します(上記を参照) |
FERRITIN_THEME | デフォルトのカラーテーマ(--theme と同等) |
FERRITIN_CRATE_NAMES_URL、FERRITIN_CRATE_DESCRIPTIONS_URL | crate 名のアーティファクトの取得元(ミラーなど)を指定します |
ferritin serve(オプトインの serve/acme 機能。配布バイナリには含まれていません)は、12-Factor スタイルで設定します。
| 変数 | 意味 |
|---|---|
HOST、PORT | バインドアドレス(:: はデュアルスタックでバインドします) |
FERRITIN_CACHE_BYTES | メモリ内 crate キャッシュの容量上限 |
FERRITIN_RSS_HIGH_WATER_BYTES | RSS ガードのしきい値(Linux のみ):匿名 RSS がこの値を超えると、キャッシュ容量を削減します |
FERRITIN_RATELIMIT | クライアントごとの /api リクエスト数(1 分あたり) |
FERRITIN_ACME_DOMAIN | このドメインで Let's Encrypt による HTTPS の自動設定を有効にします |
FERRITIN_ACME_CACHE_DIR | ACME で必須です。アカウントキーと証明書を保存します |
FERRITIN_ACME_CONTACT | ACME の連絡先メールアドレス(任意) |
FERRITIN_ACME_PRODUCTION | Let's Encrypt の本番ディレクトリを使用します(デフォルト:ステージング) |
開発専用の設定項目(安定したインターフェースには含まれません):FERRITIN_TEST_MODE(正規化されたスナップショットテスト出力)、FERRITIN_REINDEX(ディスクキャッシュを使わず、メモリ内で検索インデックスを再構築)、および検索スコアリング用の設定項目 FERRITIN_NAME_WEIGHT、FERRITIN_ANCESTOR_WEIGHTS、FERRITIN_NAME_PREFIX_COUNT です。
現在の状況
Ferritin はバージョン 0.x で、作者が主要なドキュメントインターフェースとして積極的に使用しています。一般利用の準備は整っていますが、出力形式は安定しておらず、バージョン間で変更される可能性があります。
ferritin の出力をスクリプトで処理する場合は、テキスト形式が変更される可能性がある点にご注意ください。特定のバージョンに固定するか、スクリプトの更新に備えてください。
プラットフォームのサポート
Ferritin は主に Unix 系システムで開発されており、Windows でもテストされています。Windows では CLI と対話型 TUI の両方が動作します(ビルド済みの x86_64 Windows バイナリを提供しています)。いずれかのプラットフォームで問題が発生した場合は、issue または pull request をお寄せください。
関連プロジェクト
Ferritin はもともと、Claude Code やその他の MCP クライアントに Rust ドキュメントへのアクセスを提供する rustdoc-mcp MCP server を支援するために開発されました。
ライセンス
任意で、Apache License, Version 2.0 または MIT license のいずれかに基づいてライセンスされます。お客様が別途明示しない限り、Apache-2.0 ライセンスで定義されるとおり、本 crate に含めるためにお客様が意図的に提出した貢献は、追加の条件を付すことなく、上記のとおりデュアルライセンスで提供されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。