Mirror of https://github.com/modelcontextprotocol/java-sdk — The official Java SDK for Model Context Protocol servers and clients. Maintained in collaboration with Spring AI
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Christian Tzolov d8959ef854
fix: support valid JSON value in tool structured content output (#551)
- Change CallToolResult.structuredContent type from Map<String,Object> to Object
  to support both objects and arrays
- Update JsonSchemaValidator to validate any Object type, not just Maps
- Add test cases for array-type structured output validation
- Fix type casting in existing tests to handle the more generic Object type
- Deprecate CallToolResult constructors in favor of builder pattern
- Update server implementations to use CallToolResult builder

This allows tools to return arrays as structured content, not just objects,
which is required by the MCP specification for tools with array-type output schemas.

It is realated to MPC spec fix: https://github.com/modelcontextprotocol/modelcontextprotocol/issues/834

Fixes #550

BREAKING CHANGE!

Migration Guide:
----------------
1. If you're accessing CallToolResult.structuredContent():
   - Add explicit casting when you know it's a Map:
     Before: result.structuredContent().get("key")
     After:  ((Map<String,Object>) result.structuredContent()).get("key")

   - Or check the type first:
     if (result.structuredContent() instanceof Map) {
         Map<String,Object> map = (Map<String,Object>) result.structuredContent();
         // use map
     } else if (result.structuredContent() instanceof List) {
         List<?> list = (List<?>) result.structuredContent();
         // use list
     }

2. If you're creating CallToolResult instances:
   - Switch to using the builder pattern:
     Before: new CallToolResult(content, isError, structuredContent)
     After:  CallToolResult.builder()
               .content(content)
               .isError(isError)
               .structuredContent(structuredContent)
               .build()

3. If you're implementing JsonSchemaValidator:
   - Update your validate() method signature:
     Before: validate(Map<String,Object> schema, Map<String,Object> structuredContent)
     After:  validate(Map<String,Object> schema, Object structuredContent)

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-09-15 14:22:06 +02:00
.github Add CI GitHub Action and rename snapshot publish workflow 2025-03-18 13:37:49 +01:00
.mvn/wrapper initial 2024-12-06 16:41:17 +01:00
mcp fix: support valid JSON value in tool structured content output (#551) 2025-09-15 14:22:06 +02:00
mcp-bom Next development version 2025-09-04 22:33:14 +02:00
mcp-spring Next development version 2025-09-04 22:33:14 +02:00
mcp-test fix: support valid JSON value in tool structured content output (#551) 2025-09-15 14:22:06 +02:00
.gitattributes initial 2024-12-06 16:41:17 +01:00
.gitignore Rename modules, update .gitignore 2024-12-10 18:46:49 -05:00
CODE_OF_CONDUCT.md Add Contributing Guidelines and Code of Conduct 2025-05-16 11:47:39 +02:00
CONTRIBUTING.md Add note about force pushes 2025-05-16 11:47:39 +02:00
LICENSE Update license text and GH actions 2025-01-28 14:36:31 +01:00
migration-0.8.0.md refactor: introduce session-based architecture for MCP server (#31) 2025-03-20 21:49:51 +01:00
mvnw initial 2024-12-06 16:41:17 +01:00
mvnw.cmd initial 2024-12-06 16:41:17 +01:00
pom.xml Next development version 2025-09-04 22:33:14 +02:00
README.md Enhance README with project badges 2025-09-08 15:30:51 +02:00
SECURITY.md Add Contributing Guidelines and Code of Conduct 2025-05-16 11:47:39 +02:00

MCP Java SDK

License Build Status Maven Central Java Version

A set of projects that provide Java SDK integration for the Model Context Protocol. This SDK enables Java applications to interact with AI models and tools through a standardized interface, supporting both synchronous and asynchronous communication patterns.

📚 Reference Documentation

MCP Java SDK documentation

For comprehensive guides and SDK API documentation

Spring AI MCP documentation

Spring AI MCP extends the MCP Java SDK with Spring Boot integration, providing both client and server starters. Bootstrap your AI applications with MCP support using Spring Initializer.

Development

Building from Source

./mvnw clean install -DskipTests

Running Tests

To run the tests you have to pre-install Docker and npx.

./mvnw test

Contributing

Contributions are welcome! Please follow the Contributing Guidelines.

Team

  • Christian Tzolov
  • Dariusz Jędrzejczyk

License

This project is licensed under the MIT License.