概要
2026年6月、Laravel公式ブログで、Laravel AI SDKで構築したAIエージェントから MCP(Model Context Protocol)サーバーに接続できるようになったことが発表されました。 これまでLaravel MCPは「Laravelアプリを MCPサーバーとして 公開する」機能を提供していましたが、今回追加されたのは逆方向、つまり「Laravelアプリが MCPクライアントとして 他のMCPサーバーに接続する」機能です。MCP自体の詳しい仕組みはLaravel MCPのドキュメントを参照してください。このページではクライアント機能に絞って解説します。
なぜAI SDK本体ではなくLaravel MCPに実装されたか
MCPはトランスポートのネゴシエーション、ハンドシェイク、認証フローなど扱う範囲が広いプロトコルです。これをAI SDK内に直接実装すると、エージェントなしでMCPサーバーと通信したい場面(キュージョブやコンソールコマンドなど)で再利用できません。 そこでLaravel チームは機能を2つに分けました。laravel/mcp:接続・ネゴシエーション・認証・ツール呼び出しを担当するMCPクライアント本体laravel/ai:エージェントがそのクライアントをtools()から違和感なく使えるようにする薄い統合層
MCPサーバーへの接続
ローカルプロセスとして起動するSTDIOサーバーと、HTTP経由のリモートサーバーの両方に対応しています。tools()を呼ぶだけで済みます。
認証
Bearerトークン
OAuth
Nightwatchなど多くのホスト型MCPサーバーはOAuthを要求します。サービスプロバイダーで名前付きクライアントを登録します。mcp.oauth.nightwatch.connectと対応するコールバックルートが生成されます。Blade側では接続ボタンを置くだけです。
エージェントへの組み込み
一番のポイントは、エージェントのtools()メソッドを変更せずにMCPツールを混ぜられることです。
tools()配列の中身がMCPツールであることを検知し、エージェントのツール契約に合うようラップします。MCPの入力スキーマをLaravelのJSONスキーマに変換し、モデルがツールを呼び出したときにリモート呼び出しを行い、結果を正規化して返します。エラー、構造化データ、プレーンテキスト、ストリーミング更新のいずれも自動的に処理されるため、エージェント側のコードにMCPの詳細が漏れ出すことはありません。
複数のトランスポートを1つのエージェントに混在させることもできます。
ツール一覧のキャッシュ
ツール一覧の取得にはサーバーへの往復が発生します。特にOAuth経由のリモートサーバーでは、プロンプトのたびに呼び出すのは無駄です。ツール一覧は頻繁に変わらないため、キャッシュ対象として適しています。テスト
実際に稼働しているMCPサーバーがなくても、Laravel AIのフェイク機能でエージェントをテストできます。MCPツール名はmcp_tools_<name>という命名規則に従うため、searchというツールはmcp_tools_searchとして現れます。
現時点でサポートされる範囲
この最初のリリースでは、STDIOとStreamable HTTPの両トランスポートで、ツールとプロンプトをサポートしています。認証はBearerトークンとOAuthに対応しています。MCP自体の進化に合わせて、今後も対応範囲が広がっていく見込みです。関連ページ
AI SDKのカスタムプロバイダーを作る
標準対応していないAIサービスに対応するカスタムプロバイダーの実装方法
Laravel Nightwatch 入門
この記事で例に使われているホスト型監視サービスNightwatchの解説