feat(mcp): Add builder for CreateMessageRequest (#60)
- Implements a builder pattern for CreateMessageRequest - Updates corresponding tests to use the new builder syntax - Add ModelPreferences builder and ModelHint helper - Use builder pattern for CreateMessageRequest in integration tests Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
This commit is contained in:
parent
3e2139fa27
commit
33329bfabb
2 changed files with 163 additions and 32 deletions
|
|
@ -21,6 +21,7 @@ import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities;
|
|||
import io.modelcontextprotocol.spec.McpSchema.CreateMessageRequest;
|
||||
import io.modelcontextprotocol.spec.McpSchema.CreateMessageResult;
|
||||
import io.modelcontextprotocol.spec.McpSchema.InitializeResult;
|
||||
import io.modelcontextprotocol.spec.McpSchema.ModelPreferences;
|
||||
import io.modelcontextprotocol.spec.McpSchema.Role;
|
||||
import io.modelcontextprotocol.spec.McpSchema.Root;
|
||||
import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities;
|
||||
|
|
@ -162,13 +163,16 @@ public class HttpServletSseServerTransportProviderIntegrationTests {
|
|||
McpServerFeatures.AsyncToolSpecification tool = new McpServerFeatures.AsyncToolSpecification(
|
||||
new McpSchema.Tool("tool1", "tool1 description", emptyJsonSchema), (exchange, request) -> {
|
||||
|
||||
var messages = List.of(new McpSchema.SamplingMessage(McpSchema.Role.USER,
|
||||
new McpSchema.TextContent("Test message")));
|
||||
var modelPrefs = new McpSchema.ModelPreferences(List.of(), 1.0, 1.0, 1.0);
|
||||
|
||||
var craeteMessageRequest = new McpSchema.CreateMessageRequest(messages, modelPrefs, null,
|
||||
McpSchema.CreateMessageRequest.ContextInclusionStrategy.NONE, null, 100, List.of(),
|
||||
Map.of());
|
||||
var craeteMessageRequest = McpSchema.CreateMessageRequest.builder()
|
||||
.messages(List.of(new McpSchema.SamplingMessage(McpSchema.Role.USER,
|
||||
new McpSchema.TextContent("Test message"))))
|
||||
.modelPreferences(ModelPreferences.builder()
|
||||
.hints(List.of())
|
||||
.costPriority(1.0)
|
||||
.speedPriority(1.0)
|
||||
.intelligencePriority(1.0)
|
||||
.build())
|
||||
.build();
|
||||
|
||||
StepVerifier.create(exchange.createMessage(craeteMessageRequest)).consumeNextWith(result -> {
|
||||
assertThat(result).isNotNull();
|
||||
|
|
|
|||
|
|
@ -524,10 +524,16 @@ public class McpSchemaTests {
|
|||
Map<String, Object> metadata = new HashMap<>();
|
||||
metadata.put("session", "test-session");
|
||||
|
||||
McpSchema.CreateMessageRequest request = new McpSchema.CreateMessageRequest(Collections.singletonList(message),
|
||||
preferences, "You are a helpful assistant",
|
||||
McpSchema.CreateMessageRequest.ContextInclusionStrategy.THIS_SERVER, 0.7, 1000,
|
||||
Arrays.asList("STOP", "END"), metadata);
|
||||
McpSchema.CreateMessageRequest request = McpSchema.CreateMessageRequest.builder()
|
||||
.messages(Collections.singletonList(message))
|
||||
.modelPreferences(preferences)
|
||||
.systemPrompt("You are a helpful assistant")
|
||||
.includeContext(McpSchema.CreateMessageRequest.ContextInclusionStrategy.THIS_SERVER)
|
||||
.temperature(0.7)
|
||||
.maxTokens(1000)
|
||||
.stopSequences(Arrays.asList("STOP", "END"))
|
||||
.metadata(metadata)
|
||||
.build();
|
||||
|
||||
String value = mapper.writeValueAsString(request);
|
||||
|
||||
|
|
@ -543,8 +549,12 @@ public class McpSchemaTests {
|
|||
void testCreateMessageResult() throws Exception {
|
||||
McpSchema.TextContent content = new McpSchema.TextContent("Assistant response");
|
||||
|
||||
McpSchema.CreateMessageResult result = new McpSchema.CreateMessageResult(McpSchema.Role.ASSISTANT, content,
|
||||
"gpt-4", McpSchema.CreateMessageResult.StopReason.END_TURN);
|
||||
McpSchema.CreateMessageResult result = McpSchema.CreateMessageResult.builder()
|
||||
.role(McpSchema.Role.ASSISTANT)
|
||||
.content(content)
|
||||
.model("gpt-4")
|
||||
.stopReason(McpSchema.CreateMessageResult.StopReason.END_TURN)
|
||||
.build();
|
||||
|
||||
String value = mapper.writeValueAsString(result);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue