back to all blogsすべてのブログ投稿を表示

MCP Server (mcp-1.0)、openidConnectClient の保護リソース・メタデータ対応など、26.0.0.9 の新機能

image of author image of author
Ismath Badsha and Ismath Badsha (校正) 2026年9月 8日
他言語版へのリンク: English ,

Open Liberty 26.0.0.9 では、MCP Server サポート (mcp-1.0) の導入、openidConnectClient への OAuth 2.0 保護リソース・メタデータ対応の追加、および共有 JCache クラスター向けのカスタム・セッション・キャッシュ名プレフィックスが導入されました。

Open Liberty 26.0.0.9 では次の変更があります:

26.0.0.9 で修正されたバグのリストをご覧ください。

26.0.0.9 を使用したアプリケーションの開発と実行

Maven を使用している場合は、pom.xml ファイルに以下を含めてください:

<plugin>
    <groupId>io.openliberty.tools</groupId>
    <artifactId>liberty-maven-plugin</artifactId>
    <version>3.12.3</version>
</plugin>

Gradle の場合は、build.gradle ファイルに以下を含めてください:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'io.openliberty.tools:liberty-gradle-plugin:4.0.2'
    }
}
apply plugin: 'liberty'

コンテナー・イメージを使用している場合は以下です。

FROM icr.io/appcafe/open-liberty

もしくは、ダウンロード・ページをご覧ください。

IntelliJ IDEA、Visual Studio Code、または Eclipse IDE を使用している場合は、オープンソースの Liberty 開発者ツールを利用して、IDE 内から効果的な開発、テスト、デバッグ、およびアプリケーション管理を行うこともできます。

Stack Overflow で質問する

MCP Server (mcp-1.0)

Model Context Protocol (MCP) は、AI アプリケーションが外部ソースからリアルタイムのデータとビジネス・ロジックにアクセスできるようにするオープン・スタンダードです。MCP Server の機能 (mcp-1.0) を使用すると、アプリケーション開発者はいくつかのアノテーションを追加するだけで、Liberty アプリケーションのツールとデータをエージェント型 AI ワークフローで利用できるように公開できます。

mcp-1.0 以前は、Liberty アプリケーションの既存の Java ビジネス・ロジックを AI エージェントに公開するための標準的な方法がありませんでした。接続したい AI ツールごとにカスタム統合を構築・維持する必要がありました。mcp-1.0 では、既存の CDI メソッドに @Tool アノテーションを付けるだけで、Liberty が MCP プロトコル、ツール検出、セッション管理、セキュリティー、およびオブザーバビリティを自動的に処理します。ビジネス・ロジックを変更することなく、アプリケーションは MCP 互換の AI エージェントからすぐに利用可能になります。

入門ガイドと使用例の詳細については、Liberty ビジネス・ロジックを AI ツールとして公開するブログ記事および mcp-1.0 の機能ドキュメントをご参照ください。

26.0.0.9 の新機能

複数のベータ・リリースを経て、mcp-1.0 が一般提供 (GA) されました。最後のベータ版 (26.0.0.9-beta) からの最も重要な変更点は、機能名が mcpServer-1.0 から mcp-1.0 に変更され、server.xml ファイルの設定要素が <mcpServer> から <mcp> に変更されたことです。server.xml ファイルを次のように更新してください:

<featureManager>
    <feature>mcp-1.0</feature>
</featureManager>
<application location="my-app.war">
    <mcp path="/custom-mcp"/>
</application>

26.0.0.8-beta 以前のバージョンから移行する場合、コア API タイプも io.openliberty.mcp. から org.mcpjava.server. に移動しました。インポートの変更に関する詳細は、26.0.0.9-beta のブログ記事をご参照ください。

