この資料は、**SpringAIで学ぶMCP(Model Context Protocol)**について、その概要、Javaでの実装サンプルを使った試み、そして使用方法を紹介するものです。
発表者は蓬莱寿成さん(Xアカウント: @pawn_4_t)で、所属は虎の穴ラボです。経歴としては、通販開発からFantiaサービス開発チームに移られたとのことです。
MCPサーバーについて
MCPサーバーは、イメージとしてはFunction Callingを外だししたようなものです。資料には、MCPがアプリケーション、ツール、AIサービス、Cline(Claud Desktop)と連携する構成図が示されています。
今回試したこと
今回試みられたのは以下の点です:
•
SpringAIのサンプルコードを実行すること。
•
そのサンプルコードに実装を追加し、実行すること。
使用されたサンプルコードは、GitHubのspring-projects/spring-ai-examplesリポジトリにあるmodel-context-protocol/weather/starter-webflux-serverです。
具体的なサンプル機能としては、以下の2つが挙げられています:
1.
緯度と経度を指定した時にその地点の天候情報を取得する機能。例として「ニューヨークの緯度と経度を調べて天気を調べて?」という問いかけが挙げられています。
2.
アメリカの州のコードから警報などの情報を取得する機能。例として「ニューヨークの天気を調べて?」という問いかけが挙げられています。
ソースコードの概要
サンプルのソースコードには、主に以下のクラスがあります:
•
McpServerApplication.java: 呼び出された際に動くmain関数などが含まれています。
•
WeatherService.java: 実際に処理が書かれたクラスです。このクラスには、その処理がどのようなものであるかを記述した部分があり、レスポンスは文字列で特に形式の指定はありません。
実際の使用方法
MCPサーバーを実際に使用する手順は以下の通りです:
1.
jarファイルの作成: ソースコードをGitHubから取得し、IntelliJなどでjarファイルを作成します。
2.
VSCodeにClineを追加: VSCodeの拡張機能でClineを検索して追加し、AIサービスのキーを設定します。
3.
ClineのMCPサーバー設定を追加: ClineにMCPサーバーの設定を追加します。ここでファイルの場所を指定します。サーバーという名前ですが、実態としてはローカルでjavaコマンドが実行されます。
4.
実行: 上記の設定後、実行します。
実際の実行結果と機能追加
実際の実行例として、ニューヨークの天気を尋ねる場合が紹介されています。
•
「ニューヨークの天気を聞く」場合: まずニューヨーク州の州コードを調べ、その州コードをMCPサーバーに渡して応答を取得します。
•
「ニューヨークの緯度と経度を調べて天気を教えて」と聞く場合: 緯度と経度を取得し、その緯度と経度をMCPサーバーに渡して応答を取得します。
機能を追加したい場合は、以下の方法があります:
1.
別の機能のjarファイルを作成して設定に追記する。
2.
実装にメソッドを追加してjarファイルを更新する。
注意点として、jarファイルを更新しただけではClineが変更を認識できないため、設定を一度更新して読み込み直す必要があるとのことです。
まとめ
この資料では、JavaでMCPサーバーを作る手順が紹介されました。Javaで作られるため、これまでにJavaで開発されたソースの再利用が可能である点が利点として挙げられています。詳細な実装や仕組みについては、ブログで紹介されているとのことです(ブログURL: https://toranoana-lab.hatenablog.com/entry/2025/06/02/100000)