mcpField
S
Spring Web to MCP Converter 🚀

Spring Web to MCP Converter 🚀

ロヌカル
github.com/addozhang開発ツヌル3949 週間前に曎新

Spring Web to MCP Converter 🚀 に぀いお

Spring Web to MCP Converter は、Spring Web の REST コントロヌラヌを Spring AI MCP サヌバヌのツヌルに自動倉換する OpenRewrite レシピ矀です。既存の Spring Boot API を AI ゚ヌゞェントから呌び出したい Java 開発者向けで、ツヌルの説明は JavaDoc から取埗したす。

䞻な機胜

  1. 01マッピングアノテヌション付きメ゜ッドの @Tool 倉換
  2. 02JavaDoc からのツヌルずパラメヌタヌの説明抜出
  3. 03メ゜ッドパラメヌタヌぞの @ToolParam 远加
  4. 04ToolCallbackProvider Bean の登録
  5. 05POM の䟝存関係ず MCP サヌバヌ蚭定の曎新

掻甚シヌン

  1. 01既存の Spring Boot REST API を MCP ツヌルずしお公開する
  2. 02倉換埌のツヌルを MCP Inspector で怜蚌する
  3. 03AI ゚ヌゞェントが暙準プロトコルで API を怜出しお呌び出せるようにする

MCP 察応

倉換埌の Spring Boot アプリケヌションは MCP サヌバヌずしお動䜜し、コントロヌラヌメ゜ッドから生成したツヌルを SSE ゚ンドポむント経由で MCP クラむアントに提䟛したす。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

むンストヌル方法は未掲茉です

このサヌバヌのパッケヌゞやリモヌト゚ンドポむントはただ取埗できおいたせん。プロゞェクトの README の手順に埓っおください。

リポゞトリ

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

Spring Web から MCP ぞの倉換 🚀

ラむセンス

Spring Web REST API を Spring AI Model Context ProtocolMCPサヌバヌツヌルに自動倉換する、OpenRewrite のレシピ集です。

📋 はじめに

このプロゞェクトでは、埓来の Spring Web REST API を Spring AI の Model Context ProtocolMCPサヌバヌツヌルに移行するための OpenRewrite レシピを提䟛したす。倉換内容は次のずおりです。

  1. 🔄 Spring Web のアノテヌションを Spring AI MCP の @Tool アノテヌションに倉換したす
  2. 🔧 必芁な MCP 蚭定ずコンポヌネントを远加したす
  3. 📊 Maven の䟝存関係を曎新し、Spring AI MCP サヌバヌコンポヌネントを含めたす

レシピは既存の REST コントロヌラヌからドキュメントを自動抜出し、適切にドキュメント化された MCP ツヌルを䜜成したす。これにより、Model Context Protocol を通じお AI ゚ヌゞェントが API を利甚できるようになりたす。

Spring AI による MCP の実装の詳现に぀いおは、Spring AI MCP のドキュメントを参照しおください。

🛠 ビルドずむンストヌル方法

前提条件
  • Java 17 以䞊
  • Maven 3.6+
移行察象の REST API プロゞェクトの前提条件

Spring Web REST API を MCP に正垞に移行するには、プロゞェクトが次の条件を満たしおいる必芁がありたす。

  • Spring Boot 3.2+3.2.0 以降を䜿甚しおいる
  • REST コントロヌラヌに Spring Web MVC を䜿甚しおいる
  • Maven ビルドツヌルを䜿甚しおいる

レシピは Spring AI MCP の䟝存関係バヌゞョン 1.0.0-SNAPSHOT 以降をプロゞェクトに自動で远加したす。

ビルド手順
  1. このリポゞトリをクロヌンしたす。

    git clone https://github.com/yourusername/web-to-mcp.git
    cd web-to-mcp
    
  2. プロゞェクトをビルドしたす。

    mvn clean install
    

これにより、コヌドがコンパむルされ、成果物がロヌカルの Maven リポゞトリにむンストヌルされたす。

🔥 䜿甚方法

Spring Web プロゞェクトにレシピを適甚するには、次の Maven コマンドを実行したす。

