Skip to content

Commit 737238a

Browse files
committed
fix(server): The parameter order displayed on MCP Inspector page is incorrect
1 parent af50fde commit 737238a

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

src/main/java/com/github/codeboyzhou/mcp/declarative/server/McpSyncServerPromptRegister.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public McpSyncServerPromptRegister(Set<Class<?>> promptClasses) {
3030
@Override
3131
public void registerTo(McpSyncServer server) {
3232
for (Class<?> promptClass : promptClasses) {
33-
Set<Method> methods = ReflectionHelper.getMethodsAnnotatedWith(promptClass, McpPrompt.class);
33+
List<Method> methods = ReflectionHelper.getMethodsAnnotatedWith(promptClass, McpPrompt.class);
3434
for (Method method : methods) {
3535
McpServerFeatures.SyncPromptSpecification prompt = createComponentFrom(promptClass, method);
3636
server.addPrompt(prompt);
@@ -61,7 +61,7 @@ public McpServerFeatures.SyncPromptSpecification createComponentFrom(Class<?> cl
6161
}
6262

6363
private List<McpSchema.PromptArgument> createPromptArguments(Method method) {
64-
Set<Parameter> parameters = ReflectionHelper.getParametersAnnotatedWith(method, McpPromptParam.class);
64+
List<Parameter> parameters = ReflectionHelper.getParametersAnnotatedWith(method, McpPromptParam.class);
6565
List<McpSchema.PromptArgument> promptArguments = new ArrayList<>(parameters.size());
6666
for (Parameter parameter : parameters) {
6767
McpPromptParam promptParam = parameter.getAnnotation(McpPromptParam.class);

src/main/java/com/github/codeboyzhou/mcp/declarative/server/McpSyncServerResourceRegister.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public McpSyncServerResourceRegister(Set<Class<?>> resourceClasses) {
2727
@Override
2828
public void registerTo(McpSyncServer server) {
2929
for (Class<?> resourceClass : resourceClasses) {
30-
Set<Method> methods = ReflectionHelper.getMethodsAnnotatedWith(resourceClass, McpResource.class);
30+
List<Method> methods = ReflectionHelper.getMethodsAnnotatedWith(resourceClass, McpResource.class);
3131
for (Method method : methods) {
3232
McpServerFeatures.SyncResourceSpecification resource = createComponentFrom(resourceClass, method);
3333
server.addResource(resource);

src/main/java/com/github/codeboyzhou/mcp/declarative/server/McpSyncServerToolRegister.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import java.lang.reflect.Parameter;
1717
import java.util.ArrayList;
1818
import java.util.HashMap;
19+
import java.util.LinkedHashMap;
1920
import java.util.List;
2021
import java.util.Map;
2122
import java.util.Set;
@@ -36,7 +37,7 @@ public McpSyncServerToolRegister(Set<Class<?>> toolClasses) {
3637
@Override
3738
public void registerTo(McpSyncServer server) {
3839
for (Class<?> toolClass : toolClasses) {
39-
Set<Method> methods = ReflectionHelper.getMethodsAnnotatedWith(toolClass, McpTool.class);
40+
List<Method> methods = ReflectionHelper.getMethodsAnnotatedWith(toolClass, McpTool.class);
4041
for (Method method : methods) {
4142
McpServerFeatures.SyncToolSpecification tool = createComponentFrom(toolClass, method);
4243
server.addTool(tool);
@@ -67,11 +68,11 @@ public McpServerFeatures.SyncToolSpecification createComponentFrom(Class<?> claz
6768
}
6869

6970
private McpSchema.JsonSchema createJsonSchema(Method method) {
70-
Map<String, Object> properties = new HashMap<>();
71-
Map<String, Object> definitions = new HashMap<>();
71+
Map<String, Object> properties = new LinkedHashMap<>();
72+
Map<String, Object> definitions = new LinkedHashMap<>();
7273
List<String> required = new ArrayList<>();
7374

74-
Set<Parameter> parameters = ReflectionHelper.getParametersAnnotatedWith(method, McpToolParam.class);
75+
List<Parameter> parameters = ReflectionHelper.getParametersAnnotatedWith(method, McpToolParam.class);
7576
for (Parameter parameter : parameters) {
7677
McpToolParam toolParam = parameter.getAnnotation(McpToolParam.class);
7778
final String parameterName = toolParam.name();

src/main/java/com/github/codeboyzhou/mcp/declarative/util/ReflectionHelper.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,21 @@
77
import java.lang.reflect.Method;
88
import java.lang.reflect.Parameter;
99
import java.util.LinkedHashMap;
10+
import java.util.List;
1011
import java.util.Map;
11-
import java.util.Set;
1212
import java.util.function.Consumer;
13-
14-
import static java.util.stream.Collectors.toSet;
13+
import java.util.stream.Stream;
1514

1615
public final class ReflectionHelper {
1716

18-
public static Set<Method> getMethodsAnnotatedWith(Class<?> clazz, Class<? extends Annotation> annotation) {
17+
public static List<Method> getMethodsAnnotatedWith(Class<?> clazz, Class<? extends Annotation> annotation) {
1918
Method[] methods = clazz.getMethods();
20-
return Set.of(methods).stream().filter(m -> m.isAnnotationPresent(annotation)).collect(toSet());
19+
return Stream.of(methods).filter(m -> m.isAnnotationPresent(annotation)).toList();
2120
}
2221

23-
public static Set<Parameter> getParametersAnnotatedWith(Method method, Class<? extends Annotation> annotation) {
22+
public static List<Parameter> getParametersAnnotatedWith(Method method, Class<? extends Annotation> annotation) {
2423
Parameter[] parameters = method.getParameters();
25-
return Set.of(parameters).stream().filter(p -> p.isAnnotationPresent(annotation)).collect(toSet());
24+
return Stream.of(parameters).filter(p -> p.isAnnotationPresent(annotation)).toList();
2625
}
2726

2827
public static void doWithFields(Class<?> clazz, Consumer<Field> consumer) {

0 commit comments

Comments
 (0)