🔥

Laravel Boost + Claude Code 実践ガイド― MCP 連携による AI 開発環境構築

に公開

最近の AI エージェントは、開発の手法は多々あれど、基本的な機能としてはChatGPT のように「マニュアルを読まなくても何となく使える」設計になっている。つまり、裏でどんな設定が動いているかを気にしなくても、とりあえず会話すれば動くというのはある。
ただし、MCPなどの外部ツールを明示的に設定する場合、CUI 環境では設定プロセスが可視化されにくいため、設定経験がない人も多いだろう。ここではClaude Codeを利用しLaravel Boostというlaravel専用のMCPサーバーを使う例をハンズオン形式で手順を解説する。(MCPとは何ぞやというのはここで解説しないが理解していない人も読みすすめれば理解いただけるのではないかという内容にしてある)。なおエージェントの利用はClaude Codeを利用して書いているが、他のエージェントでも似たような動作になるだろうとは思う。

先にClaude CodeMCPに関するマニュアルを先にポイントしておくので必要に応じて参照されたい。

https://docs.claude.com/ja/docs/claude-code/mcp

実践的な例をやる

ここではmy-react-starter-kitというほぼ未改変の Starter Kitを使って実行してみる事にする。システムにphpとcomposerが入っていると仮定している。こちらのリポジトリーを使わずとも、laravel newしてもよいし、本家 https://github.com/laravel/react-starter-kit からcloneしてもよい。

git clone https://github.com/catatsumuri/my-react-starter-kit.git
cd my-react-starter-kit/
cp .env.example .env

Laravel Boostのインストール手順

composer

--dev オプション付きで laravel/boost をインストールする

composer require laravel/boost --dev

php artisan boost:install

# laravel boostをインストール
php artisan boost:install

すると

 ██████╗   ██████╗   ██████╗  ███████╗ ████████╗
 ██╔══██╗ ██╔═══██╗ ██╔═══██╗ ██╔════╝ ╚══██╔══╝
 ██████╔╝ ██║   ██║ ██║   ██║ ███████╗    ██║
 ██╔══██╗ ██║   ██║ ██║   ██║ ╚════██║    ██║
 ██████╔╝ ╚██████╔╝ ╚██████╔╝ ███████║    ██║
 ╚═════╝   ╚═════╝   ╚═════╝  ╚══════╝    ╚═╝

  ✦ Laravel Boost :: Install :: We Must Ship ✦

 Let's give Laravel a Boost

 ┌ Which third-party AI guidelines do you want to install? ─────┐
 │ › ◻ laravel/fortify (~311 tokens) Laravel Fortify            │
 └──────────────────────────────────────────────────────────────┘
  You can add or remove them later by running this command again

という画面が登場する

laravel/fortify (~311 tokens) Laravel Fortifyについて

ここでは、laravel/fortify(認証パッケージ) がインストールされている場合にこの項目が表示される。
実際には vendor/laravel/fortify/resources/boost/guidelines/ をチェックしており、
つまり vendor/{vendor}/{package}/resources/boost/guidelines/ にファイルが存在すれば、
今後ここに選択肢として自動的に追加される仕組みになっている。

なお、ガイドラインとは AI エージェントに読ませる Markdown テキスト のことである。
参考までに、以下は Fortify 用のガイドラインファイルの例である(Blade テンプレートとして記述されている点が興味深い)。

https://github.com/laravel/fortify/blob/1.x/resources/boost/guidelines/core.blade.php

トークン数の計算は次のように行われている。

'tokens' => round(str_word_count($rendered) * 1.3),

コードエディターとエージェントガイドラインの選択

続いて、次のような選択画面が表示される。

 ┌ Which code editors do you use to work on Laravel? ───────────┐
 │ › ◼ Claude Code                                              │
 │   ◻ Cursor                                                   │
 │   ◻ PhpStorm                                                 │
 │   ◻ VS Code                                                  │
 └──────────────────────────────────────────────────────────────┘
 ┌ Which agents need AI guidelines for Laravel? ────────────────┐
 │   ◼ Claude Code                                              │
 │ › ◻ Codex                                                    │
 │   ◻ Cursor                                                   │
 │   ◻ GitHub Copilot                                           │
 │   ◻ Junie                                                    │
 └──────────────────────────────────────────────────────────────┘