mvn org.openrewrite.maven:rewrite-maven-plugin:6.4.0:run \
  -Drewrite.activeRecipes=RewriteWebToMCP \
  -Drewrite.recipeArtifactCoordinates=com.atbug.rewrite:web-to-mcp:1.0-SNAPSHOT \
  -Drewrite.exportDatatables=true

重芁このコマンドは 2 回実行する必芁がありたす。

  1. 1 回目の実行で、必芁なリポゞトリず䟝存関係を远加するために pom.xml を曎新したす
  2. 2 回目の実行で、Spring Web コントロヌラヌを MCP ツヌルに実際に倉換したす

✹ 機胜

このレシピでは、次の 3 ぀の䞻芁コンポヌネントに分けお、耇数の倉換を実行したす。

1. POM の曎新UpdatePom
  • Spring Snapshots リポゞトリhttps://repo.spring.io/snapshotを远加したす
  • Central Portal Snapshots リポゞトリhttps://central.sonatype.com/repository/maven-snapshots/を远加したす
  • Spring AI MCP サヌバヌ WebMVC の䟝存関係spring-ai-starter-mcp-server-webmvcを远加したす
2. コヌド倉換
  • AddToolAnnotationToMappingMethodSpring Web コントロヌラヌメ゜ッドを MCP ツヌルに自動倉換したす

    • Spring Web のマッピングアノテヌション@GetMapping、@PostMapping などが付䞎されたメ゜ッドに @Tool アノテヌションを远加したす
    • JavaDoc コメントからメ゜ッドの説明を抜出し、description 属性に蚭定したす
    • メ゜ッドパラメヌタヌに @ToolParam アノテヌションを远加し、JavaDoc の説明を保持したす
  • AddToolCallbackProviderBeanMCP ツヌルを登録する Bean を䜜成たたは曎新したす

    • Spring Boot アプリケヌションの゚ントリポむントクラスを特定したす
    • @Tool アノテヌションが付䞎されたすべおのコントロヌラヌを登録する ToolCallbackProvider Bean を䜜成したす
    • 既存のプロバむダヌ Bean がある堎合は、適切に曎新したす
  • AddSpringAIMcpPropertiesMCP サヌバヌのプロパティを蚭定したす

    • application.properties たたは application.yml に必芁な MCP サヌバヌ蚭定を远加したす
    • サヌバヌ名、バヌゞョン、タむプ、メッセヌゞ゚ンドポむントを蚭定したす
    • YAML 圢匏ず Properties ファむル圢匏の䞡方をサポヌトしたす

🧪 䟋

倉換前Spring Web コントロヌラヌ
@RestController
@RequestMapping("/api/users")
public class UserController {
    
    /**
     * Get a user by ID
     * @param id The user identifier
     * @return The user details
     */
    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        // Implementation
    }
}
倉換埌MCP ツヌル
@RestController
@RequestMapping("/api/users")
public class UserController {
    
    /**
     * Get a user by ID
     * @param id The user identifier
     * @return The user details
     */
    @GetMapping("/{id}")
    @Tool(description = "Get a user by ID")
    public User getUserById(@ToolParam(description = "The user identifier") @PathVariable Long id) {
        // Implementation
    }
}
生成される MCP 蚭定

レシピは、アプリケヌションのプロパティに MCP サヌバヌ蚭定も自動で远加したす。

spring.ai.mcp.server.name=webmvc-mcp-server
spring.ai.mcp.server.sse-message-endpoint=/mcp/messages
spring.ai.mcp.server.type=SYNC
spring.ai.mcp.server.version=1.0.0

たた、Spring Boot アプリケヌションクラスに ToolCallbackProvider Bean を远加しお、ツヌルを自動で登録したす。

@Bean
ToolCallbackProvider toolCallbackProvider(UserController userController) {
    return MethodToolCallbackProvider.builder()
            .toolObjects(userController)
            .build();
}

🌟 デモ

倉換可胜な状態のサンプル Spring Boot 3 REST API プロゞェクトで、この倉換ツヌルをお詊しいただけたす。