以下の機能は、この GA リリースの新機能であり、26.0.0.9-beta には含まれていませんでした:

  • DNS リバインディング攻撃への防御 — MCP Server がループバック・アドレスからのリクエストを受信した場合、MCP 仕様の要件に従って Origin ヘッダーを検証するようになりました。設定は不要です。

  • ツール・メソッドへの @MetaField サポート — ツール・メソッドに @MetaField アノテーションを付けることで、tools/list レスポンスの _meta オブジェクトにデータを追加できます。

  • @Tool での outputSchemaFrom — structuredContent = true の場合、メソッドの戻り値の型とは独立して、出力スキーマの生成に使用するクラスを指定できます。

  • サポートされていないアノテーションに対する警告 — mcp-1.0 でサポートされていない MCP Java API アノテーション (@Prompt、@Resource、@ResourceTemplate など) をアプリケーションが使用している場合、Liberty が警告をログに記録するようになりました。アプリケーションは引き続き起動し、@Tool アノテーションが付いたメソッドは引き続き動作します。

  • OAuth 2.0 保護リソース・メタデータ (RFC 9720) — openidConnectClient に protectedResourceMetaDataEnabled="true" が設定されている場合、Liberty は /.well-known/oauth-protected-resource で保護リソース・メタデータ・ドキュメントを提供します。これにより、MCP クライアントは MCP 認可フローに従って適切な認可サーバーを自動的に検出できます。

openidConnectClient の保護リソース・メタデータ

OAuth 2.0 保護リソース・メタデータ (RFC 9720) は、OAuth 2.0 で保護されたリソースに関するメタデータ (アクセスを許可できる認可サーバーへのリンクを含む) を提供します。

このリリースでは、openidConnectClient-1.0 の機能を使用する Open Liberty サーバーで保護リソース・メタデータを有効にできます。保護リソース・メタデータは任意の openidConnectClient 設定で有効にできますが、主な使用例は MCP 認可フローをサポートするための mcp-1.0 の機能との組み合わせです。このフローでは、MCP クライアントが保護リソース・メタデータを使用して認可サーバーを検出します。

openidConnectClient 設定に対して保護リソース・メタデータを有効にするには、<protectedResourceMetadata> 設定要素を追加してください:

<openidConnectClient id="protected-resource-demo"
    clientId="protected-resource"
    clientSecret="..."
    jwkEndpointUrl="https://auth.example.com/oidc/endpoint/SampleProvider/jwk"
    tokenEndpointAuthMethod="basic"
    issuerIdentifier="https://auth.example.com/oidc/endpoint/SampleProvider"
    authFilterRef="mcpAuthFilter"
    inboundPropagation="required">
    <protectedResourceMetadata />
</openidConnectClient>

詳細については、OpenID Connect Client の機能ドキュメントおよび openidConnectClient 設定リファレンスをご参照ください。

共有 JCache クラスター向けのカスタム・セッション・キャッシュ名プレフィックス

同じ JCache ベースのセッション・ストアを共有する複数の Liberty インスタンス (例えば、同じ Hazelcast または Infinispan クラスターを参照している Kubernetes または OpenShift 上の複数の Pod) を実行する場合、以前の Liberty は各インスタンスで同一のセッション・キャッシュ名を生成していました。キャッシュ名が同一であると、異なるインスタンスが同じキャッシュを競合して使用することになり、共有キャッシュのデプロイメントでセッション・データが破損するリスクがありました。

Open Liberty 26.0.0.9 では、sessionCache-1.0 の機能の httpSessionCache 要素に新しい cacheNamePrefix 属性が追加されました。この属性は、共有キャッシュ・クラスターを使用する複数インスタンスの Liberty デプロイメントを運用するオペレーション・チームや管理者を対象としています。衝突を避けるために各インスタンスに個別のキャッシュ名前空間が必要な場合に使用してください。

以前は、Liberty が常に com.ibm.ws.session.meta.XXX または com.ibm.ws.session.attr.XXX という形式でセッション・キャッシュ名を生成しており、どの Liberty サーバーが作成したかを区別する方法がありませんでした。現在は、各 Liberty サーバーに固有のプレフィックスを設定できます。これにより、1 つの共有クラスターが名前空間の衝突なく複数の Liberty サーバーからのセッション・データを安全にホストできるようになります。プレフィックスが設定されていない場合は、従来のキャッシュ名が引き続き使用されます。

