Skip to content

Commit b47834e

Browse files
Rename compiled MCP model packages to component and drop Compiled type prefixes so compile-time registrations align with how users think about tools, prompts, resources, and completions; move McpCompleteCompletion next to the other completion types.
Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 0069321 commit b47834e

29 files changed

Lines changed: 383 additions & 423 deletions

docs/components.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ Handlers must **return** `McpCompleteCompletion` and take **exactly one** parame
152152

153153
```java
154154
import com.github.thought2code.mcp.annotated.annotation.McpResourceCompletion;
155-
import com.github.thought2code.mcp.annotated.server.component.McpCompleteCompletion;
155+
import com.github.thought2code.mcp.annotated.component.completion.McpCompleteCompletion;
156156
import io.modelcontextprotocol.spec.McpSchema;
157157
import java.nio.file.Files;
158158
import java.nio.file.Path;
@@ -188,7 +188,7 @@ public class MyCompletions {
188188

189189
```java
190190
import com.github.thought2code.mcp.annotated.annotation.McpPromptCompletion;
191-
import com.github.thought2code.mcp.annotated.server.component.McpCompleteCompletion;
191+
import com.github.thought2code.mcp.annotated.component.completion.McpCompleteCompletion;
192192
import io.modelcontextprotocol.spec.McpSchema;
193193
import java.util.List;
194194

src/main/java/com/github/thought2code/mcp/annotated/McpApplicationContext.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@
1111
/**
1212
* Runtime context for one annotated MCP application.
1313
*
14-
* <p>In the build-time compiled architecture, this context no longer performs classpath scanning.
15-
* Instead, it centralizes runtime concerns that compiled invokers still need:
14+
* <p>In the build-time component architecture, this context no longer performs classpath scanning.
15+
* Instead, it centralizes runtime concerns that component invokers still need:
1616
*
1717
* <ul>
1818
* <li>Component instance lifecycle (lazy creation with one cached instance per component class)
19-
* <li>Scope filtering for compiled model definitions based on the resolved application base
19+
* <li>Scope filtering for component model definitions based on the resolved application base
2020
* package
2121
* </ul>
2222
*
@@ -69,12 +69,12 @@ public Object getComponentInstance(Class<?> componentClass) {
6969
}
7070

7171
/**
72-
* Returns whether a compiled source method belongs to this application's base package scope.
72+
* Returns whether a component source method belongs to this application's base package scope.
7373
*
74-
* <p>This method is used while loading compiled definitions to prevent out-of-scope components
74+
* <p>This method is used while loading component definitions to prevent out-of-scope components
7575
* from being registered (for example, fixtures from other test packages or neighboring modules).
7676
*
77-
* @param sourceMethod compiled source method descriptor in the form {@code fqcn#method(...)}
77+
* @param sourceMethod component source method descriptor in the form {@code fqcn#method(...)}
7878
* @return {@code true} when the source method declaring class is within the configured base
7979
* package
8080
*/
@@ -97,7 +97,7 @@ public boolean isInScope(String sourceMethod) {
9797
}
9898

9999
/**
100-
* Resolves the base package used for compiled-definition scope filtering.
100+
* Resolves the base package used for component-definition scope filtering.
101101
*
102102
* <p>Resolution priority:
103103
*

src/main/java/com/github/thought2code/mcp/annotated/annotation/McpPromptCompletion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.thought2code.mcp.annotated.annotation;
22

3-
import com.github.thought2code.mcp.annotated.server.component.McpCompleteCompletion;
3+
import com.github.thought2code.mcp.annotated.component.completion.McpCompleteCompletion;
44
import com.github.thought2code.mcp.annotated.util.StringHelper;
55
import java.lang.annotation.ElementType;
66
import java.lang.annotation.Retention;

src/main/java/com/github/thought2code/mcp/annotated/annotation/McpResourceCompletion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.thought2code.mcp.annotated.annotation;
22

3-
import com.github.thought2code.mcp.annotated.server.component.McpCompleteCompletion;
3+
import com.github.thought2code.mcp.annotated.component.completion.McpCompleteCompletion;
44
import java.lang.annotation.ElementType;
55
import java.lang.annotation.Retention;
66
import java.lang.annotation.RetentionPolicy;

src/main/java/com/github/thought2code/mcp/annotated/compiled/prompt/CompiledPromptDefinition.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

src/main/java/com/github/thought2code/mcp/annotated/compiled/resource/CompiledResourceDefinition.java

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/main/java/com/github/thought2code/mcp/annotated/compiled/spi/McpCompiledModelProvider.java

Lines changed: 0 additions & 50 deletions
This file was deleted.

src/main/java/com/github/thought2code/mcp/annotated/compiled/tool/CompiledToolDefinition.java

Lines changed: 0 additions & 14 deletions
This file was deleted.

src/main/java/com/github/thought2code/mcp/annotated/compiler/McpToolModelProcessor.java

Lines changed: 32 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import com.github.thought2code.mcp.annotated.annotation.McpResourceCompletion;
1010
import com.github.thought2code.mcp.annotated.annotation.McpTool;
1111
import com.github.thought2code.mcp.annotated.annotation.McpToolParam;
12-
import com.github.thought2code.mcp.annotated.server.component.McpCompleteCompletion;
12+
import com.github.thought2code.mcp.annotated.component.completion.McpCompleteCompletion;
1313
import com.github.thought2code.mcp.annotated.util.StringHelper;
1414
import java.io.IOException;
1515
import java.io.Writer;
@@ -59,7 +59,7 @@ public final class McpToolModelProcessor extends AbstractProcessor {
5959

6060
private static final String GENERATED_PACKAGE = "com.github.thought2code.mcp.annotated.generated";
6161
private static final String PROVIDER_INTERFACE =
62-
"com.github.thought2code.mcp.annotated.compiled.spi.McpCompiledModelProvider";
62+
"com.github.thought2code.mcp.annotated.component.spi.ComponentModelProvider";
6363
private static final String PROVIDER_SERVICE_FILE = "META-INF/services/" + PROVIDER_INTERFACE;
6464

6565
private final List<ExecutableElement> tools = new ArrayList<>();
@@ -348,23 +348,21 @@ private void writeProvider() throws IOException {
348348
writer.write("package " + GENERATED_PACKAGE + ";\n\n");
349349
writer.write("import com.github.thought2code.mcp.annotated.McpApplicationContext;\n");
350350
writer.write(
351-
"import com.github.thought2code.mcp.annotated.compiled.completion.CompiledCompletionDefinition;\n");
351+
"import com.github.thought2code.mcp.annotated.component.completion.CompletionDefinition;\n");
352352
writer.write(
353-
"import com.github.thought2code.mcp.annotated.compiled.completion.CompiledCompletionInvoker;\n");
353+
"import com.github.thought2code.mcp.annotated.component.completion.CompletionInvoker;\n");
354354
writer.write(
355-
"import com.github.thought2code.mcp.annotated.compiled.prompt.CompiledPromptDefinition;\n");
355+
"import com.github.thought2code.mcp.annotated.component.prompt.PromptDefinition;\n");
356356
writer.write(
357-
"import com.github.thought2code.mcp.annotated.compiled.prompt.CompiledPromptInvoker;\n");
357+
"import com.github.thought2code.mcp.annotated.component.prompt.PromptInvoker;\n");
358358
writer.write(
359-
"import com.github.thought2code.mcp.annotated.compiled.resource.CompiledResourceDefinition;\n");
359+
"import com.github.thought2code.mcp.annotated.component.resource.ResourceDefinition;\n");
360360
writer.write(
361-
"import com.github.thought2code.mcp.annotated.compiled.resource.CompiledResourceInvoker;\n");
361+
"import com.github.thought2code.mcp.annotated.component.resource.ResourceInvoker;\n");
362362
writer.write(
363-
"import com.github.thought2code.mcp.annotated.compiled.spi.McpCompiledModelProvider;\n");
364-
writer.write(
365-
"import com.github.thought2code.mcp.annotated.compiled.tool.CompiledToolDefinition;\n");
366-
writer.write(
367-
"import com.github.thought2code.mcp.annotated.compiled.tool.CompiledToolInvoker;\n");
363+
"import com.github.thought2code.mcp.annotated.component.spi.ComponentModelProvider;\n");
364+
writer.write("import com.github.thought2code.mcp.annotated.component.tool.ToolDefinition;\n");
365+
writer.write("import com.github.thought2code.mcp.annotated.component.tool.ToolInvoker;\n");
368366
writer.write("import com.github.thought2code.mcp.annotated.enums.McpServerError;\n");
369367
writer.write("import com.github.thought2code.mcp.annotated.reflect.Invocation;\n");
370368
writer.write("import com.github.thought2code.mcp.annotated.util.TypeConverter;\n");
@@ -374,12 +372,11 @@ private void writeProvider() throws IOException {
374372
writer.write("import java.util.LinkedHashMap;\n");
375373
writer.write("import java.util.List;\n");
376374
writer.write("import java.util.Map;\n\n");
377-
writer.write(
378-
"public final class " + className + " implements McpCompiledModelProvider {\n\n");
375+
writer.write("public final class " + className + " implements ComponentModelProvider {\n\n");
379376

380377
writer.write(" @Override\n");
381-
writer.write(" public List<CompiledToolDefinition> tools() {\n");
382-
writer.write(" List<CompiledToolDefinition> definitions = new ArrayList<>();\n");
378+
writer.write(" public List<ToolDefinition> tools() {\n");
379+
writer.write(" List<ToolDefinition> definitions = new ArrayList<>();\n");
383380
for (int i = 0; i < sortedTools.size(); i++) {
384381
ExecutableElement method = sortedTools.get(i);
385382
writer.write(" definitions.add(toolDefinition" + i + "());\n");
@@ -388,26 +385,26 @@ private void writeProvider() throws IOException {
388385
writer.write(" }\n\n");
389386

390387
writer.write(" @Override\n");
391-
writer.write(" public List<CompiledResourceDefinition> resources() {\n");
392-
writer.write(" List<CompiledResourceDefinition> definitions = new ArrayList<>();\n");
388+
writer.write(" public List<ResourceDefinition> resources() {\n");
389+
writer.write(" List<ResourceDefinition> definitions = new ArrayList<>();\n");
393390
for (int i = 0; i < sortedResources.size(); i++) {
394391
writer.write(" definitions.add(resourceDefinition" + i + "());\n");
395392
}
396393
writer.write(" return definitions;\n");
397394
writer.write(" }\n\n");
398395

399396
writer.write(" @Override\n");
400-
writer.write(" public List<CompiledCompletionDefinition> completions() {\n");
401-
writer.write(" List<CompiledCompletionDefinition> definitions = new ArrayList<>();\n");
397+
writer.write(" public List<CompletionDefinition> completions() {\n");
398+
writer.write(" List<CompletionDefinition> definitions = new ArrayList<>();\n");
402399
for (int i = 0; i < sortedCompletions.size(); i++) {
403400
writer.write(" definitions.add(completionDefinition" + i + "());\n");
404401
}
405402
writer.write(" return definitions;\n");
406403
writer.write(" }\n\n");
407404

408405
writer.write(" @Override\n");
409-
writer.write(" public List<CompiledPromptDefinition> prompts() {\n");
410-
writer.write(" List<CompiledPromptDefinition> definitions = new ArrayList<>();\n");
406+
writer.write(" public List<PromptDefinition> prompts() {\n");
407+
writer.write(" List<PromptDefinition> definitions = new ArrayList<>();\n");
411408
for (int i = 0; i < sortedPrompts.size(); i++) {
412409
writer.write(" definitions.add(promptDefinition" + i + "());\n");
413410
}
@@ -473,7 +470,7 @@ private void writeToolDefinitionMethod(Writer writer, ExecutableElement method,
473470
String title = toolTitle(method);
474471
String description = toolDescription(method);
475472

476-
writer.write(" private static CompiledToolDefinition toolDefinition" + index + "() {\n");
473+
writer.write(" private static ToolDefinition toolDefinition" + index + "() {\n");
477474
writer.write(" Map<String, Object> inputSchema = inputSchema" + index + "();\n");
478475
writer.write(" Map<String, Object> outputSchema = outputSchema" + index + "();\n");
479476
writer.write(
@@ -485,7 +482,7 @@ private void writeToolDefinitionMethod(Writer writer, ExecutableElement method,
485482
writer.write(" .outputSchema(outputSchema)\n");
486483
writer.write(" .build();\n");
487484
writer.write(
488-
" return new CompiledToolDefinition(\""
485+
" return new ToolDefinition(\""
489486
+ escape(sourceMethod)
490487
+ "\", tool, new Invoker"
491488
+ index
@@ -578,8 +575,7 @@ private void writeInvoker(Writer writer, ExecutableElement method, int index) th
578575
String ownerType = owner.getQualifiedName().toString();
579576
boolean returnsVoid = method.getReturnType().getKind() == TypeKind.VOID;
580577

581-
writer.write(
582-
" private static final class Invoker" + index + " implements CompiledToolInvoker {\n");
578+
writer.write(" private static final class Invoker" + index + " implements ToolInvoker {\n");
583579
writer.write(" @Override\n");
584580
writer.write(
585581
" public Invocation invoke(McpApplicationContext context, Map<String, Object> arguments) {\n");
@@ -656,7 +652,7 @@ private void writePromptDefinitionMethod(Writer writer, ExecutableElement method
656652
String title = promptTitle(method);
657653
String description = promptDescription(method);
658654

659-
writer.write(" private static CompiledPromptDefinition promptDefinition" + index + "() {\n");
655+
writer.write(" private static PromptDefinition promptDefinition" + index + "() {\n");
660656
writer.write(" List<McpSchema.PromptArgument> args = new ArrayList<>();\n");
661657
for (VariableElement parameter : method.getParameters()) {
662658
McpPromptParam promptParam = parameter.getAnnotation(McpPromptParam.class);
@@ -695,7 +691,7 @@ private void writePromptDefinitionMethod(Writer writer, ExecutableElement method
695691
+ " .arguments(args)\n"
696692
+ " .build();\n");
697693
writer.write(
698-
" return new CompiledPromptDefinition(\""
694+
" return new PromptDefinition(\""
699695
+ escape(sourceMethod)
700696
+ "\", prompt, \""
701697
+ escape(description)
@@ -712,9 +708,7 @@ private void writePromptInvoker(Writer writer, ExecutableElement method, int ind
712708
boolean returnsVoid = method.getReturnType().getKind() == TypeKind.VOID;
713709

714710
writer.write(
715-
" private static final class PromptInvoker"
716-
+ index
717-
+ " implements CompiledPromptInvoker {\n");
711+
" private static final class PromptInvoker" + index + " implements PromptInvoker {\n");
718712
writer.write(" @Override\n");
719713
writer.write(
720714
" public Invocation invoke(McpApplicationContext context, Map<String, Object> arguments) {\n");
@@ -795,8 +789,7 @@ private void writeResourceDefinitionMethod(Writer writer, ExecutableElement meth
795789
String rolesLiteral = resourceRolesLiteral(method);
796790
double priority = resourcePriority(method);
797791

798-
writer.write(
799-
" private static CompiledResourceDefinition resourceDefinition" + index + "() {\n");
792+
writer.write(" private static ResourceDefinition resourceDefinition" + index + "() {\n");
800793
writer.write(
801794
" McpSchema.Resource resource = McpSchema.Resource.builder(\""
802795
+ escape(uri)
@@ -814,7 +807,7 @@ private void writeResourceDefinitionMethod(Writer writer, ExecutableElement meth
814807
+ ").build())\n");
815808
writer.write(" .build();\n");
816809
writer.write(
817-
" return new CompiledResourceDefinition(\""
810+
" return new ResourceDefinition(\""
818811
+ escape(sourceMethod)
819812
+ "\", resource, new ResourceInvoker"
820813
+ index
@@ -829,9 +822,7 @@ private void writeResourceInvoker(Writer writer, ExecutableElement method, int i
829822
boolean returnsVoid = method.getReturnType().getKind() == TypeKind.VOID;
830823

831824
writer.write(
832-
" private static final class ResourceInvoker"
833-
+ index
834-
+ " implements CompiledResourceInvoker {\n");
825+
" private static final class ResourceInvoker" + index + " implements ResourceInvoker {\n");
835826
writer.write(" @Override\n");
836827
writer.write(" public Invocation invoke(McpApplicationContext context) {\n");
837828
writer.write(" try {\n");
@@ -865,8 +856,7 @@ private void writeResourceInvoker(Writer writer, ExecutableElement method, int i
865856
private void writeCompletionDefinitionMethod(Writer writer, ExecutableElement method, int index)
866857
throws IOException {
867858
String sourceMethod = sourceMethod(method);
868-
writer.write(
869-
" private static CompiledCompletionDefinition completionDefinition" + index + "() {\n");
859+
writer.write(" private static CompletionDefinition completionDefinition" + index + "() {\n");
870860
if (method.getAnnotation(McpPromptCompletion.class) != null) {
871861
McpPromptCompletion annotation = method.getAnnotation(McpPromptCompletion.class);
872862
writer.write(
@@ -885,7 +875,7 @@ private void writeCompletionDefinitionMethod(Writer writer, ExecutableElement me
885875
+ "\");\n");
886876
}
887877
writer.write(
888-
" return new CompiledCompletionDefinition(\""
878+
" return new CompletionDefinition(\""
889879
+ escape(sourceMethod)
890880
+ "\", reference, new CompletionInvoker"
891881
+ index
@@ -901,7 +891,7 @@ private void writeCompletionInvoker(Writer writer, ExecutableElement method, int
901891
writer.write(
902892
" private static final class CompletionInvoker"
903893
+ index
904-
+ " implements CompiledCompletionInvoker {\n");
894+
+ " implements CompletionInvoker {\n");
905895
writer.write(" @Override\n");
906896
writer.write(
907897
" public Invocation invoke(McpApplicationContext context, McpSchema.CompleteRequest.CompleteArgument argument) {\n");

0 commit comments

Comments
 (0)