MCP サーバー Boot スターター
Spring AI MCP (モデルコンテキストプロトコル) サーバー Boot スターターは、Spring Boot アプリケーションで MCP サーバーをセットアップするための自動構成を提供します。これにより、MCP サーバー機能と Spring Boot の自動構成システムをシームレスに統合できます。
MCP サーバー Boot スターターは以下を提供します。
MCP サーバーコンポーネントの自動構成
同期と非同期の両方の動作モードをサポート
複数のトランスポート層オプション
柔軟なツール、リソース、迅速な仕様
変更通知機能
スターター
Spring AI 自動構成、スターターモジュールのアーティファクト名に大きな変更がありました。詳細については、アップグレードノートを参照してください。 |
輸送要件に基づいて、次のいずれかのスターターを選択します。
標準 MCP サーバー
STDIO
サーバートランスポートによる完全な MCP サーバー機能のサポート。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server</artifactId>
</dependency>
コマンドラインおよびデスクトップツールに適しています
追加の Web 依存関係は不要
スターターは、次の処理を行う McpServerAutoConfiguration
自動構成をアクティブにします。
基本的なサーバーコンポーネントの構成
取り扱いツール、リソース、プロンプトの仕様
サーバー機能と変更通知の管理
同期と非同期の両方のサーバー実装を提供する
WebMVC サーバートランスポート
Spring MVC に基づく SSE
(Server-Sent Events) サーバートランスポートとオプションの STDIO
トランスポートによる完全な MCP サーバー機能のサポート。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
</dependency>
スターターは、McpWebMvcServerAutoConfiguration
および McpServerAutoConfiguration
の自動構成をアクティブにして、次の機能を提供します。
Spring MVC を使用した HTTP ベースのトランスポート (
WebMvcSseServerTransportProvider
)自動的に構成された SSE エンドポイント
オプションの
STDIO
トランスポート (spring.ai.mcp.server.stdio=true
を設定することで有効になります)spring-boot-starter-web
およびmcp-spring-webmvc
の依存関係が含まれています
WebFlux サーバートランスポート
Spring、WebFlux に基づく SSE
(Server-Sent Events) サーバートランスポートとオプションの STDIO
トランスポートによる完全な MCP サーバー機能のサポート。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webflux</artifactId>
</dependency>
スターターは、McpWebFluxServerAutoConfiguration
および McpServerAutoConfiguration
の自動構成をアクティブにして、次の機能を提供します。
Spring WebFlux を使用した反応輸送 (
WebFluxSseServerTransportProvider
)自動的に構成されたリアクティブ SSE エンドポイント
オプションの
STDIO
トランスポート (spring.ai.mcp.server.stdio=true
を設定することで有効になります)spring-boot-starter-webflux
およびmcp-spring-webflux
の依存関係が含まれています
プロパティの構成
すべてのプロパティには spring.ai.mcp.server
という接頭辞が付きます。
プロパティ | 説明 | デフォルト |
---|---|---|
| MCP サーバーを有効 / 無効にする |
|
| stdio トランスポートを有効 / 無効にする |
|
| 識別用のサーバー名 |
|
| サーバーバージョン |
|
| サーバーの種類 (SYNC/ASYNC) |
|
| リソース変更通知を有効にする |
|
| 迅速な変更通知を有効にする |
|
| ツール変更通知を有効にする |
|
| (オプション) ツール名ごとのレスポンス MIME 型。たとえば、 |
|
| Web トランスポートの SSE エンドポイントパス |
|
同期 / 非同期サーバーの種類
同期サーバー -
McpSyncServer
を使用して実装されたデフォルトのサーバー型。アプリケーションでの簡単なリクエスト / レスポンスパターン向けに設計されています。このサーバー型を有効にするには、構成でspring.ai.mcp.server.type=SYNC
を設定します。有効にすると、同期ツール仕様の構成が自動的に処理されます。非同期サーバー - 非同期サーバーの実装は
McpAsyncServer
を使用し、ノンブロッキング操作に最適化されています。このサーバー型を有効にするには、アプリケーションをspring.ai.mcp.server.type=ASYNC
で構成します。このサーバー型は、組み込みのプロジェクト Reactor サポートを使用して、非同期ツール仕様を自動的に設定します。
交通手段
MCP サーバーは、それぞれ専用のスターターを備えた 3 つのトランスポートメカニズムをサポートします。
標準入出力 (STDIO) -
spring-ai-starter-mcp-server
Spring MVC (サーバー送信イベント) -
spring-ai-starter-mcp-server-webmvc
Spring WebFlux (リアクティブ SSE) -
spring-ai-starter-mcp-server-webflux
機能と性能
MCP サーバー Boot スターターを使用すると、サーバーはツール、リソース、プロンプトをクライアントに公開できます。Spring Bean として登録されたカスタム機能ハンドラーを、サーバーの種類に基づいて同期 / 非同期仕様に自動的に変換します。
ツール (英語)
サーバーが言語モデルによって呼び出すことができるツールを公開できるようにします。MCP サーバー Boot スターターは以下を提供します。
変更通知のサポート
ツールはサーバーの種類に応じて同期 / 非同期仕様に自動的に変換されます
Spring Bean による自動ツール仕様:
@Bean
public ToolCallbackProvider myTools(...) {
List<ToolCallback> tools = ...
return ToolCallbackProvider.from(tools);
}
または低レベル API を使用する:
@Bean
public List<McpServerFeatures.SyncToolSpecification> myTools(...) {
List<McpServerFeatures.SyncToolSpecification> tools = ...
return tools;
}
リソース管理 (英語)
サーバーがクライアントにリソースを公開するための標準化された方法を提供します。
静的および動的リソース仕様
オプションの変更通知
リソーステンプレートのサポート
同期 / 非同期リソース仕様間の自動変換
Spring Bean による自動リソース指定:
@Bean
public List<McpServerFeatures.SyncResourceSpecification> myResources(...) {
var systemInfoResource = new McpSchema.Resource(...);
var resourceSpecification = new McpServerFeatures.SyncResourceSpecification(systemInfoResource, (exchange, request) -> {
try {
var systemInfo = Map.of(...);
String jsonContent = new ObjectMapper().writeValueAsString(systemInfo);
return new McpSchema.ReadResourceResult(
List.of(new McpSchema.TextResourceContents(request.uri(), "application/json", jsonContent)));
}
catch (Exception e) {
throw new RuntimeException("Failed to generate system info", e);
}
});
return List.of(resourceSpecification);
}
迅速な管理 (英語)
サーバーがプロンプトテンプレートをクライアントに公開するための標準化された方法を提供します。
変更通知のサポート
テンプレートのバージョン管理
同期 / 非同期プロンプト仕様間の自動変換
Spring Bean による自動プロンプト指定:
@Bean
public List<McpServerFeatures.SyncPromptSpecification> myPrompts() {
var prompt = new McpSchema.Prompt("greeting", "A friendly greeting prompt",
List.of(new McpSchema.PromptArgument("name", "The name to greet", true)));
var promptSpecification = new McpServerFeatures.SyncPromptSpecification(prompt, (exchange, getPromptRequest) -> {
String nameArgument = (String) getPromptRequest.arguments().get("name");
if (nameArgument == null) { nameArgument = "friend"; }
var userMessage = new PromptMessage(Role.USER, new TextContent("Hello " + nameArgument + "! How can I assist you today?"));
return new GetPromptResult("A personalized greeting message", List.of(userMessage));
});
return List.of(promptSpecification);
}
ルート変更コンシューマー (英語)
ルートが変更されると、listChanged
をサポートするクライアントはルート変更通知を送信します。
ルート変更の監視のサポート
リアクティブアプリケーション用の非同期コンシューマーへの自動変換
Spring Bean によるオプション登録
@Bean
public BiConsumer<McpSyncServerExchange, List<McpSchema.Root>> rootsChangeHandler() {
return (exchange, roots) -> {
logger.info("Registering root resources: {}", roots);
};
}
使用例
標準 STDIO サーバー構成
# Using spring-ai-starter-mcp-server
spring:
ai:
mcp:
server:
name: stdio-mcp-server
version: 1.0.0
type: SYNC
WebMVC サーバー構成
# Using spring-ai-starter-mcp-server-webmvc
spring:
ai:
mcp:
server:
name: webmvc-mcp-server
version: 1.0.0
type: SYNC
sse-message-endpoint: /mcp/messages
WebFlux サーバー構成
# Using spring-ai-starter-mcp-server-webflux
spring:
ai:
mcp:
server:
name: webflux-mcp-server
version: 1.0.0
type: ASYNC # Recommended for reactive applications
sse-message-endpoint: /mcp/messages
MCP サーバーを使用した Spring Boot アプリケーションの作成
@Service
public class WeatherService {
@Tool(description = "Get weather information by city name")
public String getWeather(String cityName) {
// Implementation
}
}
@SpringBootApplication
public class McpServerApplication {
private static final Logger logger = LoggerFactory.getLogger(McpServerApplication.class);
public static void main(String[] args) {
SpringApplication.run(McpServerApplication.class, args);
}
@Bean
public ToolCallbackProvider weatherTools(WeatherService weatherService) {
return MethodToolCallbackProvider.builder().toolObjects(weatherService).build();
}
}
自動構成により、ツールコールバックが MCP ツールとして自動的に登録されます。ToolCallbacks を生成する複数の Bean を持つことができます。自動構成により、それらがマージされます。
アプリケーション例
天気サーバー (WebFlux) [GitHub] (英語) - WebFlux トランスポートを備えた Spring AI MCP サーバー Boot スターター。
天気サーバー (STDIO) [GitHub] (英語) - STDIO トランスポートを備えた Spring AI MCP サーバー Boot スターター。
ブックライブラリサーバー (WebFlux) [GitHub] (英語) - WebFlux トランスポートを備えた Spring AI MCP サーバー Boot スターター。
天気サーバーの手動設定 [GitHub] (英語) - 自動構成を使用せず、Java SDK を使用してサーバーを手動で構成する Spring AI MCP サーバー Boot スターター。