简单 MCP Server 示例 (Java + Spring Boot + Spring AI) について
Spring AI を使い、Java と Spring Boot で SSE 通信する MCP サーバーの構築例です。MCP クライアント向けに、天気、ユーティリティ、JSON 変換のツールを提供します。
主な機能
- 01Java と Spring Boot の例
- 02SSE 通信
- 03天気予報と警報
- 04エコー、計算、タイムスタンプのツール
- 05JSON から Java コードへの変換
活用シーン
- 01指定地点の天気予報を確認
- 02州ごとの気象警報を確認
- 03テキストのエコーや簡単な計算
- 04JSON 文字列から Java クラスコードを生成
MCP 対応
SSE エンドポイントを通じて、天気、ユーティリティ、JSON のツールを MCP クライアントに提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
エンドポイント
http://localhost:8080/sseインストールコマンドをコピー
Claude CodeTerminal
claude mcp add --transport http demo-oneinstepgo http://localhost:8080/sseCursor.cursor/mcp.json
{"mcpServers":{"demo-oneinstepgo":{"type":"http","url":"http://localhost:8080/sse"}}}Cursor で開くVS Code.vscode/mcp.json
{"servers":{"demo-oneinstepgo":{"type":"http","url":"http://localhost:8080/sse"}}}VS Code で開くClaude Desktopclaude_desktop_config.json
{"mcpServers":{"demo-oneinstepgo":{"type":"http","url":"http://localhost:8080/sse"}}}Windsurf~/.codeium/windsurf/mcp_config.json
{"mcpServers":{"demo-oneinstepgo":{"serverUrl":"http://localhost:8080/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
シンプルな MCP サーバーの例(Java + Spring Boot + Spring AI)
プロジェクトの目的
このプロジェクトは、シンプルなモデルコンテキストプロトコル(MCP)サーバーの開発を目的としています。このサーバーは、Java と Spring Boot 環境で MCP サーバーを構築する方法の例として、sse を使用して通信します。
技術スタック
- Java: JDK 21
- Spring Boot: 3.3.12
- Spring AI: MCP サーバー機能に
spring-ai-starter-mcp-server-webfluxを使用 - ビルドツール: Maven
- 通信プロトコル: sse
主な依存関係
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-bom</artifactId>
<version>0.10.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
<version>${spring-ai.version}</version>
</dependency>
</dependencies>
主なコンポーネント
-
MCP サーバーの設定:
FastMCPまたは同等の Spring AI コンポーネントを設定し、MCP サーバーを初期化します。- サーバーは sse を介して通信します。
-
サンプルツール(Tools):
- 以下のツールを実装しています。
WeatherTool: 天気予報と気象警報を照会しますSimpleTool: エコー、簡単な計算、タイムスタンプ機能を提供しますJsonTool: JSON 文字列を Java クラスのコードに変換し、Java クラスの定義に基づいて、型が適切なサンプル JSON 文字列を出力します
- ツールの定義は MCP 仕様に従い、Java の型ヒントとアノテーションを使用してツール定義を自動生成します。
- 以下のツールを実装しています。
プロジェクト構成
cem_mcp_server
├── src/main/java/com/example/mcpserver
│ ├── config/ # 配置类
│ ├── McpServerApplication.java # 主应用程序类
│ └── tools/ # 工具实现
│ ├── WeatherTool.java # 天气工具
│ └── SimpleTool.java # 简单工具
│ ├── JsonTool.java # JSON 工具
├── src/main/resources
│ └── application.yml # 应用配置
└── pom.xml # Maven 配置
ビルドと実行
Maven コマンドを使用する
mvn clean package spring-boot:run
テストとデバッグ
サーバーエンドポイント
- 接続先のルートエンドポイント:
http://localhost:8080/sse- MCP サーバーに接続します
ツールのテスト
Cursor エディターなど、MCP プロトコルに対応したクライアントを使用して、MCP サーバーに接続できます。サーバーは以下のツールを提供します。
-
天気ツール:
getWeatherForecastByLocation: 指定した緯度と経度の天気予報を取得しますgetAlerts: 指定した州の気象警報を取得します
-
シンプルなツール:
echoTool: エコーツール。入力されたメッセージを返しますsimpleMathTool: 2つの数値の合計を計算しますtimestampTool: 現在時刻を返します
Cursor との連携
Cursor エディターでは、以下の手順でこの MCP サーバーに接続できます。
- プロジェクト内に
.cursor/mcp.jsonファイルを新規作成します。{ "mcpServers": { "mcp-serve-demo": { "name": "本地 MCP 服务器", "url": "http://localhost:8080/sse", "enabled": true } } } - Cursor の設定を開きます
- MCP 関連の設定を見つけ、この MCP ツールを更新します。
- Cursor でこのサーバーが提供するツールを使用できるようになります
- 質問します:
- ニューヨークの今日の天気はどうですか?
- 提示した Java クラスの定義に基づいて、サンプル JSON を出力してください
コメント
Markdown 対応
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。