mcpField
M
MCP Host Project

MCP Host Project

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

MCP Host Project について

MCP Host Project は、Spring Boot アプリケーションで Spring AI を使う MCP サーバーとクライアントの実装例です。ジオコーディングとタイムゾーンサービスを組み合わせ、コンソールから LLM が都市の座標とタイムゾーンを調べられます。

主な機能

  1. 01MCP サーバーとクライアントの実装例
  2. 02座標を返すジオコーディングサービス
  3. 03座標からタイムゾーンを検索
  4. 04LLM とコンソールで対話

活用シーン

  1. 01都市の緯度と経度を検索
  2. 02位置の座標からタイムゾーンを取得

MCP 対応

Spring AI で MCP サーバーを構築し、MCP クライアントを介してジオコーディングおよびタイムゾーンサービスに接続します。MCP Host はこれらの機能を LLM に提供します。

設定

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

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

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

リポジトリ

ツール

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

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

詳細

MCP ホストプロジェクト

説明

このプロジェクトでは、Spring Boot アプリケーションにおける MCP(Model Context Protocol)対応の Spring AI の統合方法を、サーバー側とクライアント側の両方の実装を通じて紹介します。

MCP

MCP は、AI モデルにおけるコンテキストを介したやり取りの管理を効率化し、外部データソースやツールとの一貫した統合を可能にする標準規格です。

Spring AI MCP は MCP Java SDK を拡張し、クライアントとサーバーの両方に専用の Spring Boot スターターを提供します。

MCP クライアントは、MCP サーバーとの通信と接続管理を担います。

このプロジェクトでは、Spring AI を活用して MCP サーバーを構築し、その機能を LLM から利用できるようにします。TOOLS に対応したモデルが必要です。このプロジェクトでは、Ollama 経由で Llama3.2 を使用します。

モジュール

このプロジェクトは、次の 3 つの主要なモジュールで構成されています。

ジオコーダーサービス
  • ポート:8081
  • 説明:指定された都市の緯度と経度を提供します。
  • 設定
public interface Geocoder {
    GeoCodeResult geocode(String city) throws Exception;
}

public record GeoCodeResult(double latitude, double longitude) {}
タイムゾーンサービス
  • ポート:8082
  • 説明:指定された緯度と経度のタイムゾーン情報を提供します。
  • 設定
public interface TimeZoneService {
    Optional<TimeZone> getTimeZoneFromLocation(double latitude, double longitude) throws Exception;
}
public record TimeZone(
        String id,
        String name,
        int rawOffset,
        int dstSavings
) {}
MCP ホスト
  • 説明:MCP クライアント経由でジオコーダーサービスとタイムゾーンサービスを利用し、LLM とやり取りするためのコンソールインターフェースを提供します。
  • 設定
@Bean
CommandLineRunner runner(final ChatClient.Builder chatClientBuilder, List<ToolCallback> toolCallbacks) {

   final ChatClient agent = chatClientBuilder.build();

   return args -> {
      try (Scanner scanner = new Scanner(System.in)) {
         while (true) {
            System.out.print("\n\nEnter city (or type 'exit' to quit): ");
            String city = scanner.nextLine();
            if ("exit".equalsIgnoreCase(city)) {
               break;
            }

            String queryTemplate = """
                    Please use the available tools to find the latitude and longitude for the city `{city}`. Once you have this information, 
                    use the tools to determine and provide all the timezone details for that location in the same language.
                    """;

            String systemTemplate = """
                    You are an AI assistant specialized in providing geographical information. Your task is to use the provided tools to gather and deliver accurate data.
                    """;

            String llmResponse = agent
                    .prompt()
                    .advisors(new SimpleLoggerAdvisor())
                    .system(systemSpec -> systemSpec.text(systemTemplate))
                    .user(userSpec -> userSpec.text(queryTemplate).param("city", city))
                    .tools(toolCallbacks)
                    .call()
                    .content();

            log.info("\n\n{}", llmResponse);
         }
      }
   };
}

プロジェクトの実行

  1. ジオコーダーサービスを起動:

    cd geocoder
    mvn spring-boot:run
    
  2. タイムゾーンサービスを起動:

    cd timezone
    mvn spring-boot:run
    
  3. MCP ホストを起動:

    cd mcp-host
    mvn spring-boot:run
    

使用方法

  1. MCP ホストを操作:
    • MCP ホストアプリケーションを実行します。
    • コンソールに都市名を入力します。
    • 入力した都市の緯度、経度、タイムゾーン情報が表示されます。

画像を挿入

画像

コメント

MCP は初めてですか?

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

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