mcpField
S
Spring AI Example

Spring AI Example

ローカル
github.com/lucasdengcn開発ツール083 週間前に更新

Spring AI Example について

Spring AI Exampleは、Spring AIによる MCP サーバーとクライアントの実装パターンを示すプロジェクトです。ツール実装やAI提案アプリを開発する人向けに、SSE、ツールコンテキスト、結果変換の例も含みます。

主な機能

  1. 01MCP サーバーとクライアントの実装
  2. 02WebFluxとWebMvcのSSE対応
  3. 03アノテーションによるツール定義
  4. 04ツール結果変換のカスタマイズ
  5. 05ツールコンテキストとパラメーター説明

活用シーン

  1. 01Spring AIのツール実装パターンの学習
  2. 02AI提案クライアントの構築例
  3. 03MCPとSSEの連携方法の確認

MCP 対応

MCP サーバー実装と、AI提案向けの MCP クライアント実装を含みます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Spring AI の例

プロジェクトの概要

このプロジェクトでは、Spring AI のツールを使用するためのさまざまな実装パターンとベストプラクティスを紹介します。主に次の 2 つのモジュールで構成されています。

  • mcp-server:WebFlux と WebMvc SSE の両方をサポートする Model Context Protocol(MCP)サーバーを実装します
  • proposal-agent:AI を活用した提案を作成するための MCP クライアントを実装します

プロジェクト構成

.
├── mcp-server/           # MCP Server implementation
│   ├── src/             # Server source code
│   └── README.md        # Server documentation
├── proposal-agent/      # MCP Client implementation
│   ├── src/             # Client source code
│   └── README.md        # Client documentation
└── src/                 # Common source code
ツールの実装パターン
メソッドをツールとして使用する

Spring AI は、@Tool を付与することでメソッドをツールとして使用できます。DateTimeTools の例を次に示します。

@Tool(name = "getCurrentDateTime", description = "Get the current date and time")
public String getCurrentDateTime() {
    return LocalDateTime.now().atZone(LocaleContextHolder.getTimeZone().toZoneId()).toString();
}
ツール結果コンバーター

ツールの結果の形式を制御するために、カスタム結果コンバーターを実装できます。CustomToolCallResultConverter の例を次に示します。

@Tool(name = "getCustomer",
      description = "Retrieve customer information",
      resultConverter = CustomToolCallResultConverter.class)
public Customer getCustomer(String name, ToolContext context) {
    return new Customer(name, "[email protected]");
}
ツールコンテキスト

Spring AI では、コンテキスト情報にアクセスするために、ツールメソッドへ ToolContext パラメーターを注入できます。

public Customer getCustomerByEmail(String email, ToolContext context) {
    log.info("Context: {}", context);
    return new Customer("Demo", email);
}
ツールパラメーター

ツールパラメーターには @ToolParam を付与して説明を指定できます。

@Tool(name = "setAlarm")
public void setAlarm(@ToolParam(description = "Time in ISO-8601 format") String time) {
    // Implementation
}
設定

このプロジェクトでは Spring Boot を使用しており、主な設定は次のとおりです。

  • Ollama AI モデルとの統合
  • PGVector を使用したベクトルストア
  • 開発用の H2 データベース
  • Web アクセス用の CORS 設定
  • MCP サーバーの実装
  • MCP クライアントの実装
  • SSE の実装
SSE の実装

リアルタイム更新のための SSE(Server-Sent Events)の実装です。これは SseEmitter クラスを使用して実現します。

技術スタック

  • Spring Boot
  • Spring AI
  • Ollama AI モデル
  • PGVector ベクトルストア
  • H2 データベース
  • CORS 設定
  • リアルタイム更新用の SSE(Server-Sent Events)

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。