Skip to content

Conversation

@Aias00
Copy link
Contributor

@Aias00 Aias00 commented Apr 8, 2025

add model context protocol server plugin

Make sure that:

  • You have read the contribution guidelines.
  • You submit test cases (unit or integration tests) that back your changes.
  • Your local test passed ./mvnw clean install -Dmaven.javadoc.skip=true.

@moremind moremind requested a review from Copilot July 8, 2025 01:50

This comment was marked as outdated.

}

private boolean isRequestBodyMethod(final String method) {
return "POST".equalsIgnoreCase(method) || "PUT".equalsIgnoreCase(method) || "PATCH".equalsIgnoreCase(method);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not use magic value

private ShenyuSseServerTransportProvider createMcpServerTransport(final String uri) {
String path = StringUtils.removeEnd(uri, SLASH);
LOG.info("Creating new McpServer for URI: {}", path);
String messageEndpoint = path + "/message";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same question

@moremind moremind requested a review from Copilot July 8, 2025 14:51
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-server plugin 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);
Copy link

Copilot AI Jul 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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);

Copilot uses AI. Check for mistakes.
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()));
Copy link

Copilot AI Jul 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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()));

Copilot uses AI. Check for mistakes.
@moremind moremind added this to the 2.7.0.2 milestone Jul 15, 2025
@moremind moremind merged commit e2cb6f3 into apache:master Jul 15, 2025
53 of 62 checks passed
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 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants