Skip to content

Commit 4a213ec

Browse files
committed
feat(mcp): Add builder for CreateMessageRequest
- Implements a builder pattern for CreateMessageRequest - Updates corresponding tests to use the new builder syntax Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
1 parent 3e2139f commit 4a213ec

File tree

2 files changed

+76
-6
lines changed

2 files changed

+76
-6
lines changed

mcp/src/main/java/io/modelcontextprotocol/spec/McpSchema.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -799,6 +799,66 @@ public enum ContextInclusionStrategy {
799799
@JsonProperty("thisServer") THIS_SERVER,
800800
@JsonProperty("allServers") ALL_SERVERS
801801
}
802+
803+
public static Builder builder() {
804+
return new Builder();
805+
}
806+
807+
public static class Builder {
808+
private List<SamplingMessage> messages;
809+
private ModelPreferences modelPreferences;
810+
private String systemPrompt;
811+
private ContextInclusionStrategy includeContext;
812+
private Double temperature;
813+
private int maxTokens;
814+
private List<String> stopSequences;
815+
private Map<String, Object> metadata;
816+
817+
public Builder messages(List<SamplingMessage> messages) {
818+
this.messages = messages;
819+
return this;
820+
}
821+
822+
public Builder modelPreferences(ModelPreferences modelPreferences) {
823+
this.modelPreferences = modelPreferences;
824+
return this;
825+
}
826+
827+
public Builder systemPrompt(String systemPrompt) {
828+
this.systemPrompt = systemPrompt;
829+
return this;
830+
}
831+
832+
public Builder includeContext(ContextInclusionStrategy includeContext) {
833+
this.includeContext = includeContext;
834+
return this;
835+
}
836+
837+
public Builder temperature(Double temperature) {
838+
this.temperature = temperature;
839+
return this;
840+
}
841+
842+
public Builder maxTokens(int maxTokens) {
843+
this.maxTokens = maxTokens;
844+
return this;
845+
}
846+
847+
public Builder stopSequences(List<String> stopSequences) {
848+
this.stopSequences = stopSequences;
849+
return this;
850+
}
851+
852+
public Builder metadata(Map<String, Object> metadata) {
853+
this.metadata = metadata;
854+
return this;
855+
}
856+
857+
public CreateMessageRequest build() {
858+
return new CreateMessageRequest(messages, modelPreferences, systemPrompt,
859+
includeContext, temperature, maxTokens, stopSequences, metadata);
860+
}
861+
}
802862
}// @formatter:on
803863

804864
@JsonInclude(JsonInclude.Include.NON_ABSENT)

mcp/src/test/java/io/modelcontextprotocol/spec/McpSchemaTests.java

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -524,10 +524,16 @@ void testCreateMessageRequest() throws Exception {
524524
Map<String, Object> metadata = new HashMap<>();
525525
metadata.put("session", "test-session");
526526

527-
McpSchema.CreateMessageRequest request = new McpSchema.CreateMessageRequest(Collections.singletonList(message),
528-
preferences, "You are a helpful assistant",
529-
McpSchema.CreateMessageRequest.ContextInclusionStrategy.THIS_SERVER, 0.7, 1000,
530-
Arrays.asList("STOP", "END"), metadata);
527+
McpSchema.CreateMessageRequest request = McpSchema.CreateMessageRequest.builder()
528+
.messages(Collections.singletonList(message))
529+
.modelPreferences(preferences)
530+
.systemPrompt("You are a helpful assistant")
531+
.includeContext(McpSchema.CreateMessageRequest.ContextInclusionStrategy.THIS_SERVER)
532+
.temperature(0.7)
533+
.maxTokens(1000)
534+
.stopSequences(Arrays.asList("STOP", "END"))
535+
.metadata(metadata)
536+
.build();
531537

532538
String value = mapper.writeValueAsString(request);
533539

@@ -543,8 +549,12 @@ void testCreateMessageRequest() throws Exception {
543549
void testCreateMessageResult() throws Exception {
544550
McpSchema.TextContent content = new McpSchema.TextContent("Assistant response");
545551

546-
McpSchema.CreateMessageResult result = new McpSchema.CreateMessageResult(McpSchema.Role.ASSISTANT, content,
547-
"gpt-4", McpSchema.CreateMessageResult.StopReason.END_TURN);
552+
McpSchema.CreateMessageResult result = McpSchema.CreateMessageResult.builder()
553+
.role(McpSchema.Role.ASSISTANT)
554+
.content(content)
555+
.model("gpt-4")
556+
.stopReason(McpSchema.CreateMessageResult.StopReason.END_TURN)
557+
.build();
548558

549559
String value = mapper.writeValueAsString(result);
550560

0 commit comments

Comments
 (0)