[type:feat] mcp server plugin#5999
Merged
moremind merged 86 commits intoapache:masterfrom Jul 15, 2025
Merged
Conversation
# Conflicts: # db/upgrade/2.7.0-upgrade-2.7.1-mysql.sql
# Conflicts: # shenyu-plugin/pom.xml
moremind
requested changes
Jul 8, 2025
...cp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/request/RequestConfigHelper.java
Outdated
Show resolved
Hide resolved
moremind
requested changes
Jul 8, 2025
| } | ||
|
|
||
| private boolean isRequestBodyMethod(final String method) { | ||
| return "POST".equalsIgnoreCase(method) || "PUT".equalsIgnoreCase(method) || "PATCH".equalsIgnoreCase(method); |
...server/src/main/java/org/apache/shenyu/plugin/mcp/server/holder/ShenyuMcpExchangeHolder.java
Show resolved
Hide resolved
...server/src/main/java/org/apache/shenyu/plugin/mcp/server/manager/ShenyuMcpServerManager.java
Outdated
Show resolved
Hide resolved
| private ShenyuSseServerTransportProvider createMcpServerTransport(final String uri) { | ||
| String path = StringUtils.removeEnd(uri, SLASH); | ||
| LOG.info("Creating new McpServer for URI: {}", path); | ||
| String messageEndpoint = path + "/message"; |
...cp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/request/RequestConfigHelper.java
Show resolved
Hide resolved
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR introduces a new Model Context Protocol (MCP) server plugin, including its Spring Boot starter, transport layer, session and request management, and database schema updates.
- Adds
mcp-serverplugin modules and auto-configuration for Spring Boot - Implements SSE transport provider, session manager, request/response decorators, and callback integration
- Updates database migration scripts and menus to register the new plugin
Reviewed Changes
Copilot reviewed 39 out of 39 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| shenyu-web/src/main/java/org/apache/shenyu/web/filter/FileSizeFilter.java | Reformatted chained method calls for readability |
| shenyu-spring-boot-starter-plugin-mcp-server/src/main/java/org/apache/shenyu/springboot/starter/plugin/mcp/server/McpServerPluginConfiguration.java | Added MCP plugin beans and auto-configuration imports |
| shenyu-plugin-mcp-server/src/main/java/org/apache/shenyu/plugin/mcp/server/transport/ShenyuSseServerTransportProvider.java | Implemented SSE transport with session lifecycle management |
| shenyu-plugin-global/src/main/java/org/apache/shenyu/plugin/global/DefaultShenyuContextBuilder.java | Changed Optional.ofNullable to Optional.of in HTTP method handling |
| */ | ||
| public class ShenyuSseServerTransportProvider implements McpServerTransportProvider { | ||
|
|
||
| private static final Logger LOGGER = LoggerFactory.getLogger(WebFluxSseServerTransportProvider.class); |
There was a problem hiding this comment.
The logger is initialized with the wrong class. It should use ShenyuSseServerTransportProvider.class instead of WebFluxSseServerTransportProvider.class.
Suggested change
| private static final Logger LOGGER = LoggerFactory.getLogger(WebFluxSseServerTransportProvider.class); | |
| private static final Logger LOGGER = LoggerFactory.getLogger(ShenyuSseServerTransportProvider.class); |
| shenyuContext.setPath(requestURI.getRawPath()); | ||
| shenyuContext.setStartDateTime(LocalDateTime.now()); | ||
| Optional.ofNullable(request.getMethod()).ifPresent(httpMethod -> shenyuContext.setHttpMethod(httpMethod.name())); | ||
| Optional.of(request.getMethod()).ifPresent(httpMethod -> shenyuContext.setHttpMethod(httpMethod.name())); |
There was a problem hiding this comment.
Using Optional.of on a potentially null value will throw NPE. It should use Optional.ofNullable to safely handle a null HTTP method.
Suggested change
| Optional.of(request.getMethod()).ifPresent(httpMethod -> shenyuContext.setHttpMethod(httpMethod.name())); | |
| Optional.ofNullable(request.getMethod()).ifPresent(httpMethod -> shenyuContext.setHttpMethod(httpMethod.name())); |
moremind
approved these changes
Jul 15, 2025
guanzhenxing
added a commit
to guanzhenxing/shenyu
that referenced
this pull request
Jul 16, 2025
…henxing/shenyu into feature/import-swagger-url * 'feature/import-swagger-url' of https://github.com/guanzhenxing/shenyu: [type:feat] mcp server plugin (apache#5999)
478320
pushed a commit
to 478320/shenyu
that referenced
this pull request
Jul 17, 2025
* [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin, upgrade spring ai version to 1.0.0-M8 * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * [feat] mcp server plugin * feat: mcp server plugin * [feat] mcp server plugin, plugin handle see * [feat] mcp server plugin, some fix * [feat] mcp server plugin, some fix * [feat] mcp server plugin * [feat] mcp server plugin, plugin handle see, toolCallback -> http ok * [feat] mcp server plugin * [feat] mcp server plugin, plugin handle see, toolCallback -> rpc ok * [feat] mcp server plugin, plugin handle see, toolCallback -> rpc ok * [feat] mcp server plugin, tidy up comments * [feat] mcp server plugin, fix some review * [feat] mcp server plugin, fix some review * [feat] mcp server plugin, fix some review * [feat] mcp server plugin, fix some review * [feat] mcp server plugin, fix some review * [feat] mcp server plugin, add messageEndpoint properties * [feat] mcp server plugin, add sql * [feat] mcp server plugin, fix some review * [feat] mcp server plugin, fix check style * [feat] mcp server plugin, fix some review * [feat] mcp server plugin, add messageEndpoint properties --------- Co-authored-by: zhengpeng <847850277@qq.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
add model context protocol server plugin
Make sure that:
./mvnw clean install -Dmaven.javadoc.skip=true.