Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JavaのMCPサーバーで体験するAIエージェントの世界

 JavaのMCPサーバーで体験するAIエージェントの世界

Avatar for Tatsuya Miyazaki

Tatsuya Miyazaki

June 08, 2025
Tweet

More Decks by Tatsuya Miyazaki

Other Decks in Technology

Transcript

  1. © 2025 IBM Corporation 4 自己紹介 宮崎 達也 日本IBM カスタマーサクセスマネージャー(Application

    Development & Integration) 前職は SIer でアジャイル開発から大規模システムのPMまで 注目している分野 AI×アプリケーション(開発シーンもサービスも)、アジャイル、マイクロサービス SoR < SoE 資格など IPA システムアーキテクト、データベーススペシャリスト、登録セキスペ(18年〜) RedHat Red Hat® Certified Specialist in Containers and Kubernetes DX関連 DX推進パスポート3(ITパスポート、G検定、DS検定)
  2. © 2025 IBM Corporation 6 AIエージェントの定義 IT各社で解釈が異なるところがあるが、「自律的にタスクを実行する」点はほぼ一致している。 IBM 人工知能(AI)エージェントとは、ワークフローを設計し、利用可能なツールを活用することで、ユーザーまたは別の システムに代わってタスクを自律的に実行できるシステムまたはプログラムです。

    AIエージェントは、意思決定、問題解決、外部環境とのやり取り、アクションの実行など、自然言語処理以外の幅広い 機能を備えることができます。 https://www.ibm.com/jp-ja/think/topics/ai-agents Anthropic 「エージェント」は様々な方法で定義できます。お客様によっては、エージェントを、長期間にわたって独立して動作 し、様々なツールを使用して複雑なタスクを実行する、完全に自律的なシステムと定義する方もいます。また、定義済 みのワークフローに従う、より規範的な実装を指す用語として用いる方もいます。Anthropicでは、これらすべてのバリ エーションを「エージェントシステム」と分類していますが、ワークフローとエージェントの間には重要なアーキテク チャ上の区別があります。 https://www.anthropic.com/engineering/building-effective-agents AWS 人工知能 (AI) エージェントは、環境と対話し、データを収集し、そのデータを使用して自己決定タスクを実行して、事 前に決められた目標を達成するためのソフトウェアプログラムです。目標は人間が設定しますが、その目標を達成する ために実行する必要がある最適なアクションは AI エージェントが独自に選択します。例えば、顧客の問い合わせを解 決したいコンタクトセンターの AI エージェントを考えてみましょう。エージェントは自動的に顧客にさまざまな質問 をし、内部文書で情報を調べ、回答でソリューションを提示します。顧客の応答に基づいて、クエリ自体を解決できる のか、それとも人間に渡すのかを判断します。 https://aws.amazon.com/jp/what-is/ai-agents/ ワークフローによる実装(iPaaSイメージ) もエージェントとして定義している
  3. © 2025 IBM Corporation 7 生成AIが提供する価値 世代毎にビジネス価値の幅が広がっている 生成AI AIプラットフォーム 10の入力(Lv1)

    10の出力(Lv2) RAG拡張 AIプラットフォーム RAG VectorDB 10の入力(Lv1) 10の出力(Lv2、自社向け) AIエージェント AIプラットフォーム AIエージェント 5の入力 10の出力
  4. © 2025 IBM Corporation 8 AIエージェントを支える技術 ① 今日の東京の天気は? AI アプリケーション

    ユーザー AIプラットフォーム 外部APIサービス ② 今日の東京の天気は?天気を取得するサービスがあります。 ③ 外部サービスを使って天気を取得してください。 ④ APIコールと結果取得 ⑤ 東京の天気はXXです Tool Calling ツールの仕様定義 ツール呼出し (個別仕様) Large Reasoning Model CoT(Chain Of Thought、思考の連鎖)の考え方をベースとして 仮説立案/多角的検討/自己検証 などを行なう、論理的な応答に適したモデル。
  5. © 2025 IBM Corporation 10 Model Context Protocol (MCP) Anthoropicが提唱する、LLMとさまざまなサービスを連携するインタフェース規格。

    MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools. MCPは、アプリケーションがLLMにコンテキストを提供する方法を標準化するオープンプロトコルです。MCPはAIアプ リケーション用のUSB-Cポートのようなものだと考えてください。USB-Cがデバイスを様々な周辺機器やアクセサリに 接続するための標準化された方法を提供するのと同様に、MCPはAIモデルを様々なデータソースやツールに接続するた めの標準化された方法を提供します。 https://modelcontextprotocol.io/introduction https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/
  6. © 2025 IBM Corporation 11 MCP接続を提供するサービス 多くのサービスが既にMCP仕様で接続できるようになっている。 各種言語向けSDKが提供されており、開発者による実装が容易に実現できる。 MCPサーバー AWS各サービスに対応したMCPサーバーが既にリリース済。

    https://modelcontextprotocol.io/examples MCPクライアント https://modelcontextprotocol.io/clients 種類 サービス データ PostgreSQL、SQLite、GoogleDrive 開発 GitHub、GitLab その他 Slack、GoogleMap、Cloudflare、Stripe、 Docker、Spotify https://github.com/awslabs/mcp WindowsがMCPをネイティブサポートすると発表。 https://blogs.windows.com/windowsdeveloper/2025/05/19/advancing-windows-for- ai-development-new-platform-capabilities-and-tools-introduced-at-build-2025/
  7. © 2025 IBM Corporation 12 MCPのプロトコル定義 プロトコルの構成要素。主な要素は記載の3点。 https://modelcontextprotocol.io/docs/concepts/architecture https://modelcontextprotocol.io/docs/concepts/transports メッセージフォーマット

    JSON-RPC トランスポート (クライアントとサーバーの通 信方式) Stdio 標準入出力を共有エリアとして使用する。 クライアントとサーバーは同じマシンに存在する。 HTTP with SSE 長時間接続し、サーバーサイドの遅延メッセージ送信もカバーする。 提供可能サービス Resource 主に静的データを参照する Prompt ユーザー問合せに適したプロンプトを提供する Tool アクションを実行する
  8. © 2025 IBM Corporation 13 MCPの接続フロー 外部サービスと連携するためにMCPクライアント、MCPサーバーという機能が連携する。 ① 今日の東京の天気は? AIアプリケーション

    +MCPクライアント ユーザー AIプラットフォーム MCP サーバー ② 今日の東京の天気は?天気を取得するサービスがあります。 ③ 外部サービスを使って天気を取得してください。 ④ APIコールと結果取得 ⑤ 東京の天気はXXです 参考:ToolCalling 外部API サービス ツールの仕様定義 ツール呼出し (共通仕様) ① 今日の東京の天気は? AI アプリケーション ユーザー AIプラットフォーム 外部APIサービス ② 今日の東京の天気は?天気を取得するサービスがあります。 ③ 外部サービスを使って天気を取得してください。 ④ APIコールと結果取得 ⑤ 東京の天気はXXです ツールの仕様定義 ツール呼出し (個別仕様)
  9. © 2025 IBM Corporation 14 ローカル STDIOとSSE クライアントとサーバーを接続する標準方式は、大きくSTDIOとSSE(HTTP)に分かれる。 STDIO AIアプリケーション

    +MCPクライアント MCPサーバー SSE ローカル リモート AIアプリケーション +MCPクライアント サービスAPI MCPサーバー サービスAPI ローカルリソースには アクセスできない ローカルで実行する 既にAPIが提供されて いるサービスにMCP接 続機能を提供しやすい ローカルインストール 不要
  10. © 2025 IBM Corporation 15 STDIOとSSE クライアントの接続定義で違いを認識できる。 STDIO SSE {

    "mcpServers": { "awslabs.aws-documentation-mcp-server": { "command": "uvx", "args": ["awslabs.aws-documentation-mcp-server@latest"], "env": { "FASTMCP_LOG_LEVEL": "ERROR" }, "disabled": false, "autoApprove": [] } } } "mcp": { "servers": { “server-name": { "type": "sse", "url": "http://localhost:9080/mcpserver/sse" } } } VSCodeでの設定例 https://github.com/awslabs/mcp/tree/main/src/aws-documentation-mcp-server npx、uvxなどはパッケージを ローカルで実行するコマンド URLが指定されている
  11. © 2025 IBM Corporation 17 図書館システムのデモ 図書館業務 ・社内に設置した図書貸し出しシステム。 ・蔵書は50冊。 ・ユーザーは5人、一般ユーザーと管理者の2ロールが指定可能。

    ・業務ルールは次のとおり。 ・ユーザーは同時に3冊まで貸し出しができる。 ・延滞中のユーザーには貸し出しができない。 ・ユーザー追加処理は管理者ロールのユーザーのみ実行できる。 今回の業務フロー ・過去の自分の貸出し履歴からオススメ図書を確認する ・対象図書を借りる テーブル
  12. © 2025 IBM Corporation 18 今回のAIエージェントの構成 サービスアプリ (WebSphere Liberty) Claude

    Desktop SSE接続 MCP クライアント MCPサーバー Servlet MariaDB MCPサーバーの定義 DBアクセスのツール MCPサーバー側: ・MCPサーバーの構成を宣言(MCPサーバーとしての設定、ツールの定義) ・サービスアプリ内でのビジネスロジック実装(MCPとの関連は無し) MCPクライアント側: ・MCPサーバーとの接続設定(URLを指定する) Sonnet4
  13. © 2025 IBM Corporation 19 MCPサーバーの構築 on Java Java用のSDKが提供されており、MCPに準拠するための追加工数は少ない ・SSE接続用のサーブレットを起動する。

    ・MCPサーバーの定義を行なう。 ・サーバーのバージョン ・対応可能なサービスの種類 ・ツールの定義(ツールの仕様、ツール呼出し時に実行するロジック) ・ツール呼出し時のロジック実装 Java MCPサーバーのコードサンプル https://qiita.com/mi-ta/items/bc57dac96b0a05291134
  14. © 2025 IBM Corporation 20 今回のAIエージェントのツール定義 ツール名 ツール定義(実際には英語で定義している) 引数(カッコ内は引数の説明) book-search

    図書館の蔵書を検索し、指定された条件に一致する図書情報 を返す。 Name(検索する本の部分名) Category(検索する本のカテゴリー。複数指定する場 合は、コンマで区切ってください。) history-search 指定された条件に合致するローン履歴およびローン条件を返 す。 user-id book-id Onloan(未返却の本を抽出条件として使用するには、 1を設定する。) lend-book 指定の本を貸し出す。 * user-id(本を貸し出すユーザーのID) * book-id(貸し出す本のID) return-book 図書館に本を返す。 * user-id(本を貸し出すユーザーのID) * book-id(貸し出す本のID) * rating(本の評価を1から5までの5段階で指定します (1が最低、5が最高)。評価はユーザーが入力する必 要があります。) list-rule 図書館の運営支援に関する規約の本文を提供する。図書館業 務を行う際は、まずこの内容を確認すること。 checkdate(ルールのチェック日: YYYYMMDD) get-user 指定されたユーザーIDの氏名と役職を取得します。 * user-id add-user 図書館のユーザーを追加します。 * user-name(追加するユーザーの氏名) * user-role(追加するユーザーの役割を指定してくだ さい。選択肢は「user」または「admin」です。)
  15. © 2025 IBM Corporation 22 利用者視点での価値 操作は手続き型から宣言型へ 従来のアプリケーションでのお困りごと ・UIの操作性が直感的でなくても、使う必要がある ・あまり使わない機能は、手順から確認する

    ユーザーはツール利用手順を確認・理解する必要がある ユーザーの要望をそのまま伝えて、手続きはAIに依頼する ★ざっくり試算 5000人規模の企業、月の作業時間を3h削減(10分弱/日) → 93.75人月の削減効果(月160h換算) 削減コストを別の仕事に投入できる
  16. © 2025 IBM Corporation 24 Webアプリケーション MCPを利用したAIアプリケーションの構成例 フロント アプリ RAG

    RDB エージェント間を接 続するプロトコル バックエンド AIアプリ MCP クライアント 外部システム1 AIプラット フォーム VectorDB AIエージェント サービス1 MCP サーバー A2A/ACP 外部システム2 MCP サーバー MCP A2A/ACP チャットとそれ以外 のI/F併用 API連携よりもMCP連携のほうが柔軟な処理に対応できる可能性がある AIエージェント サービス2 A2A/ACP iPaaS MCP LangChain4j+MCP Client https://blog.marcnuri.com/connecting-to- mcp-server-with-langchain4j トランザクション
  17. © 2025 IBM Corporation 25 今回のサンプル構築からの所感 実装は難しくないが、使いこなすためのトライ&エラーは必要になる。また全てのシステムにフィットするともいえない。 ・AIの反応には揺らぎがある。 ・複数のツール利用で結果を導く場合には、正しいツール利用に誘導するためのテクニックが必要そう。 →

    安定稼働のためには、外部のワークフロー処理などを併用することも考えたい。 ・MCPサーバーの実装は、SDKを使うことで要求される技術レベルも高くはなく、工数も大きくない。 ・システム間連携の仕様変更に強い(呼出し側を変更する必要性が小さい)。 ・適した業務と適さない業務がありそう。 適した業務 → 柔軟に指示したい・仕様整理が難しい、習熟が期待できない 適さない業務 → 日々頻繁に使い入出力の効率が要求される
  18. © 2025 IBM Corporation 26 MCPを実装するためのツール 実装のギャップを埋めるためのツールがいくつか存在する mcp-remote など supergateway

    など openapi-mcp-server など AIアプリ 外部 サービス MCP クライアント STDIO MCP サーバー SSE STDIO<->SSE AIアプリ 外部 サービス MCP クライアント SSE MCP サーバー STDIO SSE<->STDIO AIアプリ MCP クライアント STDIO 外部 API サービス MCP<-> OPENAPI
  19. © 2025 IBM Corporation 28 このセッションについて 目的: ・AIエージェントの可能性についてイメージできる ・Javaで作成されたアプリケーションとAIアプリケーションの統合をイメージできる ゴール:

    ・次の内容を理解する。 ・AIエージェントの価値 ・MCPの機能と役割 ・MCPサーバーの構成要素 フォーマット/トランスポート/サービス 少ない入力で大きな出力 手続き型から宣言型へ AIとアプリケーションの接続を 容易にするプロトコル
  20. MicroProfile開発者ガイド 「Reactive Messaging編」完成報告会 日時 : 2025/6/24(火)17:00-18:00 場所 : オンラインのみ 対象

    : お客様、ビジネス・パートナー様 参加費 : 無料 Kafkaなどのイベントストリーミング技術が注目される中、Javaエンタープラ イズ環境では、MicroProfileのReactive Messagingが非同期メッセージングの 手段として注目を集めています。 IBMのWebSphereコミュニティでは、これまでMicroProfile仕様に沿った開発 ガイドを公開してきましたが、新たに「Reactive Messaging編」が完成しま した。 本イベントでは、ガイドの執筆者が登壇し、Reactive Messagingの基礎から 実践的な活用法までを解説します。 Java開発者はもちろん、Kafkaやイベント駆動アーキテクチャに興味のあるエ ンジニアにもおすすめの内容です。 Register today → URL:https://ibm.biz/BdnmCP アジェンダ (予定) • Reactive Messagingの基本 • 設定方法 • 実際のコーディング例 • 高度な設定など IBM社員はこちら:https://ibm.biz/Bdneie