mcpField
T
Tanzu Platform Chat: AI Chat Client for Cloud Foundry

Tanzu Platform Chat: AI Chat Client for Cloud Foundry

github.com/cpage-pivotalフレームワーク・SDK2436 週間前に更新

Tanzu Platform Chat: AI Chat Client for Cloud Foundry について

Tanzu Platform Chat(cf-mcp-client)は、Spring AI で構築されたチャットボットアプリケーションで、Cloud Foundry にデプロイしてプラットフォームの AI サービスを利用します。Cloud Foundry 上で LLM、ベクターデータベース、MCP サーバーを使用するチーム向けです。

主な機能

  1. 01Cloud Foundry にデプロイする Spring アプリケーション
  2. 02GenAI サービスを用いた LLM チャット
  3. 03Postgres ベクターデータベースによる文書問答
  4. 04アクセスコードと SSO の認証方式
  5. 05SSE と Streamable HTTP に対応した MCP サーバー連携

活用シーン

  1. 01Cloud Foundry 上での社内向けチャットアシスタントの展開
  2. 02アップロードした PDF 文書に基づく質問応答
  3. 03LLM からサービスマーケットプレイスに公開された MCP サーバーを呼び出す構成

MCP 対応

MCP クライアントとして動作し、cf cups で作成したユーザー提供サービスや Service Publisher のサービスを通じて MCP サーバーをバインドします。LLM は応答時にそれらの機能を呼び出せます。

詳細

Tanzu Platform Chat:Cloud Foundry 向け AI チャットクライアント

概要

Tanzu Platform Chat(cf-mcp-client)は、Cloud Foundry にデプロイしてプラットフォームの AI サービスを利用できる Spring チャットボットアプリケーションです。Spring AI で構築されており、LLM、ベクトルデータベース、Model Context Protocol エージェントに対応しています。

前提条件

  • Java 21 以降
    • 例:sdkman を使用する場合は sdk install java 21.0.7-oracle
  • Maven 3.8 以降
    • 例:sdkman を使用する場合は sdk install maven
  • GenAI タイルまたはその他の LLM サービスがある Cloud Foundry Foundation へのアクセス
  • Cloud Foundry 環境への開発者アクセス

Cloud Foundry へのデプロイ

アプリケーションの準備
  1. アプリケーション用のディレクトリを作成し、そのディレクトリに移動します。
mkdir tanzu-platform-chat
cd tanzu-platform-chat
  1. リリースページから最新の JAR ファイルと manifest.yml をダウンロードし、このディレクトリに保存します。

  2. ダウンロードしたファイルがあるディレクトリから、アプリケーションを Cloud Foundry にプッシュします。

cf push
認証

アプリケーションにアクセスするには認証が必要です。アクセスコードと SSO の 2 つの認証方法を利用できます。両方を同時に使用できます。

アクセスコード認証

デフォルトでは、アプリケーションはアクセスコードで保護されています。ユーザーはログインページでコードを入力してアクセスします。

APP_AUTH_SECRET が設定されていない場合、アクセスコードのデフォルト値は changeme です。

デフォルトのアクセスコードを変更するには、次の 2 つの方法があります。

方法 1:環境変数として設定する

cf set-env ai-tool-chat APP_AUTH_SECRET my-secret-code
cf restart ai-tool-chat

方法 2:manifest.yml に追加する

環境変数を manifest.yml に追加します。

env:
  JBP_CONFIG_OPEN_JDK_JRE: '{ jre: { version: 21.+ } }'
  APP_AUTH_SECRET: ((APP_AUTH_SECRET))

次に、プッシュ時に変数を指定します。

cf push --var APP_AUTH_SECRET=my-secret-code
SSO 認証(任意)

アプリケーションに p-identity サービスがバインドされると、シングルサインオンが自動的に有効になります。ログインページには、アクセスコードの入力フォームと並んで「Sign in with SSO」ボタンが表示されます。

  1. SSO サービスインスタンスを作成します。
cf create-service p-identity uaa my-sso
  1. サービスをアプリケーションにバインドします。
cf bind-service ai-tool-chat my-sso
cf restart ai-tool-chat

SSO プロバイダーは Cloud Foundry サービスバインディングから自動検出されるため、追加の設定は不要です。

大規模言語モデル(LLM)へのバインド
  1. チャット LLM 機能を提供するサービスインスタンスを作成します。
cf create-service genai [plan-name] chat-llm
  1. サービスをアプリケーションにバインドします。
cf bind-service ai-tool-chat chat-llm
  1. バインディングを適用するため、アプリケーションを再起動します。
cf restart ai-tool-chat

これで、チャットボットは LLM を使用してチャットリクエストに応答します。

モデルへのバインド

ベクトルデータベースへのバインド
  1. 埋め込み LLM 機能を提供するサービスインスタンスを作成します。
cf create-service genai [plan-name] embeddings-llm 
  1. ベクトルデータベースとして使用する Postgres サービスインスタンスを作成します。
cf create-service postgres on-demand-postgres-db vector-db
  1. サービスをアプリケーションにバインドします。
cf bind-service ai-tool-chat embeddings-llm 
cf bind-service ai-tool-chat vector-db
  1. バインディングを適用するため、アプリケーションを再起動します。
cf restart ai-tool-chat
  1. 画面右側にあるドキュメントツールをクリックし、.PDF ファイルをアップロードします。

ファイルをアップロード

これで、チャットボットはアップロードしたドキュメントに関する質問に応答します。

ベクトル DB

MCP エージェントへのバインド

Model Context Protocol(MCP)サーバーは、標準化されたインターフェースを通じて AI モデルに特定の機能を提供する軽量なプログラムです。これらのサーバーは、LLM と外部ツール、データソース、サービスをつなぐ橋渡しとして機能します。これにより、複雑な独自の連携を実装することなく、データベースの検索、ファイルへのアクセス、外部 API の呼び出しなどの操作を AI アプリケーションで実行できます。

