LiferayをMCPサーバーとして使用する
Liferay DXP 2026.Q3+ リリース機能
モデルコンテキストプロトコル(MCP)は、 GitHub Copilot や Cursor などの AI アプリケーションを外部ツールやデータに接続するためのオープンソース標準です。 Liferay DXPは、AIアプリケーションが接続できるMCPサーバーとして機能することができます。有効にするには、LPD-63311機能フラグを有効にしてから、MCPサーバー構成を有効にしてください。その後、MCPをサポートする任意のAIサービスをLiferay DXPと連携するように設定できます。
MCPサーバーは、 /o/mcp上で、基本認証とOAuth 2.0ベアラートークンの2つの認証方式を受け入れます。基本認証の場合、 資格情報をエンコードしてトークン を作成し、それを Authorization ヘッダーで渡します。ベアラートークンについては、 OAuth 2.0 での接続 を参照してください。
MCPサーバーは、追加の設定なしに複数のLiferay DXPノード間で動作します。ロードバランサーは、セッションアフィニティ(スティッキーセッション)を必要とせずに、Liferay PaaSやその他のクラスタ構成を含むあらゆるノードにリクエストをルーティングできます。
どちらの方式も、リクエストの背後にいるLiferay DXPユーザーを特定し、AIクライアントはそのユーザーの権限で動作します。
MCPサーバーを有効にする
MCPサーバーの設定は単一の仮想インスタンスに適用され、デフォルトでは無効になっています。複数の仮想インスタンスを実行している場合は、MCPリクエストを処理するインスタンスでのみ有効にしてください。
-
LPD-63311 リリース機能フラグ を有効にします。このフラグを有効にするまで、 MCP サーバー のエントリはインスタンス設定に表示されません。
-
コントロール パネル → インスタンス設定 → プラットフォーム → MCP サーバー に移動します。
-
有効 をチェックし、 保存 をクリックします。

MCPサーバーを無効にする
MCP サーバーを無効にするには、 コントロール パネル → インスタンス設定 → プラットフォーム → MCP サーバーに移動し、 有効のチェックを外し、 保存 をクリックします。
無効化されると、 /o/mcp へのリクエストは、仮想インスタンスに対して 404 を返します。そのインスタンスに対して設定されたAIアプリケーションはLiferay DXPにアクセスできなくなりますが、他の仮想インスタンスには影響はありません。
GitHub Copilotの設定
GitHub Copilot の設定には Visual Studio Code を使用する必要があります。
-
VS Code の場合は、 の手順に従ってください。
-
mcp.jsonファイルを追加したら、Liferay DXP 用にこの設定を保存します。{ "servers": { "liferay": { "url": "http://localhost:8080/o/mcp", "type": "http", "headers": { "Authorization": "Basic [basic auth token]" } } } }
カーソルの設定
-
クイックスタート手順 に従って、CursorアプリケーションでMCPサーバーを設定します。
-
MCPサーバーの設定は、デフォルトでは
[ホームディレクトリ]/.cursor/mcp.jsonにあります。 Liferay DXPを使用するには、この設定をファイルに保存してください。{ "mcpServers": { "liferay": { "url": "http://localhost:8080/o/mcp", "type": "http", "headers": { "Authorization": "Basic [basic auth token]", "Content-Type": "application/json" } } } }
Claude Desktopの設定
-
これらの指示に従ってください。
-
Claude Desktop アプリケーションの開発者設定を開いて、サーバー構成にアクセスします。
claude_desktop_config.json。 Liferay DXPを使用するには、この設定を保存してください。{ "mcpServers": { "liferay": { "command": "npx", "args": [ "mcp-remote", "http://localhost:8080/o/mcp", "--header", "Authorization: Basic [basic auth token]" ] } } }
Gemini CLIの設定
-
これらの指示に従ってください。
-
settings.jsonファイルを追加したら、Liferay DXP 用にこの設定を保存します。{ "mcpServers": { "liferay": { "httpUrl": "http://localhost:8080/o/mcp", "headers": { "Authorization": "Basic [basic auth token]" } } } }
OAuth 2.0 で接続する
Liferay DXP は、OAuth 2.0 認証サーバーを介して Bearer トークンを発行し、MCP サーバーは Liferay DXP の通常の REST 認証に委任するのではなく、それらを自身で検証します。 OAuth 2.0 の使用 および OAuth 2.0 アプリケーションの作成 を参照してください。
上記のクライアントのいずれかでベアラートークンを使用するには、 Basic [基本認証トークン] の値を Bearer [アクセストークン] に置き換えます。
ベアラートークンは、そのトークンが対象とするリソースに対してのみ有効です。 MCP サーバーのリソース URI は、Liferay DXP インスタンスのベース URL、パス コンテキスト、および /o/mcp を組み合わせたものです。デフォルトのインストールでは、パス コンテキストは空なので、 http://localhost:8080/o/mcp となります。クライアントは、トークンを要求する際に、URIを リソース パラメータとして送信することで、そのオーディエンスを要求します。 MCPサーバーは、このオーディエンスが含まれていないトークンはすべて拒否します。Liferay DXPの他のREST APIでは機能するトークンであっても同様です。
認証サーバーの検出
/o/mcp へのリクエストで Authorization ヘッダーがない場合、 401 が返され、レスポンスヘッダーは次のようになります。
WWW-Authenticate: Bearer realm="mcp", resource_metadata="http://localhost:8080/o/.well-known/oauth-protected-resource/mcp"
無効化されたサーバーは 404を返すので、 401 はサーバーが稼働していることを示します。 MCPクライアントは、 resource_metadata URLをたどって認証サーバーを検出します。
resource_metadata エンドポイントは、LPD-63311 に加えて、 RFC 8414: Authorization Server Metadata リリース機能フラグ (LPD-63415) を必要とします。これがないと、エンドポイントは 404 を返し、クライアントは検出を完了できません。
トークンが拒否される理由
Authorization ヘッダーが /o/mcp で拒否され、 401 が error="invalid_token" と、次のいずれかの error_description 値とともに返されます。
| エラーの説明 | 原因 |
|---|---|
Authorization header is not a bearer token | Authorization ヘッダーが存在しますが、 Basic または Bearer のいずれでも開始されません。 |
Access token is unknown or revoked | 一致する認証が存在しないか、認証が別の仮想インスタンスに属しているか、または認証に保存されているトークンの内容が無効になっています。サーバーは、トークンがユーザーまたはゲストユーザーに解決された場合にも、この説明を返します。これは、オーディエンスを検証した後に確認されます。 |
Access token has expired | トークンの有効期限が過ぎました。 |
Access token is not bound to this MCP server | トークンのオーディエンスリストには、MCPサーバーのリソースURIが含まれていません。 |
ツール呼び出しトークンの使用量を削減する
LiferayのMCPサーバーツールは、以下のような方法でトークンの消費量を削減します。
- GET ベースのツールは
フィールドパラメータを受け入れるため、呼び出し元は必要な応答フィールドのみを要求して、応答ペイロードをトリミングできます。これは、Liferay のヘッドレス REST API と同じフィールドパラメータ 規約を使用します。 - ツールの入力スキーマにおけるネストされたオブジェクト参照は、3階層を超えると展開が停止します。それより深い階層は不透明なオブジェクトに縮退するため、深くネストされたエンティティはツールのスキーマを膨張させることはありません。
- 書き込み操作 (POST、PUT、および PATCH) ツールの入力スキーマでは、サーバーが自身で設定するフィールド (
やおよびdateCreatedなど) は省略されます。
公式MCPインスペクターを使用したデバッグ
サーバーの設定が完了したら、公式の MCP インスペクター を使用してテストおよびデバッグできます。
インスペクターを起動するには、以下のコマンドを実行します。
npx @modelcontextprotocol/inspector
インスペクターを以下のパラメータで設定してください。
URL: http://localhost:8080/o/mcp
トランスポート: ストリーミング可能なHTTP
ヘッダー: 認証: Basic [基本認証トークン] または 認証: Bearer [アクセストークン]
機能の利用可能性
| Liferayバージョン | 機能ステータス | 機能フラグラベル | 依存関係 |
|---|---|---|---|
| Liferay DXP 2025.Q4 | ベータ | Liferayモデルコンテキストプロトコル(MCP)サーバー(LPD-63311) | 該当なし |
| Liferay DXP 2026.Q3 | リリース | Liferayモデルコンテキストプロトコル(MCP)サーバー(LPD-63311) | リリース LPD-63415、OAuth 2.0 検出専用 |