Rust FAF について
Rust FAF は、`project.faf` に保存する永続的なプロジェクトコンテキストを扱う Rust 製 MCP サーバーです。プロジェクト構造の検出、コンテキストの検証と圧縮、エージェント向けファイルの同期を行えます。
主な機能
- 01プロジェクトコンテキストの作成と検出
- 02AI対応度の採点とフィールド検証
- 03`CLAUDE.md` の同期と `AGENTS.md` の作成
- 04コンテキストの解析、圧縮、トークン数推定
- 05GitHub URLからのプロジェクト記述生成
活用シーン
- 01複数のAIセッションでプロジェクト情報を共有
- 02新規プロジェクトの構造化コンテキストを作成
- 03トークン制限に合わせてコンテキストを圧縮
- 04公開GitHubリポジトリからプロジェクト記述を生成
MCP 対応
stdio を使用する Rust 製 MCP サーバーで、プロジェクトコンテキストのツールとリソースをクライアントに提供します。`faf_git` が GitHub API を呼び出す以外、ツールはローカルで動作します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
rust-faf-mcp
Rust MCP クライアント向けの永続的なプロジェクトコンテキスト。ネイティブ。高速。cargo install
The Lineage Edition(v0.8.3) — one.faf/rust-faf-mcp · rmcp 3.0.1(MCP Tier 1 の基盤)· faf-rust-sdk 3.1.1(faf-wasm-sdk が使用するものと同じ、常に 33 のカーネル)· Rust 開発者向けの堅牢な cargo ネイティブ Rust MCP
v0.8.3 — --version と --help は、サーバーを起動せずに応答します。CHANGELOG を参照してください。
FAF が定義し、AGENTS.md が指示し、AI がコードを書きます。
AI セッションのたびにプロジェクトを説明し直すのはやめましょう。1 つの
.fafファイルに永続的なプロジェクトコンテキストを保持できます。すべての AI が一度読み込めば、何を作っているのかを把握できます。
FAF 向けの Rust ネイティブな MCP(Model Context Protocol)サーバーです。YAML(application/vnd.faf+yaml)で構造化された AI プロジェクトコンテキストを提供します。単一バイナリ、stdio トランスポート、strip 後 4.3 MB です。rmcp と faf-rust-sdk を基盤に構築されています。
クイックスタート
# Rust toolchain (install):
cargo install rust-faf-mcp --version 0.8.3
# No Rust (try — downloads GH Release binary for darwin/linux):
npx --yes [email protected]
MCP クライアントから pin を指定してください。PATH 上の素の rust-faf-mcp は、古い Homebrew バイナリかもしれません。
# Claude Code
claude mcp add faf -- npx --yes [email protected]
// Cursor, Claude Desktop, Windsurf — any client that reads mcpServers
{
"mcpServers": {
"faf": {
"command": "npx",
"args": ["--yes", "[email protected]"]
}
}
}
cargo install rust-faf-mcp --version 0.8.3 の実行後は、"command": "rust-faf-mcp" がインストール先になります。そのバイナリを確認するまでは、npx の pin を使用してください。
フラグも設定ファイルもネットワークリスナーも不要です。純粋な stdio JSON-RPC です。
または Homebrew 経由でインストールできます(macOS、ビルド済み)。すでにインストールしている場合はアップグレードしてください。古い keg が PATH 上に rust-faf-mcp として残っていることがあります。
brew update
brew install Wolfe-Jam/faf/rust-faf-mcp
# already installed:
brew upgrade Wolfe-Jam/faf/rust-faf-mcp
コマンド 1 つで、あとはずっとお任せ
faf_auto は、project.faf が存在しない場合に setup を実行します(ツリー検出によって機械的な事実を書き込みます)。その後、CLAUDE.md を同期します。既存ファイルを書き換えることはありません。Confirm setup(sweeps) は setup で入力された内容を一覧表示します。内容を確認してください。これは 2 回目の書き込みゲートではありません。人が入力する欄は、記入を指示するまで空のままです。
faf_auto complete
━━━━━━━━━━━━━━━━━
Score: 0% → 42% (+42) ● GREEN
Steps:
1. Setup — created project.faf
2. Created CLAUDE.md
Path: /home/user/my-project
Confirm setup (sweeps)
Walk these. Detection is already a fact. Not a second write-gate.
project.name my-api
project.main_language Rust
stack.backend Rust
生成される内容:
# project.faf — your project, machine-readable
faf_version: "3.3"
project:
name: my-api
goal: REST API for user management
main_language: Rust
version: "0.1.0"
license: MIT
instant_context:
what_building: REST API for user management
tech_stack: Rust 2024
key_files:
- Cargo.toml
- src/main.rs
- README.md
commands:
build: cargo build
test: cargo test
stack:
backend: Rust
build: cargo
すべての AI エージェントがこれを一度読み込めば、何を作っているのかを正確に把握できます。20 分かかるオンボーディングは不要です。誤った前提もなくなります。
ツール
作成と検出
| ツール | 説明 |
|---|---|
faf_auto | ファイルがない場合は setup を実行し、CLAUDE.md を同期してスコアを算出 — Confirm setup(sweeps)。6Ws を作り出すことはありません |
faf_init | setup:ツリーから初回書き込みを実行します。ファイルが存在する場合は拒否します。Confirm setup(sweeps)。6Ws は空のままです |
faf_go | Table-of-8 + Confirm setup(sweeps)。☑ の後に 6Ws のスコアを算出します。100 未満の場合は Human Context を追加してください。100 の後は 30 日ごとに確認します(最大 90 日) |
faf_git | GitHub リポジトリの URL から project.faf を作成します。クローンは不要です。公開 GitHub API を使用し、テキストを返します。書き込みは行いません |
faf_discover | ディレクトリツリーを上方向にたどり、最も近い project.faf を探します |
スコア算出と検証
| ツール | 説明 |
|---|---|
faf_score | フィールドごとの内訳とともに、AI 対応度を 0~100% でスコア化します |
faf_sync | project.faf → CLAUDE.md を同期します(既存の内容を保持します) |
faf_agents | project.faf から AGENTS.md を作成します(破壊的な変更は行わず、手書きの内容を保持します) |
最適化
| ツール | 説明 |
|---|---|
faf_read | project.faf の内容を解析して表示します |
faf_compress | トークン数に制限のあるコンテキスト向けに .faf を圧縮します(minimal / standard / full) |
faf_tokens | 各圧縮レベルでのトークン数を推定します |
系譜
| ツール | 説明 |
|---|---|
faf_dna | .faf-dna に記録された FAF DNA の歩みです。誕生時の DNA から現在までを、履歴とともに確認できます。faf_init が誕生させ、faf_auto が成長を記録します。faf-cli と同じファイルです |
各ツールは MCP アノテーションを宣言します。faf_read、faf_score、faf_compress、faf_discover、faf_tokens、faf_dna、faf_git は読み取り専用です。書き込みツールは非破壊的で、ネットワークにアクセスするのは faf_git だけです。
faf_init は既存のファイルを上書きしません。セットアップでは機械的な事実を記録し、セットアップの確認(スイープ)が実際の作業です。人間が記入する欄は、faf_go を実行するまで空欄のままです。
アーキテクチャ
src/
├── main.rs # ~20 lines — tokio entry, rmcp stdio transport
├── server.rs # FafServer: #[tool_router], ServerHandler, resources
└── tools.rs # Business logic — tools as pure functions returning Value
- ランタイム:
tokioのシングルスレッド(current_thread) - HTTP:
reqwestによる非同期処理(GitHub API 用にfaf_gitだけが使用) - SDK:
faf-rust-sdk3.1(Cargo の固定バージョン。faf-rust にあるfaf-kernel/faf-fafbのファサード。常に 33 となる数値にはscore()を、構造チェックにのみvalidate()を使用します) - サーバー:
rmcp3.0.1 と#[tool_router]/#[tool_handler]— JSON-RPC、パラメーター型からの JSON Schema、stdio トランスポート(Tier-1 評価済み SDK ビルド)
ツールは serde_json::Value を返します。サーバーはこれを rmcp の IntoCallToolResult 用に Result<String, String> へ変換します。
テスト
193 件のテスト(統合テスト 146 件+ユニットテスト 47 件):
cargo test # runs all 193
# Full ship bar (same gates as GitHub CI — run before push)
bash scripts/ci.sh
# Optional: block push on red CI twin
bash scripts/install-hooks.sh
| ファイル | テスト数 | カバレッジ |
|---|---|---|
mcp_protocol.rs | 10 | 初期化ハンドシェイク、tools/list、ツールアノテーション、リソース、スキーマ検証、ID の保持 |
tools_functional.rs | 31 | ツール — 正常系、エラー系、言語検出、faf_go |
tier1_security.rs | 12 | パストラバーサル、ヌルバイト、シェルインジェクション、過大な入力、不正な JSON |
tier2_engine.rs | 36 | 破損した YAML、同期置換、パイプライン、二重マニフェスト、レガシーなファイル名、直接パス |
tier3_edge_cases.rs | 10 | Unicode、CJK、スコア境界、未知のフィールド、GitHub URL の解析 |
tier4_aero.rs | 22 | マニフェスト構造、バージョン同期、server.json、コンテキストブロック、マニフェストとサーバーの相互検証 |
wjttc_setup.rs | 16 | セットアップ/セットアップの確認(スイープ)— BRAKE · ENGINE · AERO · TYRE · PIT |
wjttc_faf_dna.rs | 7 | .faf-dna の系譜 — faf_init による誕生、faf_auto による成長、faf_dna、faf-cli の各行 |
src のユニットテスト | 47 | セットアップスイープ、スキルのダイジェスト、agents::、inject::、インテント、アプリ種別、dna:: の系譜+faf-cli のフィクスチャ |
テストではコンパイル済みのバイナリをサブプロセスとして起動し、stdin/stdout 経由で JSON-RPC 通信を行います。実際のサーバーに対する真の統合テストです。
FAF エコシステム
1 つの形式で、あらゆる AI プラットフォームに対応します。
| パッケージ | プラットフォーム | レジストリ |
|---|---|---|
| rust-faf-mcp | Rust | crates.io |
| claude-faf-mcp | Anthropic | npm + MCP #2759 |
| gemini-faf-mcp | PyPI | |
| grok-faf-mcp | xAI | npm |
| faf-cli | ユニバーサル | npm |
ソースからビルドする
git clone https://github.com/Wolfe-Jam/rust-faf-mcp
cd rust-faf-mcp
cargo build --release
# Binary at target/release/rust-faf-mcp (about 5 MB)
エディション:2024 | LTO:有効 | Strip:シンボル
rust-faf-mcp が役に立った場合は、リポジトリにスターを付けていただけると、ほかの人にも見つけてもらいやすくなります。
リンク
-
npmjs.com/package/rust-faf-mcp —
npx --yes [email protected](Rust ツールチェーン不要。GH Release バイナリをダウンロードします) -
デュアルパッケージの公開ガイド — cargo + npm(このサーバーは製品の例です)
-
docs/DUAL-PACKAGE.md — このリポジトリのポインターと OIDC のドキュメント
-
docs/SKILLS-OVER-MCP.md — J1 エージェントスキル
faf-context(skills/list · ダイジェスト) -
faf-rust-sdk — このサーバーが依存するパーサー
-
faf.one — FAF のホーム
-
IANA 登録 —
application/vnd.faf+yaml -
MCP Registry 名:
mcp-name: one.faf/rust-faf-mcp
引用
研究または本番環境で rust-faf-mcp や .faf/.fafa 形式を使用する場合は、形式に関する論文を引用してください。
Wolfe, J. (2025). 形式主導型 AI コンテキストアーキテクチャ:永続的なプロジェクト理解のための .faf 標準. Zenodo. https://doi.org/10.5281/zenodo.18251362
Wolfe, J. (2026). エージェントにパスポートが必要な理由:.fafa — エージェント時代に向けたポータブルなアイデンティティ. Zenodo. https://doi.org/10.5281/zenodo.21951641
ライセンス
MIT
@wolfe_jam が開発 | wolfejam.dev
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。