Skip to content

Commit 7e594e5

Browse files
committed
refactor(server): Replace constructor calls with builder pattern
1 parent 5a22336 commit 7e594e5

File tree

4 files changed

+40
-29
lines changed

4 files changed

+40
-29
lines changed

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/ConfigurableMcpHttpSseServerFactory.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerConfiguration;
55
import com.github.codeboyzhou.mcp.declarative.configuration.McpServerSSE;
66
import com.github.codeboyzhou.mcp.declarative.server.McpHttpServer;
7-
import com.github.codeboyzhou.mcp.declarative.util.JsonHelper;
87
import io.modelcontextprotocol.server.McpAsyncServer;
98
import io.modelcontextprotocol.server.McpServer;
109
import io.modelcontextprotocol.server.transport.HttpServletSseServerTransportProvider;
@@ -24,8 +23,11 @@ public HttpServletSseServerTransportProvider transportProvider() {
2423
final String baseUrl = sse.baseUrl();
2524
final String messageEndpoint = sse.messageEndpoint();
2625
final String sseEndpoint = sse.endpoint();
27-
return new HttpServletSseServerTransportProvider(
28-
JsonHelper.MAPPER, baseUrl, messageEndpoint, sseEndpoint);
26+
return HttpServletSseServerTransportProvider.builder()
27+
.baseUrl(baseUrl)
28+
.sseEndpoint(sseEndpoint)
29+
.messageEndpoint(messageEndpoint)
30+
.build();
2931
}
3032

3133
@Override

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/McpHttpSseServerFactory.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.github.codeboyzhou.mcp.declarative.common.NamedThreadFactory;
44
import com.github.codeboyzhou.mcp.declarative.server.McpHttpServer;
55
import com.github.codeboyzhou.mcp.declarative.server.McpSseServerInfo;
6-
import com.github.codeboyzhou.mcp.declarative.util.JsonHelper;
76
import io.modelcontextprotocol.server.McpAsyncServer;
87
import io.modelcontextprotocol.server.McpServer;
98
import io.modelcontextprotocol.server.transport.HttpServletSseServerTransportProvider;
@@ -17,8 +16,11 @@ public HttpServletSseServerTransportProvider transportProvider(McpSseServerInfo
1716
final String baseUrl = serverInfo.baseUrl();
1817
final String messageEndpoint = serverInfo.messageEndpoint();
1918
final String sseEndpoint = serverInfo.sseEndpoint();
20-
return new HttpServletSseServerTransportProvider(
21-
JsonHelper.MAPPER, baseUrl, messageEndpoint, sseEndpoint);
19+
return HttpServletSseServerTransportProvider.builder()
20+
.baseUrl(baseUrl)
21+
.sseEndpoint(sseEndpoint)
22+
.messageEndpoint(messageEndpoint)
23+
.build();
2224
}
2325

2426
@Override

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/McpServerResourceFactory.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,15 @@ public McpServerFeatures.AsyncResourceSpecification create(Class<?> clazz, Metho
3838
final String name = StringHelper.defaultIfBlank(res.name(), method.getName());
3939
final String title = resolveComponentAttributeValue(res.title());
4040
final String description = resolveComponentAttributeValue(res.description());
41-
McpSchema.Annotations annotations =
42-
new McpSchema.Annotations(List.of(res.roles()), res.priority());
4341
McpSchema.Resource resource =
44-
new McpSchema.Resource(
45-
res.uri(), name, title, description, res.mimeType(), null, annotations);
42+
McpSchema.Resource.builder()
43+
.uri(res.uri())
44+
.name(name)
45+
.title(title)
46+
.description(description)
47+
.mimeType(res.mimeType())
48+
.annotations(new McpSchema.Annotations(List.of(res.roles()), res.priority()))
49+
.build();
4650
logger.debug("Registering resource: {}", JsonHelper.toJson(resource));
4751
return new McpServerFeatures.AsyncResourceSpecification(
4852
resource,

src/main/java/com/github/codeboyzhou/mcp/declarative/server/factory/McpServerToolFactory.java

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -59,25 +59,28 @@ public McpServerFeatures.AsyncToolSpecification create(Class<?> clazz, Method me
5959
.inputSchema(paramSchema)
6060
.build();
6161
logger.debug("Registering tool: {}", JsonHelper.toJson(tool));
62-
return new McpServerFeatures.AsyncToolSpecification(
63-
tool,
64-
(exchange, params) ->
65-
Mono.fromSupplier(
66-
() -> {
67-
Object result;
68-
boolean isError = false;
69-
try {
70-
Object instance = injector.getInstance(clazz);
71-
Map<String, Object> typedParameters = asTypedParameters(paramSchema, params);
72-
result = method.invoke(instance, typedParameters.values().toArray());
73-
} catch (Exception e) {
74-
logger.error("Error invoking tool method", e);
75-
result = e + ": " + e.getMessage();
76-
isError = true;
77-
}
78-
McpSchema.Content content = new McpSchema.TextContent(result.toString());
79-
return new McpSchema.CallToolResult(List.of(content), isError);
80-
}));
62+
return McpServerFeatures.AsyncToolSpecification.builder()
63+
.tool(tool)
64+
.callHandler(
65+
(exchange, request) ->
66+
Mono.fromSupplier(
67+
() -> {
68+
Object result;
69+
boolean isError = false;
70+
try {
71+
Object instance = injector.getInstance(clazz);
72+
Map<String, Object> args = request.arguments();
73+
Map<String, Object> typedArgs = asTypedParameters(paramSchema, args);
74+
result = method.invoke(instance, typedArgs.values().toArray());
75+
} catch (Exception e) {
76+
logger.error("Error invoking tool method", e);
77+
result = e + ": " + e.getMessage();
78+
isError = true;
79+
}
80+
McpSchema.Content content = new McpSchema.TextContent(result.toString());
81+
return new McpSchema.CallToolResult(List.of(content), isError);
82+
}))
83+
.build();
8184
}
8285

8386
@Override

0 commit comments

Comments
 (0)