Confidential guide on numerology and astrology, based of GG33 Public information

spring-rest-to-mcp
Convert Spring REST API to MCP Server with OpenRewrite
3 years
Works with Finder
1
Github Watches
0
Github Forks
5
Github Stars
Spring Web to MCP Converter 🚀
An OpenRewrite recipe collection that automatically converts Spring Web REST APIs to Spring AI Model Context Protocol (MCP) server tools.
📋 Introduction
This project provides a set of OpenRewrite recipes that help you migrate traditional Spring Web REST APIs to Spring AI's Model Context Protocol (MCP) server tools. The transformation includes:
- 🔄 Converting Spring Web annotations to Spring AI MCP
@Tool
annotations - 🔧 Adding necessary MCP configuration and components
- 📦 Updating Maven dependencies to include Spring AI MCP server components
The recipes automatically extract documentation from your existing REST controllers to create properly documented MCP tools, making your APIs accessible to AI agents through the Model Context Protocol.
For more details about Spring AI's implementation of MCP, see the Spring AI MCP documentation.
🛠️ How to Build and Install
Prerequisites
- Java 17 or higher
- Maven 3.6+
Prerequisites for Target REST API Projects
To successfully migrate your Spring Web REST API to MCP, your project should:
- Use Spring Boot 3.2+ (3.2.0 or newer)
- Use Spring Web MVC for REST controllers
- Use Maven build tool
The recipe adds Spring AI MCP dependencies (version 1.0.0-SNAPSHOT or newer) to your project automatically.
Build Steps
-
Clone this repository:
git clone https://github.com/yourusername/web-to-mcp.git cd web-to-mcp
-
Build the project:
mvn clean install
This will compile the code and install the artifact to your local Maven repository.
🔥 How to Use
To apply the recipes to your Spring Web project, run the following Maven command:
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
Important: This command needs to be executed twice:
- First execution will update your pom.xml to add necessary repositories and dependencies
- Second execution will perform the actual code conversion of your Spring Web controllers to MCP tools
✨ Features
The recipe performs several transformations that are organized into three main components:
1. POM Updates (UpdatePom
)
- Adds Spring Snapshots repository (
https://repo.spring.io/snapshot
) - Adds Central Portal Snapshots repository (
https://central.sonatype.com/repository/maven-snapshots/
) - Adds Spring AI MCP server WebMVC dependency (
spring-ai-starter-mcp-server-webmvc
)
2. Code Transformations
-
AddToolAnnotationToMappingMethod
: Automatically converts Spring Web controller methods to MCP tools- Adds
@Tool
annotations to methods with Spring Web mapping annotations (@GetMapping
,@PostMapping
, etc.) - Extracts method descriptions from JavaDoc comments to populate the
description
attribute - Adds
@ToolParam
annotations to method parameters, preserving their descriptions from JavaDoc
- Adds
-
AddToolCallbackProviderBean
: Creates or updates a bean to register MCP tools- Identifies Spring Boot application entry point class
- Creates a
ToolCallbackProvider
bean to register all controllers with@Tool
annotations - Intelligently updates existing provider beans if they already exist
-
AddSpringAIMcpProperties
: Configures MCP server properties- Adds required MCP server configuration to
application.properties
orapplication.yml
- Sets server name, version, type, and message endpoints
- Supports both YAML and Properties file formats
- Adds required MCP server configuration to
🧪 Example
Before (Spring Web Controller)
@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
}
}
After (MCP Tool)
@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
}
}
Generated MCP Configuration
The recipe will also automatically add MCP server configuration to your application properties:
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
And automatically register your tools by adding a ToolCallbackProvider
bean to your Spring Boot application class:
@Bean
ToolCallbackProvider toolCallbackProvider(UserController userController) {
return MethodToolCallbackProvider.builder()
.toolObjects(userController)
.build();
}
🌟 Demonstration
You can try out this conversion tool with a sample Spring Boot 3 REST API project that's ready for conversion.
Sample Project Setup
-
Clone the sample project:
git clone https://github.com/addozhang/spring-boot-3-rest-api-sample.git cd spring-boot-3-rest-api-sample
-
Review the sample project structure:
- It's a standard Spring Boot 3 application with REST controllers
- Includes typical REST endpoints with various HTTP methods (GET, POST, PUT, DELETE)
- Contains proper JavaDoc comments that will be converted to MCP tool descriptions
Conversion Process
-
First, run the Maven command to update the POM file with required dependencies:
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
-
Then, run the same command again to perform the actual code conversion:
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
-
Verify the changes:
- Check your controller classes for added
@Tool
and@ToolParam
annotations - Look for the new
ToolCallbackProvider
bean in your main application class - Check that
application.properties
orapplication.yml
has MCP server configuration
- Check your controller classes for added
-
Run the application:
mvn spring-boot:run
-
Test your MCP server using the official MCP Inspector:
- Clone the MCP Inspector repository:
git clone https://github.com/modelcontextprotocol/inspector.git cd inspector
- Install dependencies and start the inspector:
npm install npm run dev
- Access the inspector in your browser at: http://localhost:5173/
- In the left side panel, configure your MCP server with:
- Type: SSE
- Address: http://localhost:8080/mcp/messages
- Once connected, you can:
- View all available tools in the main panel
- Test each tool interactively
- See the responses from your MCP server
- Clone the MCP Inspector repository:
What to Expect
After conversion, your Spring Boot application will function both as a traditional REST API and as an MCP server. This means:
- All your existing endpoints continue to work as before
- Applications that support the MCP protocol can discover and interact with your API
- AI assistants can understand how to use your tools through the MCP protocol's standardized format
Applications consuming your MCP server can be configured to connect to it with configuration like:
{
"mcpServers": {
"spring-ai-mcp-sample": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"url": "http://localhost:8080/mcp/messages",
"transportType": "sse"
}
}
}
This allows client applications to seamlessly discover and utilize the tools provided by your converted API.
📄 License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
👥 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📞 Support
If you have any questions or need help, please open an issue on GitHub.
相关推荐
Converts Figma frames into front-end code for various mobile frameworks.
Advanced software engineer GPT that excels through nailing the basics.
I find academic articles and books for research and literature reviews.
Embark on a thrilling diplomatic quest across a galaxy on the brink of war. Navigate complex politics and alien cultures to forge peace and avert catastrophe in this immersive interstellar adventure.
Delivers concise Python code and interprets non-English comments
Micropython I2C-based manipulation of the MCP series GPIO expander, derived from Adafruit_MCP230xx
Discover the most comprehensive and up-to-date collection of MCP servers in the market. This repository serves as a centralized hub, offering an extensive catalog of open-source and proprietary MCP servers, complete with features, documentation links, and contributors.
The all-in-one Desktop & Docker AI application with built-in RAG, AI agents, No-code agent builder, MCP compatibility, and more.
AWS MCP Servers — specialized MCP servers that bring AWS best practices directly to your development workflow
💬 MaxKB is an open-source AI assistant for enterprise. It seamlessly integrates RAG pipelines, supports robust workflows, and provides MCP tool-use capabilities.
MCP server to provide Figma layout information to AI coding agents like Cursor
Reviews

user_sna5ur8C
I have been using the spring-rest-to-mcp application by addozhang, and it has significantly streamlined the integration of RESTful services into my MCP projects. The seamless connection and ease of use are impressive, making my development process much smoother. Highly recommend to any MCP application developer! Check it out on GitHub: https://github.com/addozhang/spring-rest-to-mcp.