モデルコンテキストプロトコル (MCP)

モデルコンテキストプロトコル (MCP) (英語) は、アプリケーションが大規模言語モデル (LLM) にコンテキストを提供する方法を標準化するオープンプロトコルです。MCP は、AI モデルをさまざまなデータソースやツールに接続するための統一された方法を提供し、シームレスで一貫性のある統合を実現します。LLM 上にエージェントや複雑なワークフローを構築できます。LLM はデータやツールとの統合が頻繁に必要になりますが、MCP は次の機能を提供します。- LLM が直接接続できる、構築済みの統合のリストが増え続けています - LLM プロバイダーとベンダーを切り替える柔軟性

Spring AI MCP

Spring AI MCP は実験的なプロジェクトであり、変更される可能性があります。

Spring AI MCP [GitHub] (英語) は、モデルコンテキストプロトコルに Java と Spring Framework の統合を提供する実験的なプロジェクトです。これにより、Spring AI アプリケーションは、標準化されたインターフェースを介してさまざまなデータソースやツールと対話できるようになり、同期と非同期の両方の通信パターンがサポートされます。

SpringAIMCP

Spring AI MCP は、次のコンポーネントを含むモジュール式アーキテクチャを実装します。

  • Spring AI アプリケーション: Spring AI フレームワークを使用して、MCP を介してデータにアクセスする Generative AI アプリケーションを構築します。

  • Spring MCP クライアント: Spring サーバーとの 1:1 接続を維持する MCP プロトコルの AI 実装

  • MCP サーバー: 標準化されたモデルコンテキストプロトコルを通じて特定の機能を公開する軽量プログラム

  • ローカルデータソース: MCP サーバーが安全にアクセスできるコンピューターのファイル、データベース、サービス

  • リモートサービス: MCP サーバーが接続できるインターネット経由 (API 経由など) で利用可能な外部システム

このアーキテクチャは、単純なファイルシステムアクセスから、データベースやインターネット接続を使用した複雑なマルチモデル AI のやり取りまで、幅広いユースケースをサポートします。

入門

Maven プロジェクトに SDK を追加します。

<dependency>
    <groupId>org.springframework.experimental</groupId>
    <artifactId>spring-ai-mcp</artifactId>
    <version>0.2.0</version>
</dependency>
dependencies {
    implementation 'org.springframework.experimental:spring-ai-mcp:0.2.0'
}

Spring AI MCP マイルストーンは、Maven 主要リポジトリではまだ利用できません。Spring AI MCP アーティファクトにアクセスするには、ビルドファイルに Spring マイルストーンリポジトリを追加してください。

<repositories>
  <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/libs-milestone-local</url>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
  </repository>
</repositories>

後者は mcp-core 上に構築され、McpFunctionCallback などの便利な Spring AI 抽象化を提供します。

次に、McpClient を作成して、MCP Brave サーバーツールを ChatClient に登録し、LLM が呼び出すようにします。

// https://github.com/modelcontextprotocol/servers/tree/main/src/brave-search
var stdioParams = ServerParameters.builder("npx")
        .args("-y", "@modelcontextprotocol/server-brave-search")
        .addEnvVar("BRAVE_API_KEY", System.getenv("BRAVE_API_KEY"))
        .build();

var mcpClient = McpClient.using(new StdioClientTransport(stdioParams)).sync();

var init = mcpClient.initialize();

var chatClient = chatClientBuilder
        .defaultFunctions(mcpClient.listTools(null)
                .tools()
                .stream()
                .map(tool -> new McpFunctionCallback(mcpClient, tool))
                .toArray(McpFunctionCallback[]::new))
        .build();

String response = chatClient
        .prompt("Does Spring AI supports the Model Context Protocol? Please provide some references.")
        .call().content();

サンプルデモ

Spring AI MCP で使用できる MCP サーバーのリスト [GitHub] (英語) は増え続けています。spring-ai-examples/model-context-protocol [GitHub] (英語) リポジトリでこれらの MCP の例を調べましょう。