キャッシュ名プレフィックスを設定するには、httpSessionCache 設定に cacheNamePrefix 属性を追加してください:

<!-- Instance 1 -->
<httpSessionCache cacheRef="InfinispanCacheManager" cacheNamePrefix="pod1_"/>
<!-- Instance 2 -->
<httpSessionCache cacheRef="InfinispanCacheManager" cacheNamePrefix="pod2_"/>

プレフィックスにより、各インスタンスに異なるキャッシュ名が付与されます (pod1_com.ibm.ws.session.attr.default_host/myapp および pod2_com.ibm.ws.session.attr.default_host/myapp)。プレフィックスがない場合、両方のインスタンスが同じ com.ibm.ws.session.attr.default_host/myapp というキャッシュ名を生成します。cacheNamePrefix 属性は、以下の用途に特に有用です:

  • マルチテナント・デプロイメント

  • 個別のキャッシュ名前空間が必要なブルーグリーン・デプロイメント

  • Pod 固有のキャッシュ分離が必要な Kubernetes/OpenShift デプロイメント

セッション・キャッシングの設定に関する詳細については、httpSessionCache リファレンスドキュメントをご参照ください。

このリリースでのセキュリティー脆弱性 (CVE) の修正

CVE CVSS スコア 脆弱性評価 影響を受けるバージョン 注記

CVE-2026-14529

9.4

サーバーサイド・リクエスト・フォージェリ

17.0.0.3-26.0.0.8

sipServlet-1.1 の機能に影響

CVE-2026-14981

7.5

サービス拒否

17.0.0.3-26.0.0.8

servlet-3.1、servlet-4.0、servlet-5.0、servlet-6.0、および servlet-6.1 の機能に影響

CVE-2026-15064

8.7

HTTP レスポンス・スマグリング

17.0.0.3-26.0.0.8

servlet-3.1、servlet-4.0、servlet-5.0、servlet-6.0、および servlet-6.1 の機能に影響

CVE-2026-15328

7.4

HTTP リクエスト・スマグリング

17.0.0.3-26.0.0.8

servlet-3.1、servlet-4.0、servlet-5.0、servlet-6.0、および servlet-6.1 の機能に影響

CVE-2026-15325

8.7

HTTP リクエスト・スマグリング

17.0.0.3-26.0.0.8

servlet-3.1、servlet-4.0、servlet-5.0、servlet-6.0、および servlet-6.1 の機能に影響

CVE-2026-16192

7.1

サービス拒否

17.0.0.3-26.0.0.8

restConnector-2.0 の機能に影響

CVE-2026-10571

5.7

サービス拒否

17.0.0.3-26.0.0.8

restConnector-2.0 の機能に影響

CVE-2026-54225

7.5

サービス拒否

17.0.0.3-26.0.0.8

jaxrs-2.0、jaxrs-2.1、jaxws-2.2、xmlWS-3.0、および xmlWS-4.0 の機能に影響

CVE-2026-57819

7.5

サービス拒否

17.0.0.3-26.0.0.8

jaxrs-2.0、jaxrs-2.1、jaxws-2.2、xmlWS-3.0、および xmlWS-4.0 の機能に影響

CVE-2026-64958

7.5

サービス拒否

17.0.0.3-26.0.0.8

jaxrs-2.0、jaxrs-2.1、jaxws-2.2、xmlWS-3.0、および xmlWS-4.0 の機能に影響

過去のセキュリティー脆弱性の修正のリストについては、セキュリティー脆弱性 (CVE) リストを参照してください。

このリリースで修正された注目すべきバグ

バグの修正に時間を費やしました。以下のセクションでは、このリリースで解決された問題の一部について説明します。詳細については、26.0.0.9 で修正されたバグの完全なリストをご覧ください。

Open Liberty 26.0.0.9 を今すぐ入手