ここでは Claude Code に絞って説明する。
エディターの選択では mcp.json が生成され、エージェント側の選択では CLAUDE.md が生成される。

これらを選択すると、次のようにガイドラインが追加される。

 Adding 15 guidelines to your selected agents
 ╭──────────────────────────┬──────────────────────────╮
 │ boost                    │ foundation               │
 ├──────────────────────────┼──────────────────────────┤
 │ inertia-laravel/core     │ inertia-laravel/v2       │
 ├──────────────────────────┼──────────────────────────┤
 │ inertia-react/core       │ inertia-react/v2/forms   │
 ├──────────────────────────┼──────────────────────────┤
 │ laravel/core             │ laravel/fortify          │
 ├──────────────────────────┼──────────────────────────┤
 │ laravel/v12              │ php                      │
 ├──────────────────────────┼──────────────────────────┤
 │ phpunit/core             │ pint/core                │
 ├──────────────────────────┼──────────────────────────┤
 │ tailwindcss/core         │ tailwindcss/v4           │
 ├──────────────────────────┼──────────────────────────┤
 │ tests                    │                          │
 ╰──────────────────────────┴──────────────────────────╯

  Claude Code... ✓

これらのガイドラインが収集されてCLAUDE.mdなどが作成される。などが、と書いたのは結局CLAUDE.mdAGENTS.mdもそれ以外も全て同じファイルが作成されるので(複数ある場合はシンボリックリンクしておいた方がいいまであるかもしれない)。

内包ガイドラインファイルについて

Laravel Fortify の場合は、Fortify が独自に提供するガイドラインファイルを利用していたが、
ここで紹介するガイドライン群は Laravel Boost が内包している標準ガイドライン である。

vendor/laravel/boost/.ai/
├── foundation.blade.php
├── boost/core.blade.php
├── php/core.blade.php
├── laravel/
├── inertia-react/
├── tailwindcss/
└── ...
に存在

Laravel Boostパッケージに内包されているものであるため、実際には個別パッケージより鮮度に問題が出てくる可能性が懸念される。なお、boost:updateするとガイドラインが再生成される。従って手修正する場合は上書きされる可能性に注意する

ガイドラインの動的収集

ガイドラインはすべて無条件に統合されるわけではなく、インストールされているパッケージの構成に応じて動的に生成される。

# パッケージ検出による動的生成
// `Roster` (Laravelパッケージのバージョン検出ライブラリ)がcomposer.lockとpackage.jsonを解析
foreach ($this->roster->packages() as $package) {
    // 例: Pestがインストールされている場合
    $guidelines->put('pest/core', ...);
    $guidelines->put('pest/v4', ...);
}

このように、Roster が依存関係を解析し、対応するガイドラインを選択的に統合していく。
ただし、一部のパッケージには排他ルールが設定されている。

$this->packagePriorities = [
    'pest' => ['phpunit'],  // Pestがあればphpunitを除外
    'fluxui-pro' => ['fluxui-free'],  // Proがあればfreeを除外
];

ソースコードを確認する限り、現在のところ排他設定があるのはこの 2 組のみである。

MCPツール(15種類以上)について

  • ApplicationInfo - アプリ情報取得
  • DatabaseSchema - DB構造確認
  • DatabaseQuery - DBクエリ実行
  • Tinker - PHPコード実行
  • ListRoutes - ルート一覧
  • SearchDocs - Laravel公式ドキュメント検索(17,000以上の情報)
  • BrowserLogs - ブラウザログ読取
  • LastError - 最新エラー確認
  • など

これらのツールは、たとえば vendor/laravel/boost/src/Mcp/Tools/Tinker.php のように、
各ツールごとにクラスとして実装されている。いずれも純粋な PHP で構成されているため、
ソースを直接参照して動作を理解することも可能である。

