MCP Server using Spring Boot Java について
Spring Boot、Java 21、Spring AI を使った MCP サーバーの実装例です。AI アシスタント向けのユーザー管理機能を開発する人を対象に、標準入出力または SSE で同期ツールを提供します。
主な機能
- 01ユーザー管理ツール
- 02ページ指定検索と CRUD
- 03同期通信
- 04標準入出力と SSE に対応
- 05DummyJSON 経由のユーザーデータ
活用シーン
- 01MCP クライアントにユーザー検索を提供
- 02ID による検索とユーザー更新
- 03複数の MCP 通信方式をテスト
MCP 対応
ユーザーの取得、検索、追加、更新、削除を行うツールを MCP クライアントに公開します。標準入出力と SSE に対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Spring Boot Java を使用した MCP サーバー
Spring Boot と Java 21 で構築された Model Context Protocol(MCP)サーバーの実装です。このプロジェクトでは、AI アシスタント向けにユーザー管理ツールを提供する MCP サーバーの作成方法を紹介します。
機能
- Spring AI を使用して MCP サーバー機能を実装
- MCP 経由でユーザー管理ツールを公開
- 同期通信モード
- 標準入出力と Server-Sent Events トランスポートをサポート
- ユーザーデータの取得に DummyJSON 外部 API を統合
技術
- Java 21
- Spring Boot 3.4.3
- Spring AI(Model Context Protocol)
- Project Lombok
- Maven
はじめに
前提条件
- Java 21 以上
- Maven
インストール
- リポジトリをクローンします
git clone https://github.com/yourusername/mcp-spring-java.git
cd mcp-spring-java
- プロジェクトをビルドします
mvn clean package
- アプリケーションを実行します
java -jar target/mcp-spring-java-0.0.1-SNAPSHOT.jar
設定
MCP サーバーは application.yml で設定します。
- サーバーはポート 8090 で実行されます
- サーバー名:my-dummy-users-server
- 同期通信モード
- ターミナルベースの通信向けに STDIO トランスポートをサポート
- SSE 通信向けに
/mcp/messageエンドポイントを公開
利用可能なツール
サーバーは以下のユーザー管理ツールを公開します。
getAllUsers- ページネーションを使用して全ユーザーを取得getAllUsersDefault- デフォルトのページネーションで全ユーザーを取得getUserById- ID でユーザーを 1 人取得searchUsers- クエリでユーザーを検索addUser- 新しいユーザーを追加updateUser- ユーザーを更新deleteUser- ユーザーを削除
Postman でのテスト
Postman を使用して MCP サーバーのエンドポイントをテストできます。
-
MCP サーバーを起動します
-
Postman を開いて新しいリクエストを作成します。
- メソッド:POST
- URL:http://localhost:8090/mcp/message
- ヘッダー:
- Content-Type: application/json
- Accept: application/json
-
リクエストボディには、利用可能なツールを呼び出すために以下の JSON 形式を使用します。
{
"message": {
"toolCalls": [
{
"id": "call-123",
"name": "[TOOL_NAME]",
"parameters": {
"[PARAMETER_NAME]": "[PARAMETER_VALUE]"
}
}
]
}
}
リクエスト例
全ユーザーを取得(デフォルトのページネーション)
{
"message": {
"toolCalls": [
{
"id": "call-123",
"name": "getAllUsersDefault",
"parameters": {}
}
]
}
}
ID でユーザーを取得
{
"message": {
"toolCalls": [
{
"id": "call-123",
"name": "getUserById",
"parameters": {
"id": 1
}
}
]
}
}
ユーザーを検索
{
"message": {
"toolCalls": [
{
"id": "call-123",
"name": "searchUsers",
"parameters": {
"query": "John"
}
}
]
}
}
レスポンスには、ツールの実行結果を含む JSON オブジェクトが含まれます。
MCP クライアントでの使用
以下の設定を使用して、MCP クライアントアプリケーションでこのサーバーを設定できます。
{
"mcpServers": {
"dummy-user-server": {
"command": "java",
"args": [
"-Dspring.ai.mcp.server.stdio=true",
"-Dspring.main.web-application-type=none",
"-Dlogging.pattern.console=",
"-jar",
"path/to/mcp-spring-java-0.0.1-SNAPSHOT.jar"
]
}
}
}
ライセンス
このプロジェクトは、LICENSE ファイルに記載された条件に基づいてライセンスされています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。