feat: #697 adapted to Map<String, Object> input schema without unmars… · modelcontextprotocol/java-sdk@73daf65 · GitHub
Skip to content

Commit 73daf65

Browse files
committed
feat: #697 adapted to Map<String, Object> input schema without unmarshalling
1 parent e8bd7e8 commit 73daf65

4 files changed

Lines changed: 15 additions & 33 deletions

File tree

‎mcp-core/src/main/java/io/modelcontextprotocol/server/McpAsyncServer.java‎

Lines changed: 1 addition & 1 deletion

‎mcp-core/src/main/java/io/modelcontextprotocol/server/McpStatelessAsyncServer.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ private McpStatelessRequestHandler<CallToolResult> toolsCallRequestHandler() {
416416

417417
McpSchema.Tool tool = toolSpecification.get().tool();
418418
CallToolResult validationError = ToolInputValidator.validate(tool, callToolRequest.arguments(),
419-
this.validateToolInputs, this.jsonMapper, this.jsonSchemaValidator);
419+
this.validateToolInputs, this.jsonSchemaValidator);
420420
if (validationError != null) {
421421
return Mono.just(validationError);
422422
}

‎mcp-core/src/main/java/io/modelcontextprotocol/util/ToolInputValidator.java‎

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import java.util.List;
88
import java.util.Map;
99

10-
import io.modelcontextprotocol.json.McpJsonMapper;
11-
import io.modelcontextprotocol.json.TypeRef;
1210
import io.modelcontextprotocol.json.schema.JsonSchemaValidator;
1311
import io.modelcontextprotocol.spec.McpSchema;
1412
import io.modelcontextprotocol.spec.McpSchema.CallToolResult;
@@ -32,21 +30,17 @@ private ToolInputValidator() {
3230
* @param tool the tool definition containing the input schema
3331
* @param arguments the arguments to validate
3432
* @param validateToolInputs whether validation is enabled
35-
* @param jsonMapper the JSON mapper for schema conversion
3633
* @param validator the JSON schema validator (may be null)
3734
* @return CallToolResult with isError=true if validation fails, null if valid or
3835
* validation skipped
3936
*/
4037
public static CallToolResult validate(McpSchema.Tool tool, Map<String, Object> arguments,
41-
boolean validateToolInputs, McpJsonMapper jsonMapper, JsonSchemaValidator validator) {
38+
boolean validateToolInputs, JsonSchemaValidator validator) {
4239
if (!validateToolInputs || tool.inputSchema() == null || validator == null) {
4340
return null;
4441
}
45-
Map<String, Object> inputSchema = jsonMapper.convertValue(tool.inputSchema(),
46-
new TypeRef<Map<String, Object>>() {
47-
});
4842
Map<String, Object> args = arguments != null ? arguments : Map.of();
49-
var validation = validator.validate(inputSchema, args);
43+
var validation = validator.validate(tool.inputSchema(), args);
5044
if (!validation.valid()) {
5145
logger.warn("Tool '{}' input validation failed: {}", tool.name(), validation.errorMessage());
5246
return CallToolResult.builder()

‎mcp-core/src/test/java/io/modelcontextprotocol/util/ToolInputValidatorTests.java‎

Lines changed: 11 additions & 23 deletions

0 commit comments

Comments
 (0)