Commit graph java-sdk/mcp-core
Author SHA1 Message Date
Daniel Garnier-Moiroux
6da42622db DefaultSseMessageEndpointValidator allows same-origin message endpoints
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-05-04 15:28:17 +02:00
Daniel Garnier-Moiroux
8a5a2c1019 Validate message endpoint in SSE client transport
- Backport #943

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-04-30 17:59:34 +02:00
Daniel Garnier-Moiroux
b6718fd17a Next development version
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-03-27 20:57:07 +01:00
Daniel Garnier-Moiroux
d187d09dd5 Release version 1.0.1
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-03-27 20:56:02 +01:00
Daniel Garnier-Moiroux
007604a870
Merge commit from fork 2026-03-27 18:19:47 +00:00
조형준
5b9c2fb414
Use explicit UTF-8 charset in StdioServerTransportProvider (#826)
Also add a test simulating a different locale in an isolated process.

Resolves #295
2026-03-02 17:00:06 +01:00
Christian Tzolov
9d34216162 Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-02-23 10:17:15 +01:00
Christian Tzolov
3c87155b9a Release version 1.0.0
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-02-23 10:16:53 +01:00
Christian Tzolov
7e08a8e63f Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-02-20 22:04:21 +01:00
Christian Tzolov
479e52e6d5 Release version 1.0.0-RC3
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-02-20 22:03:40 +01:00
Christian Tzolov
acb7e4d2a0 Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-02-20 21:41:35 +01:00
Christian Tzolov
11b597cd77 Release version 1.0.0-RC2
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-02-20 21:37:56 +01:00
Dariusz Jędrzejczyk
4c1c3d8d5c
Remove deprecated APIs and modules for 1.0.0 release (#807)
- Remove mcp-json-jackson module (JacksonMcpJsonMapper, DefaultJsonSchemaValidator)
- Remove deprecated session interfaces (McpServerSession, McpClientSession methods)
- Remove deprecated server methods (loggingNotification, McpAsyncServerExchange constructor)
- Remove deprecated schema definitions and constructors (McpSchema, McpError, tool/content classes)
- Replace generic McpError with appropriate exception types (IllegalStateException, IllegalArgumentException)
- Update all tests to use current APIs

---------

Signed-off-by: Dariusz Jędrzejczyk <dariusz.jedrzejczyk@broadcom.com>
2026-02-20 17:32:40 +01:00
Scott Lewis
159eb964cc Fix and simplification for osgi manifest.mf
contents generation.
2026-02-18 17:18:11 +01:00
Christian Tzolov
3ab829285d Bump version from 0.18.0-SNAPSHOT to 1.0.0-SNAPSHOT
Update project version across all POM files, documentation, and CI
workflow to prepare for the 1.0.x release

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-02-18 12:45:20 +01:00
Sébastien Deleuze
e60a0743a5
Refine McpJsonDefaults method names (#789)
As a follow-up of #779, this commit refines McpJsonDefaults
method names by shortening them to not repeat the qualifiers
already expressed at type level.
2026-02-13 16:54:01 +01:00
Daniel Garnier-Moiroux
f6c3fde7f4 DNS rebinding protection: check host header
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-02-12 11:00:42 +01:00
Daniel Garnier-Moiroux
b57b1269d0 Polish gh-771
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-02-12 10:46:09 +01:00
Daniel Garnier-Moiroux
82102a18f5 Remove unused abstract test classes in mcp-core
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-02-12 10:44:03 +01:00
Daniel Garnier-Moiroux
6f3906480d Move mcp-core integration tests to mcp-test package
- The integration tests pass with both Jackson 2 and Jackson 3.
- Modified McpSchemaTests.testContentDeserializationWrongType to work
  with both Jackson 2 and Jackson 3.

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-02-12 09:13:38 +01:00
Scott Lewis
c3b9ab09ea Move mcp-json into mcp-core, add OSGi support
Co-authored-by: Luca Chang <131398524+LucaButBoring@users.noreply.github.com>
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-02-12 09:13:38 +01:00
Daniel Garnier-Moiroux
be5ec12e1b Polish gh-764
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-02-10 11:29:26 +01:00
ashakirin
09a853f555
Add tool name validation SEP-986 (#764)
* feat: added tools name format validation accordingly #SEP-986

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-02-10 10:52:58 +01:00
Luca Chang
ef8399c1cb
feat: broadcast 2025-11-25 as latest supported client version (#758)
* feat: broadcast 2025-11-25 as latest supported client version
* fix: ignore empty SSE events
2026-02-06 10:55:37 +01:00
Daniel Garnier-Moiroux
96c9bbe745 Add Origin header validation
- Fixes #695
- Does not implement Host header validation yet

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-02-05 10:20:27 +01:00
Filip Hrisafov
2456a0e433
Add Support for Jackson 3 (#742)
This change adds Jackson 3 support and aligns package naming in the existing Jackson 2 module.

Specific changes:
* Deprecated classes for removal in `io.modelcontextprotocol.json.jackson`/`io.modelcontextprotocol.json.schema.jackson`
* Copied the above to `io.modelcontextprotocol.json.jackson2`/`io.modelcontextprotocol.json.schema.jackson2` in non-deprecated form.
* Added tests for the default McpJsonMapper and JsonSchemaValidator
2026-01-26 11:43:35 +01:00
Dariusz Jędrzejczyk
af65356416
Fix everything-server-based integration tests (#756)
* Pin `npx @modelcontextprotocol/server-everything` version to `2025.12.18`.
* Replace `tzolov/mcp-everything-server` Docker image with `node:lts-alpine` + `npx` command.
* Handle HTTP 202 special case.
* Fix test assertions.

The recent rollout of everything-server broke integration tests which take the latest version from the node registry.
This PR unifies the everything-server usage - the Testcontainers Docker setup uses the same version as the STDIO npx-based tests and no longer relies on tzolov/mcp-everything-server.

Signed-off-by: Dariusz Jędrzejczyk <dariusz.jedrzejczyk@broadcom.com>
2026-01-20 16:09:41 +01:00
Jordan Zimmerman
b518393cfd
Expose resourcesUpdateConsumer() in sync client (#735)
`resourcesUpdateConsumer()` was missing from the sync client. Add it.
2026-01-08 20:29:05 +01:00
Christian Tzolov
cb533b2e0e Fix fomratting
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-01-08 20:26:39 +01:00
Sergio del Amo
dce48929a5
add 2025-11-25 version to ProtocolVersions (#733) 2026-01-08 20:25:43 +01:00
Rohit
e7901da010
fix: Support form and url fields in Elicitation capability per 2025-11-25 spec (#731)
Update the ClientCapabilities.Elicitation record to accept optional "form"
and "url" fields as defined in the MCP 2025-11-25 specification.

Previously, deserializing an InitializeRequest with
`{"capabilities":{"elicitation":{"form":{}}}}` would fail with
UnrecognizedPropertyException because the Elicitation record was empty.

Changes:
- Add nested Form and Url marker records to Elicitation
- Add no-arg constructor for backward compatibility (serializes to {})
- Add elicitation(boolean form, boolean url) builder method
- Add comprehensive tests for deserialization and serialization

Fixes #724
2026-01-08 19:29:39 +01:00
Christian Tzolov
082444e18f Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-12-04 15:57:27 +01:00
Daniel Garnier-Moiroux
e6045f7287 Basic version negotiation capabilities
- We do not support full version negotiation, but this commit allows the
  client to the send the correct version to match that of the server.
- There is one limitation: the GET /mcp request happens too early,
  before we have deserialized the initialization response, so we do not
  know the negotiated version yet. This request will have the client
  latest version as Mcp-Protocol-Version value.

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2025-11-21 14:29:47 +01:00
codeboyzhou
7e950ebb6c
refactor: use builder pattern for CallToolResult and Resource (#652)
* use builder pattern for CallToolResult
* use builder pattern for Resource
* simplify lambda expressions in tests
2025-11-21 13:44:29 +01:00
lance
86991c1e49 fix the baseUrl is configured with a trailing slash
Signed-off-by: lance <leehaut@gmail.com>
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2025-11-19 14:20:16 +01:00
Daniel Garnier-Moiroux
87bdf1ee49
Client transports: make #protocolVersions() configurable (#669)
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2025-11-18 14:53:50 +01:00
mingo007
bc308573f3 Fix typo in test name: testPingWithEaxctExceptionType -> testPingWithExactExceptionType 2025-11-18 13:44:41 +01:00
Daniel Garnier-Moiroux
2d22868e1e
Fix experimental client capabilities tests (#670)
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2025-11-18 10:20:08 +01:00
Christian Tzolov
e3079270d5 Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-11-12 16:13:08 +01:00
Christian Tzolov
b74f6de9dc
feat(schema): support Object type for progressToken (#663)
Change progressToken from String to Object throughout McpSchema
to allow both String and Number token types.
This makes it compliant with the MCP spec.

Resolves: #659

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-11-12 15:20:44 +01:00
Viliam Sun
738525308d
fix(docs): Remove broken @see link in resourceTemplates Javadoc (#614) 2025-11-12 14:44:35 +01:00
Michael Vorburger
afa00902a4
fix: JSONRPCResponse JavaDoc (#657) 2025-11-12 14:21:57 +01:00
Christian Tzolov
476f9db36f
feat: enhance error handling with custom error code preservation (#653)
- Improve McpClientSession error handling to preserve custom error codes
and data from McpError instances.
- Add aggregated exception messages to error data field for better debugging.
- Include test coverage for various McpClientSession error scenarios.

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-11-07 11:56:21 +02:00
Christian Tzolov
6e9af40bcb Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-10-30 19:02:32 +01:00
Christian Tzolov
5c46626260
chore: standardize client/server implementation names and version (#642)
Unifies client/server implementation names under "Java SDK" branding
and updates all versions to 0.15.0.

Resolves: #638

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-10-30 12:17:42 +01:00
lance
e91fe7fbc5
Fix: McpAsyncClient#listTools prevent infinite recursion (#631)
* Fix: prevent infinite recursion in listTools() when nextCursor is empty string

Signed-off-by: lance <leehaut@gmail.com>
2025-10-30 11:59:34 +01:00
Daniel Garnier-Moiroux
9bbfbe573a
Close McpTransportSession on transport close (#632)
* Client HTTP transports: use McpTransportSession interface instead of concrete types
* Streamable HTTP tranports: .closeGracefully closes the session

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2025-10-28 14:26:21 +01:00
Christian Tzolov
2ee58533d0
fix: allow additional properties by default per JSON Schema spec (#617)
- Remove automatic additionalProperties: false injection (JSON Schema spec compliance)
- Support String input for structuredContent in validate() method
- Move tests to mcp-json-jackson2 module with proper dependencies
- Replace wildcard imports with explicit imports

Complies with JSON Schema Test Suite:
15e4505/tests/draft2020-12/additionalProperties.json\#L112

Fixes #584

BREAKING CHANGE: Additional properties now allowed by default when not explicitly specified.

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-10-14 09:30:59 +02:00
Sheegan Sri G M
19a8c00a47 fix: improve URI template matching to properly escape special characters (#599)
- Enhanced DefaultMcpUriTemplateManager to use Pattern.quote() for escaping special regex characters like '?'
- Replaced simple string replacement regex generation with robust pattern building
- Added test case to verify URI matching with query parameters (e.g., "file://name/search?={search}")
- Fixed typo: renamed DeafaultMcpUriTemplateManagerFactory to DefaultMcpUriTemplateManagerFactory
- Updated all references across server classes and tests

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-10-07 00:21:51 +02:00
Christian Tzolov
a63d32a5ea
refactor: change int to Integer for optional numeric fields (#604)
Convert primitive int types to Integer wrapper class for:
- JSONRPCError.code
- CreateMessageRequest.maxTokens (including constructor and builder)

This allows these fields to be nullable, properly representing
optional parameters in the MCP protocol schema.

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-10-06 23:04:42 +02:00