モデルコンテキストプロトコル入門 (MCP)
モデルコンテキストプロトコル (MCP) は、AI アプリケーションが外部ツールやリソースと対話する方法を標準化します。
Spring は MCP エコシステムに早期から主要コントリビューターとして参加し、Java ベースの MCP 実装の基盤となる公式 MCP Java SDK [GitHub] (英語) の開発と保守に貢献してきました。このコントリビューションを基に、Spring AI は Boot スターターとアノテーションを通じて MCP サポートを提供し、MCP サーバーとクライアントの両方を容易に構築できるようにしています。
完全なチュートリアルとソースコード
📖 ブログチュートリアル : AI をあらゆるものに接続 (英語)
💻 完全なソースコード : MCP 天気サンプルリポジトリ [GitHub] (英語)
このチュートリアルでは、Spring AI を使用した MCP 開発の基本、高度な機能、デプロイパターンなどを網羅しています。以下のコード例はすべてこのチュートリアルから抜粋したものです。
クイックスタート
最も早く始める方法は、Spring AI のアノテーションベースのアプローチを利用することです。以下の例はブログチュートリアルから抜粋したものです。
シンプルな MCP サーバー
@Service
public class WeatherService {
@McpTool(description = "Get current temperature for a location")
public String getTemperature(
@McpToolParam(description = "City name", required = true) String city) {
return String.format("Current temperature in %s: 22°C", city);
}
}依存関係を追加して構成します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-server-webmvc</artifactId>
</dependency>spring.ai.mcp.server.protocol=STREAMABLEシンプルな MCP クライアント
@Bean
public CommandLineRunner demo(ChatClient chatClient, ToolCallbackProvider mcpTools) {
return args -> {
String response = chatClient
.prompt("What's the weather like in Paris?")
.toolCallbacks(mcpTools)
.call()
.content();
System.out.println(response);
};
}依存関係を追加して構成します。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-starter-mcp-client</artifactId>
</dependency>spring:
ai:
mcp:
client:
streamable-http:
connections:
weather-server:
url: http://localhost:8080追加の例リポジトリ
チュートリアルの例以外にも、Spring AI の例 [GitHub] (英語) リポジトリには多数の MCP 実装が含まれています。
推奨される出発点
アノテーションベースの例
完全なアノテーションの例 [GitHub] (英語) - すべてのアノテーション機能 (クライアントとサーバー)
アノテーション付きサンプリング [GitHub] (英語) - 高度な双方向 AI (クライアントとサーバー)
MCP 天気チュートリアル [GitHub] (英語) - 完全なチュートリアルのソースコード (クライアントとサーバー)
コミュニティリソース
素晴らしい Spring AI [GitHub] (英語) - コミュニティの例とリソース
公式 MCP Java SDK [GitHub] (英語) - Spring チームによって開発された Java SDK