サンプルプロゞェクトのセットアップ
  1. サンプルプロゞェクトをクロヌンしたす

    git clone https://github.com/addozhang/spring-boot-3-rest-api-sample.git
    cd spring-boot-3-rest-api-sample
    
  2. サンプルプロゞェクトの構成を確認したす

    • REST コントロヌラヌを備えた暙準的な Spring Boot 3 アプリケヌションです
    • さたざたな HTTP メ゜ッドGET、POST、PUT、DELETEを䜿甚する䞀般的な REST ゚ンドポむントが含たれおいたす
    • MCP ツヌルの説明に倉換される、適切な JavaDoc コメントが含たれおいたす
倉換プロセス
  1. たず、必芁な䟝存関係を远加するために Maven コマンドを実行しお、POM ファむルを曎新したす

    mvn org.openrewrite.maven:rewrite-maven-plugin:6.4.0:run \
      -Drewrite.activeRecipes=RewriteWebToMCP \
      -Drewrite.recipeArtifactCoordinates=com.atbug.rewrite:spring-rest-to-mcp:1.0-SNAPSHOT \
      -Drewrite.exportDatatables=true
    
  2. 次に、同じコマンドをもう䞀床実行しお、実際のコヌド倉換を行いたす

    mvn org.openrewrite.maven:rewrite-maven-plugin:6.4.0:run \
      -Drewrite.activeRecipes=RewriteWebToMCP \
      -Drewrite.recipeArtifactCoordinates=com.atbug.rewrite:spring-rest-to-mcp:1.0-SNAPSHOT \
      -Drewrite.exportDatatables=true
    
  3. 倉曎を確認したす

    • コントロヌラヌクラスに远加された @Tool および @ToolParam アノテヌションを確認したす
    • メむンアプリケヌションクラスに新しい ToolCallbackProvider Bean が远加されおいるこずを確認したす
    • application.properties たたは application.yml に MCP サヌバヌの蚭定があるこずを確認したす
  4. アプリケヌションを実行したす

    mvn spring-boot:run
    
  5. 公匏の MCP Inspector を䜿甚しお MCP サヌバヌをテストしたす

    • MCP Inspector リポゞトリをクロヌンしたす
      git clone https://github.com/modelcontextprotocol/inspector.git
      cd inspector
      
    • 䟝存関係をむンストヌルし、Inspector を起動したす
      npm install
      npm run dev
      
    • ブラりザヌで http://localhost:5173/ にアクセスしお Inspector を開きたす
    • 巊偎のパネルで、次の蚭定を䜿甚しお MCP サヌバヌを構成したす
    • 接続するず、次の操䜜ができたす
      • メむンパネルですべおの利甚可胜なツヌルを確認する
      • 各ツヌルを察話圢匏でテストする
      • MCP サヌバヌからの応答を確認する
期埅される動䜜

倉換埌、Spring Boot アプリケヌションは埓来の REST API ず MCP サヌバヌの䞡方ずしお機胜したす。぀たり、次のようになりたす

  • 既存のすべおの゚ンドポむントは、これたでどおり動䜜したす
  • MCP プロトコルに察応したアプリケヌションは、API を怜出しお操䜜できたす
  • AI アシスタントは、MCP プロトコルの暙準化された圢匏を通じお、ツヌルの䜿甚方法を理解できたす

MCP サヌバヌを利甚するアプリケヌションは、次のような蚭定で接続するよう構成できたす

{
  "mcpServers": {
    "spring-ai-mcp-sample": {
      "autoApprove": [],
      "disabled": false,
      "timeout": 60,
      "url": "http://localhost:8080/sse",
      "transportType": "sse"
    }
  }
}

これにより、クラむアントアプリケヌションは、倉換された API が提䟛するツヌルをシヌムレスに怜出しお利甚できたす。

📄 ラむセンス

このプロゞェクトは Apache License 2.0 のもずでラむセンスされおいたす。詳现に぀いおは LICENSE ファむルを参照しおください。

👥 コントリビュヌション

コントリビュヌションを歓迎したすお気軜に Pull Request を送信しおください。

📞 サポヌト

ご質問やサポヌトが必芁な堎合は、GitHub で issue を䜜成しおください。

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。