Skip to content

Commit 95110ea

Browse files
refactor: migrate to MCP SDK 2.0 builder APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent b46f7c3 commit 95110ea

5 files changed

Lines changed: 38 additions & 21 deletions

File tree

src/main/java/com/github/thought2code/mcp/annotated/server/component/McpServerCompletion.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -213,13 +213,13 @@ private static McpSchema.CompleteReference createCompleteReference(Method method
213213
if (prompt != null) {
214214
final String name = prompt.name();
215215
final String title = prompt.title();
216-
return new McpSchema.PromptReference(McpSchema.PromptReference.TYPE, name, title);
216+
return McpSchema.PromptReference.builder(name).title(title).build();
217217
}
218218

219219
McpResourceCompletion resource = method.getAnnotation(McpResourceCompletion.class);
220220
if (resource != null) {
221221
final String uri = resource.uri();
222-
return new McpSchema.ResourceReference(McpSchema.ResourceReference.TYPE, uri);
222+
return new McpSchema.ResourceReference(uri);
223223
}
224224

225225
// should never happen

src/main/java/com/github/thought2code/mcp/annotated/server/component/McpServerPrompt.java

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,10 +175,12 @@ private McpSchema.GetPromptResult invoke(
175175
List<Object> params = parameterConverter.convertAll(parameters, arguments);
176176
Invocation invocation = MethodInvoker.invoke(instance, method, metadata, params);
177177

178-
McpSchema.Content content = new McpSchema.TextContent(invocation.result().toString());
179-
McpSchema.PromptMessage message = new McpSchema.PromptMessage(McpSchema.Role.USER, content);
178+
McpSchema.Content content =
179+
McpSchema.TextContent.builder(invocation.result().toString()).build();
180+
McpSchema.PromptMessage message =
181+
McpSchema.PromptMessage.builder(McpSchema.Role.USER, content).build();
180182
McpSchema.GetPromptResult getPromptResult =
181-
new McpSchema.GetPromptResult(description, List.of(message));
183+
McpSchema.GetPromptResult.builder(List.of(message)).description(description).build();
182184

183185
log.debug("Returning MCP GetPromptResult: {}", JacksonHelper.toJsonString(getPromptResult));
184186

@@ -208,7 +210,13 @@ private List<McpSchema.PromptArgument> createPromptArguments(
208210
final String title = context.getLocalizedString(promptParam.title(), name);
209211
final String description = context.getLocalizedString(promptParam.description(), name);
210212
final boolean required = promptParam.required();
211-
promptArguments.add(new McpSchema.PromptArgument(name, title, description, required));
213+
McpSchema.PromptArgument argument =
214+
McpSchema.PromptArgument.builder(name)
215+
.title(title)
216+
.description(description)
217+
.required(required)
218+
.build();
219+
promptArguments.add(argument);
212220
}
213221
}
214222

@@ -230,7 +238,12 @@ private PromptDefinition createPromptDefinition(
230238
final String title = context.getLocalizedString(mcpPrompt.title(), name);
231239
final String description = context.getLocalizedString(mcpPrompt.description(), name);
232240
List<McpSchema.PromptArgument> args = createPromptArguments(context, method.getParameters());
233-
McpSchema.Prompt prompt = new McpSchema.Prompt(name, title, description, args);
241+
McpSchema.Prompt prompt =
242+
McpSchema.Prompt.builder(name)
243+
.title(title)
244+
.description(description)
245+
.arguments(args)
246+
.build();
234247
log.info(
235248
"{} prompt specification created: {}",
236249
serverType.description(),

src/main/java/com/github/thought2code/mcp/annotated/server/component/McpServerResource.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,9 +158,10 @@ private McpSchema.ReadResourceResult invoke(
158158
final String uri = resource.uri();
159159
final String mimeType = resource.mimeType();
160160
final String text = invocation.result().toString();
161-
McpSchema.ResourceContents contents = new McpSchema.TextResourceContents(uri, mimeType, text);
161+
McpSchema.ResourceContents contents =
162+
McpSchema.TextResourceContents.builder(uri, text).mimeType(mimeType).build();
162163
McpSchema.ReadResourceResult readResourceResult =
163-
new McpSchema.ReadResourceResult(List.of(contents));
164+
McpSchema.ReadResourceResult.builder(List.of(contents)).build();
164165

165166
log.debug("Returning ReadResourceResult: {}", JacksonHelper.toJsonString(readResourceResult));
166167

@@ -182,14 +183,15 @@ private ResourceDefinition createResourceDefinition(
182183
final String title = context.getLocalizedString(mcpResource.title(), name);
183184
final String description = context.getLocalizedString(mcpResource.description(), name);
184185
McpSchema.Resource resource =
185-
McpSchema.Resource.builder()
186-
.uri(mcpResource.uri())
187-
.name(name)
186+
McpSchema.Resource.builder(mcpResource.uri(), name)
188187
.title(title)
189188
.description(description)
190189
.mimeType(mcpResource.mimeType())
191190
.annotations(
192-
new McpSchema.Annotations(List.of(mcpResource.roles()), mcpResource.priority()))
191+
McpSchema.Annotations.builder()
192+
.audience(List.of(mcpResource.roles()))
193+
.priority(mcpResource.priority())
194+
.build())
193195
.build();
194196
log.info(
195197
"{} resource specification created: {}",

src/main/java/com/github/thought2code/mcp/annotated/server/component/McpServerTool.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ private McpSchema.CallToolResult invoke(
197197

198198
McpSchema.CallToolResult callToolResult =
199199
McpSchema.CallToolResult.builder()
200-
.content(List.of(new McpSchema.TextContent(textContent)))
200+
.addTextContent(textContent)
201201
.structuredContent(structuredContent)
202202
.isError(invocation.isError())
203203
.build();
@@ -332,11 +332,9 @@ private ToolDefinition createToolDefinition(
332332
Map<String, Object> inputSchema = createJsonSchema(context, method.getParameters());
333333
Map<String, Object> outputSchema = createJsonSchemaDefinition(context, method.getReturnType());
334334
McpSchema.Tool tool =
335-
McpSchema.Tool.builder()
336-
.name(name)
335+
McpSchema.Tool.builder(name, inputSchema)
337336
.title(title)
338337
.description(description)
339-
.inputSchema(inputSchema)
340338
.outputSchema(outputSchema)
341339
.build();
342340
log.info(

src/test/java/com/github/thought2code/mcp/annotated/McpApplicationTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,8 @@ private void verifyResourcesCalled(McpSyncClient client) {
246246
private void verifyResourceCalled(
247247
McpSyncClient client, String resourceUri, String resourceMimeType, String resourceContent) {
248248

249-
McpSchema.ReadResourceRequest request = new McpSchema.ReadResourceRequest(resourceUri);
249+
McpSchema.ReadResourceRequest request =
250+
McpSchema.ReadResourceRequest.builder(resourceUri).build();
250251
McpSchema.ReadResourceResult result = client.readResource(request);
251252
McpSchema.TextResourceContents content =
252253
(McpSchema.TextResourceContents) result.contents().get(0);
@@ -352,7 +353,8 @@ private void verifyPromptsCalled(McpSyncClient client) {
352353
private void verifyPromptCalled(
353354
McpSyncClient client, String promptName, Map<String, Object> params, String expectedResult) {
354355

355-
McpSchema.GetPromptRequest request = new McpSchema.GetPromptRequest(promptName, params);
356+
McpSchema.GetPromptRequest request =
357+
McpSchema.GetPromptRequest.builder(promptName).arguments(params).build();
356358
McpSchema.GetPromptResult result = client.getPrompt(request);
357359
McpSchema.TextContent content = (McpSchema.TextContent) result.messages().get(0).content();
358360
assertEquals(expectedResult, content.text());
@@ -608,7 +610,8 @@ private void verifyToolsCalled(McpSyncClient client) {
608610
private void verifyToolCalled(
609611
McpSyncClient client, String toolName, Map<String, Object> args, String expectedResult) {
610612

611-
McpSchema.CallToolRequest request = new McpSchema.CallToolRequest(toolName, args);
613+
McpSchema.CallToolRequest request =
614+
McpSchema.CallToolRequest.builder(toolName).arguments(args).build();
612615
McpSchema.CallToolResult result = client.callTool(request);
613616
McpSchema.TextContent content = (McpSchema.TextContent) result.content().get(0);
614617
assertFalse(result.isError());
@@ -621,7 +624,8 @@ private void verifyToolCalled(
621624

622625
private void verifyToolCalledError(
623626
McpSyncClient client, String toolName, Map<String, Object> args, String expectedResult) {
624-
McpSchema.CallToolRequest request = new McpSchema.CallToolRequest(toolName, args);
627+
McpSchema.CallToolRequest request =
628+
McpSchema.CallToolRequest.builder(toolName).arguments(args).build();
625629
McpSchema.CallToolResult result = client.callTool(request);
626630
McpSchema.TextContent content = (McpSchema.TextContent) result.content().get(0);
627631
assertTrue(result.isError());

0 commit comments

Comments
 (0)