方法 1:ユーザー提供サービスを使用する
SSE プロトコル(サーバー送信イベント)
  1. mcpSseURL タグを使用して、SSE ベースの MCP サーバー向けのユーザー提供サービスを作成します。
cf cups mcp-server-sse -p '{"uri":"https://your-sse-mcp-server.example.com"}' -t "mcpSseURL"
  1. MCP サービスをアプリケーションにバインドします。
cf bind-service ai-tool-chat mcp-server-sse
ストリーミング可能な HTTP プロトコル
  1. mcpStreamableURL タグを使用して、ストリーミング可能な HTTP ベースの MCP サーバー向けのユーザー提供サービスを作成します。
cf cups mcp-server-streamable -p '{"uri":"https://your-streamable-mcp-server.example.com"}' -t "mcpStreamableURL"
  1. MCP サービスをアプリケーションにバインドします。
cf bind-service ai-tool-chat mcp-server-streamable
方法 2:Service Publisher が提供するサービスを使用する

Service Publisher タイルの一般的なユースケースは、MCP サーバーを公開し、Tanzu Platform のサービスマーケットプレイスで利用できるようにすることです。サービスバインディングには API キーと URI が含まれ、MCP サーバーへのアクセスをより安全にプロビジョニングできます。アプリケーションはリクエストに API キーを追加します。

公開されたサービスは、それぞれ独自のサービスブローカーとプランの選択肢を伴ってマーケットプレイスに表示されます。

SSE プロトコル(Server-Sent Events)
  1. mcpSseURL タグを使用して、SSE ベースの MCP サーバー向けに、公開済みサービスブローカーからサービスを作成します。
cf create-service your-published-service service-plan mcp-server-sse -t "mcpSseURL"
  1. MCP サービスをアプリケーションにバインドします。
cf bind-service ai-tool-chat mcp-server-sse
Streamable HTTP プロトコル
  1. mcpStreamableURL タグを使用して、Streamable HTTP ベースの MCP サーバー向けに、公開済みサービスブローカーからサービスを作成します。
cf create-service your-published-service service-plan mcp-server-streamable -t "mcpStreamableURL"
  1. MCP サービスをアプリケーションにバインドします。
cf bind-service ai-tool-chat mcp-server-streamable
セットアップを完了する
  1. バインディングを適用するため、アプリケーションを再起動します。
cf restart ai-tool-chat

これでチャットボットが MCP エージェントに登録され、LLM はチャットリクエストへの応答時にエージェントの機能を呼び出せるようになります。アプリケーションは SSE プロトコルと Streamable HTTP プロトコルを同時にサポートします。

エージェントへのバインド

A2A エージェントへのバインド

Agent2Agent(A2A)は、独立した AI エージェントシステム間の通信を可能にするプロトコルです。LLM が呼び出せるツールを提供する MCP サーバーとは異なり、A2A エージェントは、メッセージを処理して独自のインテリジェントな応答を返す独立した AI システムです。MCP はチャットボットに使用可能なツールを与えるものであり、A2A はチャットボットが他の専門的な AI エージェントに相談できるようにするものだと考えてください。

主な違い:MCP と A2A
  • MCP サーバー:LLM が応答を生成する過程で呼び出すツールやデータソースを提供します
  • A2A エージェント:メッセージを直接送信し、完全な応答を受け取ることができる独立した AI エージェントです
A2A エージェントをバインドする
  1. a2a タグを使用して、A2A エージェント向けのユーザー提供サービスを作成します。
cf cups a2a-agent -p '{"uri":"https://your-a2a-agent.example.com/.well-known/agent.json"}' -t "a2a"

URI はエージェントの Agent Card(/.well-known/agent.json にある JSON 記述子)を指す必要があります。

  1. A2A サービスをアプリケーションにバインドします。
cf bind-service ai-tool-chat a2a-agent
  1. バインディングを適用するため、アプリケーションを再起動します。
cf restart ai-tool-chat
A2A エージェントを使用する

A2A エージェントをバインドした後は、次の操作を行います。

  1. ナビゲーションレールの Agents ボタン(🤖)をクリックします
  2. Agents パネルに、接続されているすべての A2A エージェントと次の情報が表示されます。
    • 名前、説明、バージョン
    • ヘルスステータス(正常/異常)
    • 機能(ストリーミング、プッシュ通知、状態履歴)
  3. 正常なエージェントの「Send Message」をクリックします
  4. ダイアログにメッセージを入力し、「Send」をクリックします
  5. エージェントの応答が、視覚的に区別できるスタイルでチャットに表示されます

エージェントのメッセージは次のように表示されます。

  • ロボットアイコン(🤖)とエージェント名のヘッダー
  • 三次色の配色(LLM の応答とは異なります)
  • どのエージェントが応答したかを示す明確な表示

複数の A2A エージェントを同時にバインドでき、それぞれが専門的な機能を提供します。Agents パネルには各エージェントのヘルスステータスが表示され、ナビゲーションボタンには、エージェント全体のヘルス状態に基づいてステータスインジケーター(緑/オレンジ/赤)が表示されます。

会話メモリーにベクトルストアを使用する

ベクトルデータベースと埋め込みモデルにバインドすると、アプリケーションの再起動やスケーリング後もチャットメモリーが保持されます。

  1. 上記のベクトルデータベースへのバインドの手順に従います

メモリーへのバインド

免責事項

このリポジトリは、現状有姿で提供される非公式のプロジェクトです。いかなる組織からもサポートまたは承認されておらず、機能に関する保証は一切ありません。ご自身の判断でご使用ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。