Skip to main content

MCP

SessionConfigのmcpServersにMCPサーバーを指定すれば使うことができます。 Copilot CLIでLaravel Boostを使う場合は laravel-boost-copilot-cli も使いましょう。 'type' => 'stdio'(または'local')と'tools' => ['*']が必須なことが分かっています。これがないとMCPサーバーとして認識されません。 argsは任意です(省略可能)。

MCP Apps(experimental)

enableMcpAppsを有効にしたセッションでは、$session->rpc()->mcp()->apps()からMCP Appsのツールやリソースを操作できます。listTools()でアプリから呼び出せるツールを取得し、callTool()でツールを実行し、readResource()でui://リソース(HTMLなど)を取得します。listTools()とcallTool()には、呼び出し元サーバーを示すoriginServerNameが必要です。 getHostContext() / setHostContext()では、テーマやロケールなどホストコンテキストを読み書きできます。diagnose()はサーバーのMCP Apps対応状態を返します。
callTool()は自由形式のMCP結果を返します。SDKはデータ取得・設定用のRPCを提供しますが、取得したHTMLの描画やiframeの管理は行いません。これらはLivewireやInertiaなど呼び出し側アプリケーションで実装してください。

MCP OAuthトークンをホストから渡す

MCPサーバーがOAuth認証を要求する場合は、onMcpAuthRequestでホスト側の認証処理を指定できます。コールバックにはMcpAuthRequestとsessionIdを含むコンテキスト配列が渡され、McpAuthTokenを返すとトークンがCLIランタイムに渡されます。nullまたはkind: 'cancelled'のMcpAuthResultを返すと認証をキャンセルします。
McpAuthRequestにはrequestId、serverName、serverUrl、reason(initial、refresh、reauth、upscope)が含まれます。ハンドラーを指定すると、mcp.oauth_requiredイベントの受信登録も自動で行われます。ブラウザーを開けないWebリクエスト、キュー、バッチなどでもホスト側で認証できます。セッション再開時もResumeSessionConfigに同じハンドラーを指定してください。

MCP OAuthの事前確認(Server RPC)

リモートMCPサーバーがOAuth認証を要求した後、Server RPCでDynamic Client Registration(DCR)に対応しているかを調べられます。authorizationServerUrlはメタデータから認可サーバーを発見できた場合に返ります。supportsDcrがfalseなら動的登録は利用できません。
resourceMetadataTextはWWW-Authenticateチャレンジから得た保護リソースメタデータで、省略するとサーバーURLから認可サーバーを探索します。sessionIdを指定すると、そのローカルセッションの送信先ポリシーとsandbox proxyが適用されます。Microsoft Entra IDはDCRに対応しないため、Microsoftの認可サーバーと判定された場合は、ユーザーにクライアント資格情報を求める代わりに事前登録済みクライアントを使う選択肢があります。 これらはServer RPC(Copilot::client()->rpc())です。セッションRPCの$session->rpc()->mcp()->oauth()が提供するログインやOAuth要求の処理とは別の名前空間です。

MCPサーバーのステータス

セッション内のMCPサーバーのステータスは以下の値を取ります: $session->rpc()->mcp()->listConfigured()の各サーバーには、実行時に観測できた状態がliveとして含まれることがあります。McpConfiguredServerState::fromArray($server['live'])で型付きの状態として扱えます。McpConfiguredServerStateのtoolsLoadedは、現在の接続でツール一覧が読み込まれたかを表す任意のboolです。ランタイムが未報告の場合はnullになるため、false(未読み込み)と区別してください。
connectedステータスだけではツールが読み込まれたことを意味しません。サーバーのツール一覧が利用可能になったタイミングはsession.mcp_server_tools_loadedイベントで確認できます。このエフェメラルなイベントは接続ごとに1回、data.serverNameとdata.toolCountを伴って発火し、永続化されません。キャッシュされたツールが使われる場合は、connectedより先に届くことがあります。

MCPサーバー設定の管理(Server RPC)

セッションとは別に、サーバーレベルでMCPサーバーの設定を管理できます。

MCP再読み込み時の無効化設定

reloadWithConfig()で設定を渡す場合、configuredDisabledServersは呼び出し側が解決した設定由来の無効化リストです。セッション単位のdisabledServersやCLIのcliEnabledServersとは別に指定してください。設定由来の無効化はCLIによる有効化と明示的なセッション無効化より優先度が低いため、configuredDisabledServersをdisabledServersへまとめないでください。
最新情報は GitHub リポジトリ を参照してください。
最終更新日 2026年10月19日