MCP(Model Context Protocol)の詳細な仕様は公開情報が限られているが、
Laravel Boost 内の各ツールはその仕様に沿った形式で実装されていると考えられる。

最終的に作成されるファイル

Claude Code を選択した場合、インストール完了後に以下の 3 ファイルが生成される。

  • CLAUDE.md — AI エージェントに渡される「指示ファイル」。
    Laravel Boost が収集したガイドラインを統合し、Claude Code が参照可能な形式で出力する。

  • .mcp.json — MCP サーバーの設定ファイル。
    Claude Code が Laravel Boost(MCP サーバー)へ接続するためのエンドポイント情報や
    プロトコル設定がここに記録される。

  • boost.json — 前回のガイドラインやエディター選択内容を記録するファイル。
    再インストール時や boost:update 実行時に、同じ選択肢をデフォルトとして再利用するために使用される。

Claude Codeを起動して機能を確かめる

設定を完了したら、claude コマンドを起動する。すると、以下のようなメッセージが表示される。

╭──────────────────────────────────────────────────────────────────────────────╮
│                                                                              │
│ New MCP server found in .mcp.json: laravel-boost                             │
│                                                                              │
│ MCP servers may execute code or access system resources. All tool calls      │
│ require approval. Learn more in the MCP documentation                        │
│ (https://docs.claude.com/s/claude-code-mcp).                               │
│                                                                              │
│ ❯ 1. Use this and all future MCP servers in this project                     │
│   2. Use this MCP server                                                     │
│   3. Continue without using this MCP server                                  │
│                                                                              │
╰──────────────────────────────────────────────────────────────────────────────╯
   Enter to confirm · Esc to reject

  1. Use this and all future MCP servers in this project
    • このプロジェクトで今後見つかる全MCPサーバーを自動承認
    • 最も便利だが、セキュリティ意識が必要
  2. Use this MCP server
    • laravel-boostだけを承認
    • 今回のみ
  3. Continue without using this MCP server
    • MCPサーバーを使わない
    • ツール機能が使えない(ガイドラインのみ)

本ドキュメントでは、2 の「Use this MCP server」 を選択することを推奨する。

起動後の確認

Claude Codeのプロンプトにて

/mcp

実行すると、登録済みの MCP サーバー一覧が表示される。
laravel-boost に ✔ が付いていれば、接続が正しく認識されている。


laravel-boost ✔になっている


詳細view

MCPを使った指示/検索など

通常、ユーザーが MCP を意識して操作する必要はない。
エージェントが状況に応じて最適な MCP ツールを自動的に選択し、処理を行う。

たとえば、次のように入力すると、

AIプロンプト
システムにユーザーは何人居ますか

内部的に MCP が呼び出され、クエリが実行される。


MCPである事が示されている

ここではqueryが投げられたので明示的にtinkerにすると

AIプロンプト
tinker経由で確認した結果も見せられますか


tinker(MCP)経由

AIの応答
● tinker経由でも確認します。

● laravel-boost - tinker (MCP)(code: "return \\App\\Models\\User::count();",
                              timeout: 30)
  ⎿  {
         "result": 1,
         "output": "",
     … +2 lines (ctrl+o to expand)

● はい、tinker経由での確認結果は以下の通りです:

  \App\Models\User::count()
  // => 1

  同じく 1人 のユーザーが確認できました。

という結果となる。今はデモにつき結果が簡素であるが、このツールの有効な活用方法を見つけるのは、結局利用者次第、というのがAI時代のしんどい所でもある。今回のハンズオン形式はここまでに留める。

作成されたガイドラインについて

CLAUDE.mdを翻訳し、これをCLAUDE.ja.mdとしてgithubに置いた

https://github.com/catatsumuri/my-react-starter-kit/blob/boost-guideline/CLAUDE.ja.md

たとえば

Inertia v2の新機能
ポーリング
プリフェッチ
遅延プロパティ
マージプロパティとWhenVisibleを使用した無限スクロール <-------- これ
スクロール時のデータの遅延読み込み

これはInertia.js 2.2においてはWhenVisibleは無限スクロールに使うには最適ではなくなっている。ただし現在のスターターキットのInertia.jsのバージョンが2.1が基本的に同梱されているため、そちらに寄せられている事が考えられるのではあるが...


例えば具体的に検索すれば見付かる(search-docs (MCP)でも)。これを考えると、AGENTS.mdをあまりヘヴィにしない方がいい可能性まである

その他技術情報

フロントエンドデバッグツールがしれっと差し込まれている

Middleware: InjectBoost → ブラウザログ収集JSを注入
Route: POST /_boost/browser-logs → ログ受信エンドポイント
Log Channel: storage/logs/browser.log → フロントエンドエラー保存

php artisan route:list

  GET|HEAD  / ........................................................... home
  POST      _boost/browser-logs ........................... boost.browser-logs
                                                              ↑これ

これによりstorage/logs/browser.logにjsエラーが回収されエージェントが検出できるようになっているようだ。これはAIエージェントとは厳密に別の機能なので見落しがちかもしれない。

search-docsツールのドキュメント検索はAPIを通じて行われる

search-docsツールは内部のローカルドキュメントではなくAPIを通じて外部サーバーと通信し結果を検索している。

Claude Code (Agent)
    ↓ stdin
    {"method": "tools/call", "params": {"name": "search-docs", "arguments": {"queries": ["infinite scroll"]}}}
    ↓
php artisan boost:mcp (MCPサーバー)
    ↓ HTTP Request
    POST https://boost.laravel.com/api/docs
    {
      "queries": ["infinite scroll"],
      "packages": [
        {"name": "laravel/framework", "version": "12.x"},
        {"name": "inertiajs/inertia-laravel", "version": "2.x"}
      ]
    }
    ↓
Laravel Boost API (外部サーバー)
    ↓ 検索実行(17,000+のドキュメント、embeddings使用)
    ↓ HTTP Response
    {
      "results": [
        {"title": "Infinite Scrolling", "content": "...", "package": "inertia",
"version": "2.x"}
      ]
    }
    ↓
php artisan boost:mcp
    ↓ stdout
    {"result": {"content": [{"type": "text", "text": "..."}]}}
    ↓
Claude Code (Agent)

MCPサーバーの通信フロー

tcpなどは使わず、STDIN/STDOUTでやりとりしている。

まとめ

Laravel Boost は、従来の Laravel 環境に AI エージェント連携を自然に組み込むための仕組みを提供している。
MCP(Model Context Protocol)を通じてエージェントと通信し、
ガイドラインやツール群を統合することで、開発支援・コード検索・実行補助を一体化している点が特徴である。

本ドキュメントでは、主に以下の内容を確認した。

  • インストールと初期設定composer require laravel/boost --dev から boost:install までの流れ
  • 生成ファイルの構成CLAUDE.md.mcp.jsonboost.json の役割と再生成挙動
  • MCP サーバー連携:Claude Code からの検出・承認・利用手順
  • 主要ツール群TinkerSearchDocsListRoutes などの機能と実装位置
  • API 経由のドキュメント検索search-docs が外部エンドポイントにクエリを送信する仕組み
  • 補助機能InjectBoost によるブラウザログ収集と browser.log 出力
  • ガイドラインの性質:同梱版は特定バージョン準拠であり、随時の確認・調整が推奨される

総じて、Laravel Boost は “自律型 Laravel 開発環境” を実現する初期段階の設計といえる。
ただし、MCP 経由での外部通信やバージョン差異によるガイドラインの陳腐化など、
運用時のセキュリティと鮮度管理 は利用者側の責任で意識しておく必要がある。

今後は、ガイドライン更新の自動化や MCP ツールの拡張(例:DatabaseSchema のインタラクティブ対応)など、 開発者支援のための仕組みがさらに洗練されていくことが期待される。

Discussion