Compare commits

...
Author SHA1 Message Date
Christian Tzolov
dad7675f4e Release version 0.17.1
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-01-08 21:08:07 +01:00
Jordan Zimmerman
b26cb00c74 Expose resourcesUpdateConsumer() in sync client (#735)
`resourcesUpdateConsumer()` was missing from the sync client. Add it.
2026-01-08 21:01:10 +01:00
Christian Tzolov
9d1a2a40b7 Fix fomratting
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2026-01-08 21:01:03 +01:00
Sergio del Amo
a4929c59ac add 2025-11-25 version to ProtocolVersions (#733) 2026-01-08 21:00:55 +01:00
Rohit
a2a81cd1b2 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 21:00:49 +01:00
Jonathan Hefner
250e4e1b2f fix: Enable javadoc generation for modules with OSGi metadata (#705)
fix: enable javadoc HTML generation by using legacyMode
2026-01-08 21:00:43 +01:00
ashakirin
c30b8ef628 fix: Fixed html encoding in javadoc (#727) 2026-01-08 21:00:35 +01:00
Christian Tzolov
184bc130f0 Next development version
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-12-04 15:32:36 +01:00
Christian Tzolov
3e38e0eb17 Release version 0.17.0
Signed-off-by: Christian Tzolov <christian.tzolov@broadcom.com>
2025-12-04 15:31:09 +01:00
16 changed files with 221 additions and 37 deletions

View file

@ -7,7 +7,7 @@
<parent> <parent>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</parent> </parent>
<artifactId>mcp-bom</artifactId> <artifactId>mcp-bom</artifactId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</parent> </parent>
<artifactId>mcp-core</artifactId> <artifactId>mcp-core</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
@ -68,7 +68,7 @@
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-json</artifactId> <artifactId>mcp-json</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
<dependency> <dependency>
@ -101,7 +101,7 @@
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-json-jackson2</artifactId> <artifactId>mcp-json-jackson2</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>

View file

@ -4,17 +4,8 @@
package io.modelcontextprotocol.client; package io.modelcontextprotocol.client;
import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
import io.modelcontextprotocol.json.schema.JsonSchemaValidator;
import io.modelcontextprotocol.common.McpTransportContext; import io.modelcontextprotocol.common.McpTransportContext;
import io.modelcontextprotocol.json.schema.JsonSchemaValidator;
import io.modelcontextprotocol.spec.McpClientTransport; import io.modelcontextprotocol.spec.McpClientTransport;
import io.modelcontextprotocol.spec.McpSchema; import io.modelcontextprotocol.spec.McpSchema;
import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities; import io.modelcontextprotocol.spec.McpSchema.ClientCapabilities;
@ -28,6 +19,15 @@ import io.modelcontextprotocol.spec.McpTransport;
import io.modelcontextprotocol.util.Assert; import io.modelcontextprotocol.util.Assert;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import java.time.Duration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
/** /**
* Factory class for creating Model Context Protocol (MCP) clients. MCP is a protocol that * Factory class for creating Model Context Protocol (MCP) clients. MCP is a protocol that
* enables AI models to interact with external tools and resources through a standardized * enables AI models to interact with external tools and resources through a standardized
@ -75,6 +75,7 @@ import reactor.core.publisher.Mono;
* .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> System.out.println("Resources updated: " + resources))) * .resourcesChangeConsumer(resources -> Mono.fromRunnable(() -> System.out.println("Resources updated: " + resources)))
* .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> System.out.println("Prompts updated: " + prompts))) * .promptsChangeConsumer(prompts -> Mono.fromRunnable(() -> System.out.println("Prompts updated: " + prompts)))
* .loggingConsumer(message -> Mono.fromRunnable(() -> System.out.println("Log message: " + message))) * .loggingConsumer(message -> Mono.fromRunnable(() -> System.out.println("Log message: " + message)))
* .resourcesUpdateConsumer(resourceContents -> Mono.fromRunnable(() -> System.out.println("Resources contents updated: " + resourceContents)))
* .build(); * .build();
* }</pre> * }</pre>
* *
@ -346,6 +347,22 @@ public interface McpClient {
return this; return this;
} }
/**
* Adds a consumer to be notified when a specific resource is updated. This allows
* the client to react to changes in individual resources, such as updates to
* their content or metadata.
* @param resourcesUpdateConsumer A consumer function that processes the updated
* resource and returns a Mono indicating the completion of the processing. Must
* not be null.
* @return This builder instance for method chaining.
* @throws IllegalArgumentException If the resourcesUpdateConsumer is null.
*/
public SyncSpec resourcesUpdateConsumer(Consumer<List<McpSchema.ResourceContents>> resourcesUpdateConsumer) {
Assert.notNull(resourcesUpdateConsumer, "Resources update consumer must not be null");
this.resourcesUpdateConsumers.add(resourcesUpdateConsumer);
return this;
}
/** /**
* Adds a consumer to be notified when the available prompts change. This allows * Adds a consumer to be notified when the available prompts change. This allows
* the client to react to changes in the server's prompt templates, such as new * the client to react to changes in the server's prompt templates, such as new

View file

@ -416,9 +416,47 @@ public final class McpSchema {
* maintain control over user interactions and data sharing while enabling servers * maintain control over user interactions and data sharing while enabling servers
* to gather necessary information dynamically. Servers can request structured * to gather necessary information dynamically. Servers can request structured
* data from users with optional JSON schemas to validate responses. * data from users with optional JSON schemas to validate responses.
*
* <p>
* Per the 2025-11-25 spec, clients can declare support for specific elicitation
* modes:
* <ul>
* <li>{@code form} - In-band structured data collection with optional schema
* validation</li>
* <li>{@code url} - Out-of-band interaction via URL navigation</li>
* </ul>
*
* <p>
* For backward compatibility, an empty elicitation object {@code {}} is
* equivalent to declaring support for form mode only.
*
* @param form support for in-band form-based elicitation
* @param url support for out-of-band URL-based elicitation
*/ */
@JsonInclude(JsonInclude.Include.NON_ABSENT) @JsonInclude(JsonInclude.Include.NON_ABSENT)
public record Elicitation() { public record Elicitation(@JsonProperty("form") Form form, @JsonProperty("url") Url url) {
/**
* Marker record indicating support for form-based elicitation mode.
*/
@JsonInclude(JsonInclude.Include.NON_ABSENT)
public record Form() {
}
/**
* Marker record indicating support for URL-based elicitation mode.
*/
@JsonInclude(JsonInclude.Include.NON_ABSENT)
public record Url() {
}
/**
* Creates an Elicitation with default settings (backward compatible, produces
* empty JSON object).
*/
public Elicitation() {
this(null, null);
}
} }
public static Builder builder() { public static Builder builder() {
@ -450,11 +488,28 @@ public final class McpSchema {
return this; return this;
} }
/**
* Enables elicitation capability with default settings (backward compatible,
* produces empty JSON object).
* @return this builder
*/
public Builder elicitation() { public Builder elicitation() {
this.elicitation = new Elicitation(); this.elicitation = new Elicitation();
return this; return this;
} }
/**
* Enables elicitation capability with explicit form and/or url mode support.
* @param form whether to support form-based elicitation
* @param url whether to support URL-based elicitation
* @return this builder
*/
public Builder elicitation(boolean form, boolean url) {
this.elicitation = new Elicitation(form ? new Elicitation.Form() : null,
url ? new Elicitation.Url() : null);
return this;
}
public ClientCapabilities build() { public ClientCapabilities build() {
return new ClientCapabilities(experimental, roots, sampling, elicitation); return new ClientCapabilities(experimental, roots, sampling, elicitation);
} }

View file

@ -20,4 +20,10 @@ public interface ProtocolVersions {
*/ */
String MCP_2025_06_18 = "2025-06-18"; String MCP_2025_06_18 = "2025-06-18";
/**
* MCP protocol version for 2025-11-25.
* https://modelcontextprotocol.io/specification/2025-11-25
*/
String MCP_2025_11_25 = "2025-11-25";
} }

View file

@ -536,11 +536,13 @@ public abstract class AbstractMcpSyncClientTests {
AtomicBoolean toolsNotificationReceived = new AtomicBoolean(false); AtomicBoolean toolsNotificationReceived = new AtomicBoolean(false);
AtomicBoolean resourcesNotificationReceived = new AtomicBoolean(false); AtomicBoolean resourcesNotificationReceived = new AtomicBoolean(false);
AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false); AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false);
AtomicBoolean resourcesUpdatedNotificationReceived = new AtomicBoolean(false);
withClient(createMcpTransport(), withClient(createMcpTransport(),
builder -> builder.toolsChangeConsumer(tools -> toolsNotificationReceived.set(true)) builder -> builder.toolsChangeConsumer(tools -> toolsNotificationReceived.set(true))
.resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true)) .resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true))
.promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true)), .promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true))
.resourcesUpdateConsumer(resources -> resourcesUpdatedNotificationReceived.set(true)),
client -> { client -> {
assertThatCode(() -> { assertThatCode(() -> {

View file

@ -1618,6 +1618,107 @@ public class McpSchemaTests {
} }
// Elicitation Capability Tests (Issue #724)
@Test
void testElicitationCapabilityWithFormField() throws Exception {
// Test that elicitation with "form" field can be deserialized (2025-11-25 spec)
String json = """
{"protocolVersion":"2024-11-05","capabilities":{"elicitation":{"form":{}}},"clientInfo":{"name":"test-client","version":"1.0.0"}}
""";
McpSchema.InitializeRequest request = JSON_MAPPER.readValue(json, McpSchema.InitializeRequest.class);
assertThat(request).isNotNull();
assertThat(request.capabilities()).isNotNull();
assertThat(request.capabilities().elicitation()).isNotNull();
}
@Test
void testElicitationCapabilityWithFormAndUrlFields() throws Exception {
// Test that elicitation with both "form" and "url" fields can be deserialized
String json = """
{"protocolVersion":"2024-11-05","capabilities":{"elicitation":{"form":{},"url":{}}},"clientInfo":{"name":"test-client","version":"1.0.0"}}
""";
McpSchema.InitializeRequest request = JSON_MAPPER.readValue(json, McpSchema.InitializeRequest.class);
assertThat(request).isNotNull();
assertThat(request.capabilities()).isNotNull();
assertThat(request.capabilities().elicitation()).isNotNull();
}
@Test
void testElicitationCapabilityBackwardCompatibilityEmptyObject() throws Exception {
// Test backward compatibility: empty elicitation {} should still work
String json = """
{"protocolVersion":"2024-11-05","capabilities":{"elicitation":{}},"clientInfo":{"name":"test-client","version":"1.0.0"}}
""";
McpSchema.InitializeRequest request = JSON_MAPPER.readValue(json, McpSchema.InitializeRequest.class);
assertThat(request).isNotNull();
assertThat(request.capabilities()).isNotNull();
assertThat(request.capabilities().elicitation()).isNotNull();
}
@Test
void testElicitationCapabilityBuilderBackwardCompatibility() throws Exception {
// Test that the existing builder API still works and produces valid JSON
McpSchema.ClientCapabilities capabilities = McpSchema.ClientCapabilities.builder().elicitation().build();
assertThat(capabilities.elicitation()).isNotNull();
// Serialize and verify it produces valid JSON (should be {} for backward compat)
String json = JSON_MAPPER.writeValueAsString(capabilities);
assertThat(json).contains("\"elicitation\"");
}
@Test
void testElicitationCapabilitySerializationRoundTrip() throws Exception {
// Test that serialization and deserialization round-trip works
McpSchema.ClientCapabilities original = McpSchema.ClientCapabilities.builder().elicitation().build();
String json = JSON_MAPPER.writeValueAsString(original);
McpSchema.ClientCapabilities deserialized = JSON_MAPPER.readValue(json, McpSchema.ClientCapabilities.class);
assertThat(deserialized.elicitation()).isNotNull();
}
@Test
void testElicitationCapabilityBuilderWithFormAndUrl() throws Exception {
// Test the new builder method that explicitly sets form and url support
McpSchema.ClientCapabilities capabilities = McpSchema.ClientCapabilities.builder()
.elicitation(true, true)
.build();
assertThat(capabilities.elicitation()).isNotNull();
assertThat(capabilities.elicitation().form()).isNotNull();
assertThat(capabilities.elicitation().url()).isNotNull();
// Verify serialization produces the expected JSON
String json = JSON_MAPPER.writeValueAsString(capabilities);
assertThatJson(json).when(Option.IGNORING_ARRAY_ORDER).isObject().containsKey("elicitation");
assertThat(json).contains("\"form\"");
assertThat(json).contains("\"url\"");
}
@Test
void testElicitationCapabilityBuilderFormOnly() throws Exception {
// Test builder with form only
McpSchema.ClientCapabilities capabilities = McpSchema.ClientCapabilities.builder()
.elicitation(true, false)
.build();
assertThat(capabilities.elicitation()).isNotNull();
assertThat(capabilities.elicitation().form()).isNotNull();
assertThat(capabilities.elicitation().url()).isNull();
String json = JSON_MAPPER.writeValueAsString(capabilities);
assertThat(json).contains("\"form\"");
assertThat(json).doesNotContain("\"url\"");
}
// Progress Notification Tests // Progress Notification Tests
@Test @Test

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</parent> </parent>
<artifactId>mcp-json-jackson2</artifactId> <artifactId>mcp-json-jackson2</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
@ -37,7 +37,7 @@
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-json</artifactId> <artifactId>mcp-json</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</parent> </parent>
<artifactId>mcp-json</artifactId> <artifactId>mcp-json</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>

View file

@ -9,7 +9,7 @@ import java.lang.reflect.Type;
/** /**
* Captures generic type information at runtime for parameterized JSON (de)serialization. * Captures generic type information at runtime for parameterized JSON (de)serialization.
* Usage: TypeRef<List<Foo>> ref = new TypeRef<>(){}; * Usage: TypeRef&lt;List&lt;Foo&gt;&gt; ref = new TypeRef&lt;&gt;(){};
*/ */
public abstract class TypeRef<T> { public abstract class TypeRef<T> {

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<artifactId>mcp-spring-webflux</artifactId> <artifactId>mcp-spring-webflux</artifactId>
@ -25,19 +25,19 @@
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-json-jackson2</artifactId> <artifactId>mcp-json-jackson2</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp</artifactId> <artifactId>mcp</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-test</artifactId> <artifactId>mcp-test</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
<relativePath>../../pom.xml</relativePath> <relativePath>../../pom.xml</relativePath>
</parent> </parent>
<artifactId>mcp-spring-webmvc</artifactId> <artifactId>mcp-spring-webmvc</artifactId>
@ -25,13 +25,13 @@
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-json-jackson2</artifactId> <artifactId>mcp-json-jackson2</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp</artifactId> <artifactId>mcp</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
<dependency> <dependency>
@ -43,14 +43,14 @@
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-test</artifactId> <artifactId>mcp-test</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-spring-webflux</artifactId> <artifactId>mcp-spring-webflux</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</parent> </parent>
<artifactId>mcp-test</artifactId> <artifactId>mcp-test</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
@ -24,7 +24,7 @@
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp</artifactId> <artifactId>mcp</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
<dependency> <dependency>

View file

@ -535,11 +535,13 @@ public abstract class AbstractMcpSyncClientTests {
AtomicBoolean toolsNotificationReceived = new AtomicBoolean(false); AtomicBoolean toolsNotificationReceived = new AtomicBoolean(false);
AtomicBoolean resourcesNotificationReceived = new AtomicBoolean(false); AtomicBoolean resourcesNotificationReceived = new AtomicBoolean(false);
AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false); AtomicBoolean promptsNotificationReceived = new AtomicBoolean(false);
AtomicBoolean resourcesUpdatedNotificationReceived = new AtomicBoolean(false);
withClient(createMcpTransport(), withClient(createMcpTransport(),
builder -> builder.toolsChangeConsumer(tools -> toolsNotificationReceived.set(true)) builder -> builder.toolsChangeConsumer(tools -> toolsNotificationReceived.set(true))
.resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true)) .resourcesChangeConsumer(resources -> resourcesNotificationReceived.set(true))
.promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true)), .promptsChangeConsumer(prompts -> promptsNotificationReceived.set(true))
.resourcesUpdateConsumer(resources -> resourcesUpdatedNotificationReceived.set(true)),
client -> { client -> {
assertThatCode(() -> { assertThatCode(() -> {

View file

@ -6,7 +6,7 @@
<parent> <parent>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</parent> </parent>
<artifactId>mcp</artifactId> <artifactId>mcp</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
@ -25,13 +25,13 @@
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-json-jackson2</artifactId> <artifactId>mcp-json-jackson2</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-core</artifactId> <artifactId>mcp-core</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
</dependency> </dependency>
</dependencies> </dependencies>

View file

@ -6,7 +6,7 @@
<groupId>io.modelcontextprotocol.sdk</groupId> <groupId>io.modelcontextprotocol.sdk</groupId>
<artifactId>mcp-parent</artifactId> <artifactId>mcp-parent</artifactId>
<version>0.17.0-SNAPSHOT</version> <version>0.17.1</version>
<packaging>pom</packaging> <packaging>pom</packaging>
<url>https://github.com/modelcontextprotocol/java-sdk</url> <url>https://github.com/modelcontextprotocol/java-sdk</url>
@ -75,7 +75,7 @@
<maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version> <maven-compiler-plugin.version>3.11.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version> <maven-surefire-plugin.version>3.1.2</maven-surefire-plugin.version>
<maven-failsafe-plugin.version>3.5.2</maven-failsafe-plugin.version> <maven-failsafe-plugin.version>3.5.2</maven-failsafe-plugin.version>
<maven-javadoc-plugin.version>3.5.0</maven-javadoc-plugin.version> <maven-javadoc-plugin.version>3.11.2</maven-javadoc-plugin.version>
<maven-source-plugin.version>3.3.0</maven-source-plugin.version> <maven-source-plugin.version>3.3.0</maven-source-plugin.version>
<jacoco-maven-plugin.version>0.8.10</jacoco-maven-plugin.version> <jacoco-maven-plugin.version>0.8.10</jacoco-maven-plugin.version>
<flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version> <flatten-maven-plugin.version>1.5.0</flatten-maven-plugin.version>
@ -279,6 +279,7 @@
<version>${maven-javadoc-plugin.version}</version> <version>${maven-javadoc-plugin.version}</version>
<configuration> <configuration>
<detectJavaApiLink>false</detectJavaApiLink> <detectJavaApiLink>false</detectJavaApiLink>
<legacyMode>true</legacyMode>
<failOnError>false</failOnError> <failOnError>false</failOnError>
<doclint>none</doclint> <doclint>none</doclint>
<additionalOptions> <additionalOptions>