Laravel BoostをVagrant環境で設定してみるの巻

Date:

Share post:

前回に続いて Laravel の話題で Laravel Boost についてです。

Laravel Boost は、AIコーディングエージェント(Cursor や Claude Code など)が、自分の Laravel プロジェクトの中身(DB・ルート・設定など)を踏まえて、Laravel らしいコードを書けるようにする、Laravel 公式の開発者向けツールです。アプリの機能ではなく、AI 開発を速く・正確にするための補助輪のようなものです。

Laravel Boost は AI 向けに3つの情報源を提供します。

  • 専属メンター:Laravel の作法・規約
  • プロジェクトの地図:DB・ルートなどのアプリ構造
  • バージョン付き辞書:インストール済み Laravel に合わせた公式ドキュメント

汎用 AI だけでは起きがちな「古い書き方」「プロジェクト不一致」を防ぎ、推測ではなく実プロジェクトに沿った回答を得やすくします。

今回、自分のプロジェクトに導入して試してみたところ、インストール自体は簡単でも、Cursor からの MCP 接続だけが意外と詰まる場面がありました。公式ドキュメントは php artisan boost:mcp をローカルで起動する前提が多く、「コードは Mac の共有フォルダ、PHP / MySQL は Vagrant ゲスト」 という構成の解説はあまり見かけません。

そこで本記事では、Vagrant 上の Laravel で Laravel Boost を使うための導入手順と、実際に詰まったポイントの対処法をまとめます。

まず環境は以下の通りになります。

OS:Ubuntu24.04
PHP:8.3.6
Laravel:13.15.0
MariaDB:10.11.14
Vagrant + VMware Fusionの仮想環境
エディタ:Cursor(ホスト環境で使用)

例によって、Vagrantでの環境構築(と composer のインストール)については割愛します。

仮想環境のプロジェクトルートに Laravel のプロジェクトを置きます。

$ composer create-project "laravel/laravel" public_html

Laravel インストール後の各種設定( .env の設定、storage:link、key:generate )も割愛します・・・。

Welcome画面が表示される状態になっています。

次に composer require で Boost のパッケージをインストールします。

Boost のインストールが完了したら、有効化を行います。

今回はCursorを使用するので、Cursorにチェック(SPACEキーで有効化)しています。

Boost の有効化が終わった時点の .cursor/mcp.json は以下のような状態です。

.cursor/mcp.json(初期状態)

{
    "mcpServers": {
        "laravel-boost": {
            "command": "php",
            "args": ["artisan", "boost:mcp"]
        }
    }
}

このままの状態で Cursor の設定画面に表示されている laravel-boost の MCP を起動すると、スイッチはONになりますが、以下のようにエラーとなってしまいます。

上記の mcp.json は同じマシン上に PHP と Laravel がある前提です。

Cursor が Mac 上でこのコマンドを実行すると、ホストの PHP が動きます。

ただ .env の DB のホストは以下のように

DB_HOST=127.0.0.1

Vagrant 環境(ゲスト)の MariaDB を指しています。

そのためホストから接続しようとしてもできません。そのエラーが出ている状況です。解決するためには MCP をゲスト内で起動する必要があります。そのため、次に mcp.json を以下のように変更しました。

.cursor/mcp.json(修正その1)

{
    "mcpServers": {
        "laravel-boost": {
            "command": "vagrant",
            "args": [
                "ssh",
                "-c",
                "sudo -u boost-test bash -lc 'cd /home/boost-test/public_html && php artisan boost:mcp'"
            ],
            "cwd": "/path/to/Vagrantfileがあるディレクトリ"
        }
    }
}

mcp.json を上記の内容に修正して Cursor の設定画面に表示されている laravel-boost の MCP を起動すると、今度はすぐにエラーとなってしまいました。うーん。

原因を探ってみましたところ、Boost や MCP 自体の不具合ではなく、Vagrant が VM を特定できずにプロセスが即終了しているのが原因ということが判明しました。

Vagrant の場合、以下のようにディレクトリを分けて設定していると思います。

# Vagrantfile の場所
/path/to/VMware_fusion/boost-test/

# Vagrant の共有フォルダの場所
/path/to/share/boost-test/public_html/

Cursor では public_html をワークスペースとして開きます。コード編集も MCP 設定も、このフォルダが基準になります。

一方、Vagrantfile は 別ディレクトリ に置かれていることが多いです。Virtualmin や共有フォルダ構成では、通常のケースかと思います。

問題は、MCP 起動コマンドも Cursor のワークスペース基準で実行される点です。 mcp.json に vagrant ssh を書くと、Cursor はおおむね public_html 側から そのコマンドを実行しようとします。ところが vagrant ssh は、単体では「どの VM に入るか」が分かりません。Vagrantfile があるディレクトリ を基準に、接続先 VM を特定します。 Vagrant はカレントディレクトリから親ディレクトリへ辿って Vagrantfile を探しますが、public_html から見ると Vagrantfile のある場所までのパスがつながっていないことが多いです。その結果、ターミナルで以下のようなメッセージが出ていました。

a Vagrant environment or target machine is required to run this command.

「Vagrantfile が見つからないので、どの VM に接続すればいいか分からない」ということを言っています。

これに対処するために、今回はラッパースクリプトを作成して、 Vagrantfile の場所を明示するようにしました。

.cursor/mcp-vagrant-boost.sh

#!/usr/bin/env bash
set -euo pipefail

# Vagrantfile があるディレクトリ(環境に合わせて変更)
export VAGRANT_CWD="/path/to/VMware_fusion/boost-test"

# Virtualmin ユーザーでゲスト内の boost:mcp を起動
exec vagrant ssh -c "sudo -u boost-test bash -lc 'cd /home/boost-test/public_html && exec php artisan boost:mcp'"
.cursor/mcp.json (最終版)

{
    "mcpServers": {
        "laravel-boost": {
            "command": "/絶対パス/to/public_html/.cursor/mcp-vagrant-boost.sh"
        }
    }
}

上記設定内容で、 MCP を起動してみましたところ

無事起動しました・・・。

Boost の MCP ツールについての記載は、色々他サイトでも書かれていますので今回は多く触れませんが、前段でも書きました通り、実際のプロジェクトの Laravel のバージョン、 DB の内容、ソースのコード記述を踏まえたコード提示をしてくれるので便利です。

今回のポイントは、Laravel Boost の導入自体は簡単でも、Vagrant 分離環境では MCP をゲスト内で起動する必要があることです。初期設定では DB だけ失敗し、vagrant ssh 直書きでは Vagrantfile の場所問題で Connection closed になりましたが、VAGRANT_CWD 付きラッパースクリプトで解決できました。同じ構成で詰まった方の参考になれば幸いです。

Related articles