Commit graph java-sdk/mcp-core
Author SHA1 Message Date
Christian Tzolov
e9e1a2f34d Release version 1.1.2
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-04-24 16:29:58 +03:00
Daniel Garnier-Moiroux
141063c99c Polish gh-906 2026-04-09 11:12:29 +02:00
smohite04
92bb47b67c feat: add support for meta parameter in client paginated list queries (#906)
* feat: add support for meta parameter in client paginated list queries#

- resources/list
- resources/templates/list
- prompts/list
- tools/list

paginated list operations extended in this review:
- listResources(String cursor, Map<String, Object> meta)
- listResourceTemplates(String cursor, Map<String, Object> meta)
- listPrompts(String cursor, Map<String, Object> meta)

Closes #907

Co-authored-by: SHEETAL MOHITE <mohishee@amazon.com>
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-04-09 11:12:29 +02:00
RameshReddy Adutla
9ead4d154e Fix UTF-8 encoding for non-ASCII tool names in HTTP client transports
Both HttpClientSseClientTransport and HttpClientStreamableHttpTransport
set Content-Type to 'application/json' without specifying the charset.
While Java's BodyPublishers.ofString() uses UTF-8 by default, the
missing charset in the header can cause the server to interpret the
request body using a different encoding (e.g., ISO-8859-1), corrupting
non-ASCII characters such as Chinese tool names.

Explicitly set Content-Type to 'application/json; charset=utf-8' in
POST requests on both client transports.

Fixes #260
Backport of #850

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Daniel Garnier-Moiroux <git@garnier.wf>
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-04-08 15:05:52 +02:00
Daniel Garnier-Moiroux
8e1c5d0cd4 HttpClientStreamableHttpTransport: handle HTTP 405
- Fixes #877

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-04-02 17:26:27 +02:00
300:29:1
7e4c179b77 Deprecate Builder.customizeRequest() in favor of httpRequestCustomizer() (#791)
Deprecate Builder.customizeRequest() in HttpClientSseClientTransport and HttpClientStreamableHttpTransport

customizeRequest() executes its consumer once at build time, freezing
headers into the shared requestBuilder. This silently breaks OAuth
token refresh scenarios where the Authorization header needs to be
updated after the transport is built.

Add @Deprecated and update Javadoc to clarify the build-time-only
semantics and guide users toward httpRequestCustomizer() or
asyncHttpRequestCustomizer() which run on every request.

Closes #788

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-04-02 11:39:17 +02:00
Daniel Garnier-Moiroux
3c27d8e3f8 Next development version
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-03-27 20:54:05 +01:00
Daniel Garnier-Moiroux
5968078106 Release version 1.1.1
Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-03-27 20:53:25 +01:00
Daniel Garnier-Moiroux
d69501fd28
Merge commit from fork 2026-03-27 18:19:49 +00:00
Christian Tzolov
c9b936835f Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-03-13 13:28:37 +01:00
Christian Tzolov
d4d8072693 Release version 1.1.0
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-03-13 12:55:15 +01:00
Christian Tzolov
c4b585795e
fix: prepare POMs for Maven Central release readiness (#863)
- Fix malformed SCM developerConnection URL (slash → colon) across all modules
- Add mcp-json-jackson3 to mcp-bom dependency management
- Update license URL to HTTPS
- Fix POM's scm definitions

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>



Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>

---------

Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-03-13 12:41:49 +01:00
Daniel Garnier-Moiroux
abcd19c0c2
HttpClientStreamHttpTransport: add authorization error handler (#861)
HttpClientStreamHttpTransport: add authorization error handler

- Closes #240

Signed-off-by: Daniel Garnier-Moiroux <git@garnier.wf>
2026-03-13 10:12:57 +01:00
조형준
05f37ad027
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 16:57:08 +01:00
Dariusz Jędrzejczyk
7f68ea5bc0
Support resource subscriptions (#839)
Clients can now subscribe to specific resources and receive targeted
notifications when those resources change. Previously, calling
`notifyResourceUpdated` on the server would broadcast the notification
to every connected client regardless of interest — now only sessions
that have explicitly subscribed to a given resource URI receive the
update, making resource change propagation both correct and efficient.
The subscription lifecycle is fully handled: clients can subscribe and
unsubscribe at any time, and the server cleans up subscription state
when a session closes.

Supersedes #838.
Resolves #837, #776.

---------

Signed-off-by: Dariusz Jędrzejczyk <dariusz.jedrzejczyk@broadcom.com>
2026-03-02 15:26:03 +01:00
Christian Tzolov
d689cddd8b Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-02-23 10:32:26 +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