Skip to content

Commit e5e4441

Browse files
committed
Fix the baseUrl is configured with a trailing slash
Signed-off-by: lance <leehaut@gmail.com>
1 parent ba8ea28 commit e5e4441

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

mcp-core/src/main/java/io/modelcontextprotocol/util/UriBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ private UriBuilder(Builder builder) {
6060
*/
6161
public static Builder from(String url) {
6262
if (url == null || url.isBlank()) {
63-
throw new IllegalArgumentException("URL must not be null or blank");
63+
return new Builder();
6464
}
6565

6666
URI uri;

mcp-core/src/test/java/io/modelcontextprotocol/util/UriBuilderTests.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.junit.jupiter.params.provider.MethodSource;
1313

1414
import static org.assertj.core.api.Assertions.assertThat;
15+
import static org.junit.jupiter.api.Assertions.assertEquals;
1516

1617
/**
1718
* Unit test for {@link UriBuilder}
@@ -45,6 +46,21 @@ void testSupportMultipleValues() {
4546
assertThat(url).isEqualTo(BASE_URL + "?tag=java&tag=spring&tag=2025&debug");
4647
}
4748

49+
@Test
50+
void testFromEmptyString() {
51+
UriBuilder.Builder builder = UriBuilder.from("");
52+
UriBuilder uri = builder.build();
53+
assertEquals("", uri.buildString());
54+
}
55+
56+
@Test
57+
void testFromSingleSlash() {
58+
UriBuilder.Builder builder = UriBuilder.from("/");
59+
UriBuilder uri = builder.build();
60+
61+
assertEquals("", uri.buildString());
62+
}
63+
4864
static Stream<Arguments> pathProvider() {
4965
return Stream.of(Arguments.of(BASE_URL, "/v1/users", "https://example.com/v1/users"),
5066
Arguments.of(BASE_URL + "/", "v1/users", "https://example.com/v1/users"),

0 commit comments

Comments
 (0)