This is an automated email from the ASF dual-hosted git repository.
terrymanu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 6dc8994f5d4 Refactor MCP transport type (#39176)
6dc8994f5d4 is described below
commit 6dc8994f5d4eacb766a93109f1f1cae293037f48
Author: Liang Zhang <[email protected]>
AuthorDate: Sat Jul 18 13:45:42 2026 +0800
Refactor MCP transport type (#39176)
---
.../src/main/resources/conf/mcp-http-docker.yaml | 2 +-
.../mcp/src/main/resources/conf/mcp-http.yaml | 2 +-
.../shardingsphere-mcp/configuration.cn.md | 8 +++---
.../shardingsphere-mcp/configuration.en.md | 8 +++---
.../shardingsphere-mcp/deployment.cn.md | 4 +--
.../shardingsphere-mcp/deployment.en.md | 4 +--
.../mcp/api/transport/MCPTransportType.java | 11 +-------
.../mcp/api/transport/MCPTransportTypeTest.java | 32 ----------------------
.../mcp/bootstrap/MCPRuntimeLauncher.java | 7 +++--
.../swapper/YamlMCPLaunchConfigurationSwapper.java | 2 +-
.../validator/MCPLaunchConfigurationValidator.java | 2 +-
.../mcp/bootstrap/MCPBootstrapTest.java | 2 +-
.../mcp/bootstrap/MCPRuntimeLauncherTest.java | 4 +--
.../config/MCPLaunchConfigurationTest.java | 18 ++++++------
.../config/loader/MCPConfigurationLoaderTest.java | 4 +--
.../YamlMCPLaunchConfigurationSwapperTest.java | 14 +++++-----
.../MCPResourceSpecificationFactoryTest.java | 2 +-
.../AbstractMCPToolSpecificationFactoryTest.java | 2 +-
.../tool/MCPToolElicitationFlowTest.java | 6 ++--
.../tool/MCPToolSpecificationFactoryTest.java | 4 +--
.../server/http/StreamableHttpMCPServerTest.java | 2 +-
.../http/StreamableHttpMCPServerWireTest.java | 2 +-
.../handler/capability/RuntimeStatusHandler.java | 12 ++++----
.../MCPFeatureRuntimeRequestContextTest.java | 6 ++--
.../mcp/core/context/MCPRuntimeContextTest.java | 2 +-
.../mcp/core/resource/ResourceTestDataFactory.java | 2 +-
.../capability/RuntimeStatusHandlerTest.java | 4 +--
.../handler/workflow/WorkflowPlanHandlerTest.java | 2 +-
.../suite/MCPBuilderEvaluationArtifactTest.java | 2 +-
.../AbstractHttpProtocolOnlyE2ETest.java | 2 +-
.../PackagedDistributionTestSupport.java | 2 +-
.../PackagedDistributionTestSupportTest.java | 4 +--
.../AbstractConfigBackedRuntimeE2ETest.java | 2 +-
.../llm/evaluation/mcp-builder-evaluation.xml | 2 +-
34 files changed, 73 insertions(+), 111 deletions(-)
diff --git a/distribution/mcp/src/main/resources/conf/mcp-http-docker.yaml
b/distribution/mcp/src/main/resources/conf/mcp-http-docker.yaml
index 122918a5d6d..32666d2e143 100644
--- a/distribution/mcp/src/main/resources/conf/mcp-http-docker.yaml
+++ b/distribution/mcp/src/main/resources/conf/mcp-http-docker.yaml
@@ -16,7 +16,7 @@
#
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
bindHost: 0.0.0.0
port: 18088
diff --git a/distribution/mcp/src/main/resources/conf/mcp-http.yaml
b/distribution/mcp/src/main/resources/conf/mcp-http.yaml
index 35dcb45485c..979a2ccf8ca 100644
--- a/distribution/mcp/src/main/resources/conf/mcp-http.yaml
+++ b/distribution/mcp/src/main/resources/conf/mcp-http.yaml
@@ -14,7 +14,7 @@
# limitations under the License.
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
# Use 127.0.0.1 for local debugging. Bind to a controlled intranet or
container interface only behind a trusted gateway.
bindHost: 127.0.0.1
diff --git
a/docs/document/content/user-manual/shardingsphere-mcp/configuration.cn.md
b/docs/document/content/user-manual/shardingsphere-mcp/configuration.cn.md
index 4a5d0dc4b83..c4a59d43c38 100644
--- a/docs/document/content/user-manual/shardingsphere-mcp/configuration.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-mcp/configuration.cn.md
@@ -14,7 +14,7 @@ HTTP 示例:
```yaml
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
bindHost: 127.0.0.1
port: 18088
@@ -30,8 +30,8 @@ transport:
| 配置项 | 说明
|
|-------------------------------|-------------------------------------------------------------------------------------------------|
-| `transport.type` | 传输方式,支持 `STREAMABLE_HTTP` 和 `STDIO`。
|
-| `transport.http` | HTTP 传输配置,只在 `transport.type` 为
`STREAMABLE_HTTP` 时生效。 |
+| `transport.type` | 传输方式,支持 `HTTP` 和 `STDIO`。
|
+| `transport.http` | HTTP 传输配置,只在 `transport.type` 为 `HTTP` 时生效。
|
| `transport.http.bindHost` | HTTP 监听地址,默认值为
`127.0.0.1`。`127.0.0.1`、`localhost`、`::1` 只允许本机访问;`0.0.0.0` 或指定内网 IP
允许对应网络接口访问。 |
| `transport.http.port` | HTTP 监听端口,默认值为 `18088`。
|
| `transport.http.endpointPath` | HTTP 端点路径,默认值为 `/mcp`。
|
@@ -43,7 +43,7 @@ transport:
```yaml
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
sessionAttributionSource:
subjectHeader: X-ShardingSphere-MCP-Subject
diff --git
a/docs/document/content/user-manual/shardingsphere-mcp/configuration.en.md
b/docs/document/content/user-manual/shardingsphere-mcp/configuration.en.md
index 087702535d0..435b8230a24 100644
--- a/docs/document/content/user-manual/shardingsphere-mcp/configuration.en.md
+++ b/docs/document/content/user-manual/shardingsphere-mcp/configuration.en.md
@@ -14,7 +14,7 @@ HTTP example:
```yaml
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
bindHost: 127.0.0.1
port: 18088
@@ -30,8 +30,8 @@ transport:
| Configuration item | Description
|
|-------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
-| `transport.type` | Transport type. Supported values are
`STREAMABLE_HTTP` and `STDIO`.
|
-| `transport.http` | HTTP transport configuration, used only when
`transport.type` is `STREAMABLE_HTTP`.
|
+| `transport.type` | Transport type. Supported values are `HTTP`
and `STDIO`.
|
+| `transport.http` | HTTP transport configuration, used only when
`transport.type` is `HTTP`.
|
| `transport.http.bindHost` | HTTP bind host. Defaults to `127.0.0.1`.
Loopback values allow local access only. `0.0.0.0` or an intranet IP allows
access through that interface. |
| `transport.http.port` | HTTP bind port. The default value is
`18088`.
|
| `transport.http.endpointPath` | HTTP endpoint path. The default value is
`/mcp`.
|
@@ -43,7 +43,7 @@ This configuration does not provide authentication or
authorization. Authenticat
```yaml
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
sessionAttributionSource:
subjectHeader: X-ShardingSphere-MCP-Subject
diff --git
a/docs/document/content/user-manual/shardingsphere-mcp/deployment.cn.md
b/docs/document/content/user-manual/shardingsphere-mcp/deployment.cn.md
index be24ee57837..f978ec063c7 100644
--- a/docs/document/content/user-manual/shardingsphere-mcp/deployment.cn.md
+++ b/docs/document/content/user-manual/shardingsphere-mcp/deployment.cn.md
@@ -37,7 +37,7 @@ HTTP 模式在容器中运行时,`bindHost` 应绑定到容器可暴露的网
```yaml
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
bindHost: 0.0.0.0
port: 18088
@@ -104,7 +104,7 @@ ShardingSphere-MCP 配置示例:
```yaml
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
bindHost: 127.0.0.1
port: 18088
diff --git
a/docs/document/content/user-manual/shardingsphere-mcp/deployment.en.md
b/docs/document/content/user-manual/shardingsphere-mcp/deployment.en.md
index ddafb5fb581..a574c7996fa 100644
--- a/docs/document/content/user-manual/shardingsphere-mcp/deployment.en.md
+++ b/docs/document/content/user-manual/shardingsphere-mcp/deployment.en.md
@@ -37,7 +37,7 @@ When HTTP mode runs in a container, `bindHost` should bind to
a network interfac
```yaml
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
bindHost: 0.0.0.0
port: 18088
@@ -104,7 +104,7 @@ ShardingSphere-MCP configuration example:
```yaml
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
bindHost: 127.0.0.1
port: 18088
diff --git
a/mcp/api/src/main/java/org/apache/shardingsphere/mcp/api/transport/MCPTransportType.java
b/mcp/api/src/main/java/org/apache/shardingsphere/mcp/api/transport/MCPTransportType.java
index 2ee4646e596..281b7b80829 100644
---
a/mcp/api/src/main/java/org/apache/shardingsphere/mcp/api/transport/MCPTransportType.java
+++
b/mcp/api/src/main/java/org/apache/shardingsphere/mcp/api/transport/MCPTransportType.java
@@ -17,19 +17,10 @@
package org.apache.shardingsphere.mcp.api.transport;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
/**
* MCP transport type supported by ShardingSphere MCP runtime.
*/
-@RequiredArgsConstructor
-@Getter
public enum MCPTransportType {
- STREAMABLE_HTTP("http"),
-
- STDIO("stdio");
-
- private final String value;
+ HTTP, STDIO
}
diff --git
a/mcp/api/src/test/java/org/apache/shardingsphere/mcp/api/transport/MCPTransportTypeTest.java
b/mcp/api/src/test/java/org/apache/shardingsphere/mcp/api/transport/MCPTransportTypeTest.java
deleted file mode 100644
index 0d0d0a38b4f..00000000000
---
a/mcp/api/src/test/java/org/apache/shardingsphere/mcp/api/transport/MCPTransportTypeTest.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.shardingsphere.mcp.api.transport;
-
-import org.junit.jupiter.api.Test;
-
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.is;
-
-class MCPTransportTypeTest {
-
- @Test
- void assertValues() {
- assertThat(MCPTransportType.STREAMABLE_HTTP.getValue(), is("http"));
- assertThat(MCPTransportType.STDIO.getValue(), is("stdio"));
- }
-}
diff --git
a/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/MCPRuntimeLauncher.java
b/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/MCPRuntimeLauncher.java
index e7fa59933be..c2393e47443 100644
---
a/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/MCPRuntimeLauncher.java
+++
b/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/MCPRuntimeLauncher.java
@@ -31,6 +31,7 @@ import
org.apache.shardingsphere.mcp.core.session.MCPSessionManager;
import
org.apache.shardingsphere.mcp.support.database.capability.MCPDatabaseCapabilityProvider;
import java.io.IOException;
+import java.util.Locale;
/**
* MCP Server launcher.
@@ -73,15 +74,15 @@ public final class MCPRuntimeLauncher {
String endpoint = String.format("http://%s:%d%s",
config.getHttpTransport().getBindHost(), server.getLocalPort(),
config.getHttpTransport().getEndpointPath());
SessionAttributionResolver sessionAttributionResolver = new
SessionAttributionResolver(config.getHttpTransport().getSessionAttributionSource());
return String.format("ShardingSphere MCP Server started, transport=%s,
config=%s, databases=%d, endpoint=%s, session_attribution=%s, logs=%s.",
- MCPTransportType.STREAMABLE_HTTP.getValue(), configPath,
config.getDatabases().size(), endpoint,
sessionAttributionResolver.getSummary(), LOG_PATH);
+ config.getTransportType().name().toLowerCase(Locale.ENGLISH),
configPath, config.getDatabases().size(), endpoint,
sessionAttributionResolver.getSummary(), LOG_PATH);
}
private String createStdioStartupLogMessage(final MCPLaunchConfiguration
config) {
return String.format("ShardingSphere MCP Server started, transport=%s,
config=%s, databases=%d, logs=%s. Stdout is reserved for MCP protocol frames.",
- MCPTransportType.STDIO.getValue(), configPath,
config.getDatabases().size(), LOG_PATH);
+ config.getTransportType().name().toLowerCase(Locale.ENGLISH),
configPath, config.getDatabases().size(), LOG_PATH);
}
private boolean isHttpTransport(final MCPLaunchConfiguration config) {
- return MCPTransportType.STREAMABLE_HTTP == config.getTransportType();
+ return MCPTransportType.HTTP == config.getTransportType();
}
}
diff --git
a/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/swapper/YamlMCPLaunchConfigurationSwapper.java
b/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/swapper/YamlMCPLaunchConfigurationSwapper.java
index 8f649797eee..3ab884ba745 100644
---
a/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/swapper/YamlMCPLaunchConfigurationSwapper.java
+++
b/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/swapper/YamlMCPLaunchConfigurationSwapper.java
@@ -52,7 +52,7 @@ public final class YamlMCPLaunchConfigurationSwapper
implements YamlConfiguratio
private YamlMCPTransportConfiguration
createYamlTransportConfiguration(final MCPLaunchConfiguration data) {
YamlMCPTransportConfiguration result = new
YamlMCPTransportConfiguration();
result.setType(data.getTransportType());
- if (MCPTransportType.STREAMABLE_HTTP == data.getTransportType()) {
+ if (MCPTransportType.HTTP == data.getTransportType()) {
result.setHttp(httpTransportConfigSwapper.swapToYamlConfiguration(data.getHttpTransport()));
}
return result;
diff --git
a/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/validator/MCPLaunchConfigurationValidator.java
b/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/validator/MCPLaunchConfigurationValidator.java
index 3d19b99a911..73c88a04a1d 100644
---
a/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/validator/MCPLaunchConfigurationValidator.java
+++
b/mcp/bootstrap/src/main/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/validator/MCPLaunchConfigurationValidator.java
@@ -42,7 +42,7 @@ public final class MCPLaunchConfigurationValidator implements
ConstraintValidato
return true;
}
if (MCPTransportType.STDIO == value.getType() && null !=
value.getHttp()) {
- addViolation(context, "transport.http is only valid when
`transport.type` is STREAMABLE_HTTP.");
+ addViolation(context, "transport.http is only valid when
`transport.type` is HTTP.");
return false;
}
return true;
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/MCPBootstrapTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/MCPBootstrapTest.java
index bdb3c0ab2f7..97a1c469cde 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/MCPBootstrapTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/MCPBootstrapTest.java
@@ -90,6 +90,6 @@ class MCPBootstrapTest {
}
private MCPLaunchConfiguration createLaunchConfiguration() {
- return new MCPLaunchConfiguration(MCPTransportType.STREAMABLE_HTTP,
new HttpTransportConfiguration("127.0.0.1", 18080, "/mcp"),
Collections.emptyMap());
+ return new MCPLaunchConfiguration(MCPTransportType.HTTP, new
HttpTransportConfiguration("127.0.0.1", 18080, "/mcp"), Collections.emptyMap());
}
}
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/MCPRuntimeLauncherTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/MCPRuntimeLauncherTest.java
index 6acfc324275..b0fe80740be 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/MCPRuntimeLauncherTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/MCPRuntimeLauncherTest.java
@@ -82,7 +82,7 @@ class MCPRuntimeLauncherTest {
MockedConstruction<MCPDatabaseCapabilityProvider>
ignoredMockedCapabilityProvider =
mockConstruction(MCPDatabaseCapabilityProvider.class);
MockedConstruction<StreamableHttpMCPServer> mockedHttpServer =
mockConstruction(StreamableHttpMCPServer.class,
(mock, context) -> {
- assertThat(((MCPRuntimeContext)
context.arguments().get(1)).getActiveTransport(),
is(MCPTransportType.STREAMABLE_HTTP));
+ assertThat(((MCPRuntimeContext)
context.arguments().get(1)).getActiveTransport(), is(MCPTransportType.HTTP));
when(mock.getLocalPort()).thenReturn(19090);
});
MockedConstruction<StdioMCPServer> mockedStdioServer =
mockConstruction(StdioMCPServer.class)) {
@@ -171,6 +171,6 @@ class MCPRuntimeLauncherTest {
}
private MCPLaunchConfiguration createLaunchConfiguration(final boolean
httpEnabled, final Map<String, RuntimeDatabaseConfiguration> databases) {
- return new MCPLaunchConfiguration(httpEnabled ?
MCPTransportType.STREAMABLE_HTTP : MCPTransportType.STDIO, new
HttpTransportConfiguration("127.0.0.1", 18080, "/mcp"), databases);
+ return new MCPLaunchConfiguration(httpEnabled ? MCPTransportType.HTTP
: MCPTransportType.STDIO, new HttpTransportConfiguration("127.0.0.1", 18080,
"/mcp"), databases);
}
}
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/MCPLaunchConfigurationTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/MCPLaunchConfigurationTest.java
index d64c729d4e3..9441d5085f5 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/MCPLaunchConfigurationTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/MCPLaunchConfigurationTest.java
@@ -36,12 +36,12 @@ class MCPLaunchConfigurationTest {
@Test
void assertValidateWhenHttpTransportSelected() {
- assertDoesNotThrow(() ->
validate(createYamlConfig(MCPTransportType.STREAMABLE_HTTP,
createYamlHttpTransportConfiguration())));
+ assertDoesNotThrow(() ->
validate(createYamlConfig(MCPTransportType.HTTP,
createYamlHttpTransportConfiguration())));
}
@Test
void assertValidateWhenHttpTransportUsesDefaults() {
- assertDoesNotThrow(() ->
validate(createYamlConfig(MCPTransportType.STREAMABLE_HTTP, null)));
+ assertDoesNotThrow(() ->
validate(createYamlConfig(MCPTransportType.HTTP, null)));
}
@Test
@@ -60,12 +60,12 @@ class MCPLaunchConfigurationTest {
void assertValidateWhenStdioTransportHasHttpConfiguration() {
YamlMCPLaunchConfiguration yamlConfig =
createYamlConfig(MCPTransportType.STDIO,
createYamlHttpTransportConfiguration());
IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () -> validate(yamlConfig));
- assertThat(actual.getMessage(), is("transport.http is only valid when
`transport.type` is STREAMABLE_HTTP."));
+ assertThat(actual.getMessage(), is("transport.http is only valid when
`transport.type` is HTTP."));
}
@Test
void assertValidateWhenDatabasesMissing() {
- YamlMCPLaunchConfiguration yamlConfig =
createYamlConfig(MCPTransportType.STREAMABLE_HTTP, null);
+ YamlMCPLaunchConfiguration yamlConfig =
createYamlConfig(MCPTransportType.HTTP, null);
yamlConfig.setRuntimeDatabases(null);
IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () -> validate(yamlConfig));
assertThat(actual.getMessage(), is("MCP launch configuration property
`runtimeDatabases` is required."));
@@ -73,7 +73,7 @@ class MCPLaunchConfigurationTest {
@Test
void assertValidateWhenDatabasesEmpty() {
- YamlMCPLaunchConfiguration yamlConfig =
createYamlConfig(MCPTransportType.STREAMABLE_HTTP, null);
+ YamlMCPLaunchConfiguration yamlConfig =
createYamlConfig(MCPTransportType.HTTP, null);
yamlConfig.setRuntimeDatabases(Collections.emptyMap());
assertDoesNotThrow(() -> validate(yamlConfig));
}
@@ -82,7 +82,7 @@ class MCPLaunchConfigurationTest {
void assertValidateWhenHttpBindHostIsUrl() {
YamlHttpTransportConfiguration http =
createYamlHttpTransportConfiguration();
http.setBindHost("http://127.0.0.1:18088");
- IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
validate(createYamlConfig(MCPTransportType.STREAMABLE_HTTP, http)));
+ IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
validate(createYamlConfig(MCPTransportType.HTTP, http)));
assertThat(actual.getMessage(), is("MCP launch configuration property
`transport.http.bindHost` must be a local bind host or IP address."));
}
@@ -90,7 +90,7 @@ class MCPLaunchConfigurationTest {
void assertValidateWhenHttpPortIsOutOfRange() {
YamlHttpTransportConfiguration http =
createYamlHttpTransportConfiguration();
http.setPort(65536);
- IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
validate(createYamlConfig(MCPTransportType.STREAMABLE_HTTP, http)));
+ IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
validate(createYamlConfig(MCPTransportType.HTTP, http)));
assertThat(actual.getMessage(), is("MCP launch configuration property
`transport.http.port` must be between 0 and 65535."));
}
@@ -98,7 +98,7 @@ class MCPLaunchConfigurationTest {
void assertValidateWhenHttpEndpointPathMissingLeadingSlash() {
YamlHttpTransportConfiguration http =
createYamlHttpTransportConfiguration();
http.setEndpointPath("mcp");
- IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
validate(createYamlConfig(MCPTransportType.STREAMABLE_HTTP, http)));
+ IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
validate(createYamlConfig(MCPTransportType.HTTP, http)));
assertThat(actual.getMessage(), is("MCP launch configuration property
`transport.http.endpointPath` must be a single absolute path without query or
fragment."));
}
@@ -106,7 +106,7 @@ class MCPLaunchConfigurationTest {
void assertValidateWhenHttpEndpointPathHasQuery() {
YamlHttpTransportConfiguration http =
createYamlHttpTransportConfiguration();
http.setEndpointPath("/mcp?debug=true");
- IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
validate(createYamlConfig(MCPTransportType.STREAMABLE_HTTP, http)));
+ IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
validate(createYamlConfig(MCPTransportType.HTTP, http)));
assertThat(actual.getMessage(), is("MCP launch configuration property
`transport.http.endpointPath` must be a single absolute path without query or
fragment."));
}
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/loader/MCPConfigurationLoaderTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/loader/MCPConfigurationLoaderTest.java
index fc6ce2f5ff4..08c94dfd523 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/loader/MCPConfigurationLoaderTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/loader/MCPConfigurationLoaderTest.java
@@ -40,7 +40,7 @@ class MCPConfigurationLoaderTest {
private static final String HTTP_CONFIGURATION_YAML = """
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
http:
bindHost: 127.0.0.1
port: 9090
@@ -97,7 +97,7 @@ class MCPConfigurationLoaderTest {
createConfigFile(searchBaseDirectory, "conf/mcp-http.yaml",
HTTP_CONFIGURATION_YAML);
String actualConfigPath =
searchBaseDirectory.getFileName().resolve("conf").resolve("mcp-http.yaml").toString();
MCPLaunchConfiguration actual =
MCPConfigurationLoader.load(actualConfigPath);
- assertThat(actual.getTransportType(),
is(MCPTransportType.STREAMABLE_HTTP));
+ assertThat(actual.getTransportType(), is(MCPTransportType.HTTP));
assertThat(actual.getHttpTransport().getBindHost(),
is("127.0.0.1"));
assertThat(actual.getHttpTransport().getPort(), is(9090));
assertThat(actual.getDatabases().size(), is(1));
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/swapper/YamlMCPLaunchConfigurationSwapperTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/swapper/YamlMCPLaunchConfigurationSwapperTest.java
index 3532214c03e..665f29d86e8 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/swapper/YamlMCPLaunchConfigurationSwapperTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/config/yaml/swapper/YamlMCPLaunchConfigurationSwapperTest.java
@@ -43,7 +43,7 @@ class YamlMCPLaunchConfigurationSwapperTest {
@Test
void assertSwapToObject() {
String yamlContent = "transport:\n"
- + " type: STREAMABLE_HTTP\n"
+ + " type: HTTP\n"
+ " http:\n"
+ " bindHost: 127.0.0.1\n"
+ " port: 9090\n"
@@ -55,7 +55,7 @@ class YamlMCPLaunchConfigurationSwapperTest {
+ " password: secret\n"
+ " driverClassName: com.mysql.cj.jdbc.Driver\n";
MCPLaunchConfiguration actual =
swapper.swapToObject(YamlEngine.unmarshal(yamlContent,
YamlMCPLaunchConfiguration.class));
- assertThat(actual.getTransportType(),
is(MCPTransportType.STREAMABLE_HTTP));
+ assertThat(actual.getTransportType(), is(MCPTransportType.HTTP));
assertThat(actual.getHttpTransport().getBindHost(), is("127.0.0.1"));
assertThat(actual.getHttpTransport().getPort(), is(9090));
assertThat(actual.getHttpTransport().getEndpointPath(),
is("/gateway"));
@@ -159,15 +159,15 @@ class YamlMCPLaunchConfigurationSwapperTest {
+ " endpointPath: /mcp\n"
+ createRuntimeDatabasesYaml(),
YamlMCPLaunchConfiguration.class);
IllegalArgumentException actual =
assertThrows(IllegalArgumentException.class, () ->
swapper.swapToObject(yamlConfig));
- assertThat(actual.getMessage(), is("transport.http is only valid when
`transport.type` is STREAMABLE_HTTP."));
+ assertThat(actual.getMessage(), is("transport.http is only valid when
`transport.type` is HTTP."));
}
@Test
void assertSwapToObjectWithHttpDefaults() {
MCPLaunchConfiguration actual =
swapper.swapToObject(YamlEngine.unmarshal("transport:\n"
- + " type: STREAMABLE_HTTP\n"
+ + " type: HTTP\n"
+ createRuntimeDatabasesYaml(),
YamlMCPLaunchConfiguration.class));
- assertThat(actual.getTransportType(),
is(MCPTransportType.STREAMABLE_HTTP));
+ assertThat(actual.getTransportType(), is(MCPTransportType.HTTP));
assertThat(actual.getHttpTransport().getBindHost(), is("127.0.0.1"));
assertThat(actual.getHttpTransport().getPort(), is(18088));
assertThat(actual.getHttpTransport().getEndpointPath(), is("/mcp"));
@@ -302,10 +302,10 @@ class YamlMCPLaunchConfigurationSwapperTest {
void assertSwapToYamlConfigurationWithRuntimeDatabases() {
Map<String, RuntimeDatabaseConfiguration> databases = new
LinkedHashMap<>(1, 1F);
databases.put("logic_db", new
RuntimeDatabaseConfiguration("jdbc:mysql://localhost:3306/logic_db", "demo",
"", "com.mysql.cj.jdbc.Driver"));
- MCPLaunchConfiguration launchConfig = new
MCPLaunchConfiguration(MCPTransportType.STREAMABLE_HTTP, new
HttpTransportConfiguration("127.0.0.1", 18088, "/mcp"), databases);
+ MCPLaunchConfiguration launchConfig = new
MCPLaunchConfiguration(MCPTransportType.HTTP, new
HttpTransportConfiguration("127.0.0.1", 18088, "/mcp"), databases);
YamlMCPLaunchConfiguration actual =
swapper.swapToYamlConfiguration(launchConfig);
assertThat(String.valueOf(actual.getRuntimeDatabases().get("logic_db").get("username")),
is("demo"));
- assertThat(actual.getTransport().getType(),
is(MCPTransportType.STREAMABLE_HTTP));
+ assertThat(actual.getTransport().getType(), is(MCPTransportType.HTTP));
assertThat(actual.getTransport().getHttp().getBindHost(),
is("127.0.0.1"));
}
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/resource/MCPResourceSpecificationFactoryTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/resource/MCPResourceSpecificationFactoryTest.java
index 1d140ccf222..8b7429d189f 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/resource/MCPResourceSpecificationFactoryTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/resource/MCPResourceSpecificationFactoryTest.java
@@ -191,7 +191,7 @@ class MCPResourceSpecificationFactoryTest {
sessionManager.createSession(new MCPSessionIdentity("session-1", "",
"", Map.of()));
MCPDatabaseCapabilityProvider databaseCapabilityProvider =
mock(MCPDatabaseCapabilityProvider.class);
when(databaseCapabilityProvider.provide(anyString())).thenReturn(Optional.empty());
- return new MCPRuntimeContext(sessionManager,
databaseCapabilityProvider, MCPTransportType.STREAMABLE_HTTP);
+ return new MCPRuntimeContext(sessionManager,
databaseCapabilityProvider, MCPTransportType.HTTP);
}
private McpSyncServerExchange createExchange() {
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/AbstractMCPToolSpecificationFactoryTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/AbstractMCPToolSpecificationFactoryTest.java
index 1acebf1ec76..3043704135e 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/AbstractMCPToolSpecificationFactoryTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/AbstractMCPToolSpecificationFactoryTest.java
@@ -187,7 +187,7 @@ abstract class AbstractMCPToolSpecificationFactoryTest {
try (MockedStatic<ToolDefinitionRegistry> mockedToolDefinitionRegistry
= mockStatic(ToolDefinitionRegistry.class)) {
MCPToolDefinition toolDefinition =
mockSupportedTool(mockedToolDefinitionRegistry,
createToolDescriptorWithoutOutputSchema(toolName));
mockToolDispatch(mockedToolDefinitionRegistry, toolDefinition,
Map.of(), response);
- return
callTool(createToolSpecification(createRuntimeContext(MCPTransportType.STREAMABLE_HTTP)),
createExchange(), toolName, Map.of());
+ return
callTool(createToolSpecification(createRuntimeContext(MCPTransportType.HTTP)),
createExchange(), toolName, Map.of());
}
}
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/MCPToolElicitationFlowTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/MCPToolElicitationFlowTest.java
index 3b07266c458..9972657a429 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/MCPToolElicitationFlowTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/MCPToolElicitationFlowTest.java
@@ -204,7 +204,7 @@ class MCPToolElicitationFlowTest extends
AbstractMCPToolSpecificationFactoryTest
MCPToolDefinition toolDefinition =
mockSupportedTool(mockedToolDefinitionRegistry,
createPlanningToolDescriptor(toolName));
mockToolDispatch(mockedToolDefinitionRegistry, toolDefinition,
Map.of(), response);
McpSyncServerExchange exchange = createElicitationExchange(new
McpSchema.ElicitResult(McpSchema.ElicitResult.Action.ACCEPT, Map.of("field_1",
"foo_display")));
- CallToolResult actual =
callTool(createToolSpecification(MCPTransportType.STREAMABLE_HTTP), exchange,
toolName, Map.of());
+ CallToolResult actual =
callTool(createToolSpecification(MCPTransportType.HTTP), exchange, toolName,
Map.of());
assertStructuredFallback(actual, "remote_identity_required", true,
false, "structured_fallback");
verify(exchange, never()).createElicitation(any());
}
@@ -250,7 +250,7 @@ class MCPToolElicitationFlowTest extends
AbstractMCPToolSpecificationFactoryTest
MCPToolDefinition toolDefinition =
mockSupportedTool(mockedToolDefinitionRegistry,
createToolDescriptor("database_gateway_search_metadata"));
mockToolDispatch(mockedToolDefinitionRegistry, toolDefinition,
Map.of(), response);
McpSyncServerExchange exchange = createElicitationExchange(new
McpSchema.ElicitResult(McpSchema.ElicitResult.Action.ACCEPT, Map.of()));
- CallToolResult actual =
callTool(createToolSpecification(createRuntimeContext(MCPTransportType.STREAMABLE_HTTP)),
exchange, "database_gateway_search_metadata", Map.of());
+ CallToolResult actual =
callTool(createToolSpecification(createRuntimeContext(MCPTransportType.HTTP)),
exchange, "database_gateway_search_metadata", Map.of());
assertThat(actual.structuredContent(), is(expectedPayload));
verify(exchange, never()).createElicitation(any());
}
@@ -264,7 +264,7 @@ class MCPToolElicitationFlowTest extends
AbstractMCPToolSpecificationFactoryTest
MCPToolDefinition toolDefinition =
mockSupportedTool(mockedToolDefinitionRegistry,
createToolDescriptor("fixture_ping"));
mockToolDispatch(mockedToolDefinitionRegistry, toolDefinition,
Map.of(), response);
McpSyncServerExchange exchange = createElicitationExchange(new
McpSchema.ElicitResult(McpSchema.ElicitResult.Action.ACCEPT, Map.of()));
- CallToolResult actual =
callTool(createToolSpecification(createRuntimeContext(MCPTransportType.STREAMABLE_HTTP)),
exchange, "fixture_ping", Map.of());
+ CallToolResult actual =
callTool(createToolSpecification(createRuntimeContext(MCPTransportType.HTTP)),
exchange, "fixture_ping", Map.of());
assertThat(actual.structuredContent(), is(expectedPayload));
verify(exchange, never()).createElicitation(any());
}
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/MCPToolSpecificationFactoryTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/MCPToolSpecificationFactoryTest.java
index 5e53741c542..d48523d5292 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/MCPToolSpecificationFactoryTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/capability/tool/MCPToolSpecificationFactoryTest.java
@@ -168,7 +168,7 @@ class MCPToolSpecificationFactoryTest extends
AbstractMCPToolSpecificationFactor
@Test
void assertCreateToolSpecificationsRejectInvalidInputSchema() {
SyncToolSpecification actualSpecification = findToolSpecification(
- new
MCPToolSpecificationFactory(createRuntimeContext(MCPTransportType.STREAMABLE_HTTP)).createToolSpecifications(),
"database_gateway_search_metadata");
+ new
MCPToolSpecificationFactory(createRuntimeContext(MCPTransportType.HTTP)).createToolSpecifications(),
"database_gateway_search_metadata");
CallToolResult actual = callTool(actualSpecification,
createExchange(), "database_gateway_search_metadata", Map.of("query", "order",
"object_types", List.of("TABLE")));
Map<String, Object> actualPayload = getTextContentPayload(actual);
Map<?, ?> actualRecovery = (Map<?, ?>) actualPayload.get("recovery");
@@ -186,7 +186,7 @@ class MCPToolSpecificationFactoryTest extends
AbstractMCPToolSpecificationFactor
try (MockedStatic<ToolDefinitionRegistry> mockedToolDefinitionRegistry
= mockStatic(ToolDefinitionRegistry.class)) {
MCPToolDefinition toolDefinition =
mockSupportedTool(mockedToolDefinitionRegistry,
createStrictToolDescriptor("database_gateway_search_metadata"));
mockToolDispatch(mockedToolDefinitionRegistry, toolDefinition,
Map.of(), new MCPMapPayload(Map.of("count", 1)));
- CallToolResult actual =
callTool(createToolSpecification(createRuntimeContext(MCPTransportType.STREAMABLE_HTTP)),
createExchange(), "database_gateway_search_metadata", Map.of());
+ CallToolResult actual =
callTool(createToolSpecification(createRuntimeContext(MCPTransportType.HTTP)),
createExchange(), "database_gateway_search_metadata", Map.of());
Map<String, Object> actualPayload = getTextContentPayload(actual);
assertTrue(String.valueOf(actualPayload.get("message")).contains("database_gateway_search_metadata"));
assertNull(actual.structuredContent());
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/server/http/StreamableHttpMCPServerTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/server/http/StreamableHttpMCPServerTest.java
index 8dcf7bd0a00..e8b04952d5c 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/server/http/StreamableHttpMCPServerTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/server/http/StreamableHttpMCPServerTest.java
@@ -153,6 +153,6 @@ class StreamableHttpMCPServerTest {
}
private MCPRuntimeContext createRuntimeContext() {
- return new MCPRuntimeContext(new
MCPSessionManager(Collections.emptyMap()), new
MCPDatabaseCapabilityProvider(Collections.emptyMap()),
MCPTransportType.STREAMABLE_HTTP);
+ return new MCPRuntimeContext(new
MCPSessionManager(Collections.emptyMap()), new
MCPDatabaseCapabilityProvider(Collections.emptyMap()), MCPTransportType.HTTP);
}
}
diff --git
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/server/http/StreamableHttpMCPServerWireTest.java
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/server/http/StreamableHttpMCPServerWireTest.java
index 0c2109130c7..3ff7f4dadde 100644
---
a/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/server/http/StreamableHttpMCPServerWireTest.java
+++
b/mcp/bootstrap/src/test/java/org/apache/shardingsphere/mcp/bootstrap/transport/server/http/StreamableHttpMCPServerWireTest.java
@@ -76,7 +76,7 @@ class StreamableHttpMCPServerWireTest {
private StreamableHttpMCPServer createServer() {
MCPRuntimeContext runtimeContext = new MCPRuntimeContext(new
MCPSessionManager(Collections.emptyMap()), new
MCPDatabaseCapabilityProvider(Collections.emptyMap()),
- MCPTransportType.STREAMABLE_HTTP);
+ MCPTransportType.HTTP);
return new StreamableHttpMCPServer(new
HttpTransportConfiguration("127.0.0.1", 0, "/mcp"), runtimeContext);
}
diff --git
a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/resource/handler/capability/RuntimeStatusHandler.java
b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/resource/handler/capability/RuntimeStatusHandler.java
index 8b050022c48..6e077270775 100644
---
a/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/resource/handler/capability/RuntimeStatusHandler.java
+++
b/mcp/core/src/main/java/org/apache/shardingsphere/mcp/core/resource/handler/capability/RuntimeStatusHandler.java
@@ -35,6 +35,7 @@ import
org.apache.shardingsphere.mcp.support.security.MCPRuntimeProtectionPolicy
import java.util.LinkedHashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Optional;
@@ -60,13 +61,14 @@ public final class RuntimeStatusHandler implements
MCPResourceHandler<MCPFeature
List<RuntimeDatabaseProfile> databases =
handlerContext.getMetadataQueryFacade().queryDatabases();
boolean hasConfiguredDatabase = !databases.isEmpty();
MCPTransportType activeTransport = handlerContext.getActiveTransport();
+ String activeTransportName =
activeTransport.name().toLowerCase(Locale.ENGLISH);
Map<String, Object> result = new LinkedHashMap<>(15, 1F);
result.put("response_mode", MCPResponseMode.RUNTIME);
result.put(MCPPayloadFieldNames.SUMMARY,
createSummary(hasConfiguredDatabase, databases.size()));
result.put("server_status", hasConfiguredDatabase ? "ready" :
"configuration_required");
result.put("status", hasConfiguredDatabase ? "available" :
"configuration_required");
- result.put("transport", activeTransport.getValue());
- result.put("active_transport", activeTransport.getValue());
+ result.put("transport", activeTransportName);
+ result.put("active_transport", activeTransportName);
result.put("transport_security_summary",
createTransportSecuritySummary(activeTransport));
result.put("configured_database_count", databases.size());
result.put("databases", databases.stream().map(each ->
createDatabaseStatus(handlerContext, each)).toList());
@@ -87,9 +89,9 @@ public final class RuntimeStatusHandler implements
MCPResourceHandler<MCPFeature
private Map<String, Object> createTransportSecuritySummary(final
MCPTransportType activeTransport) {
Map<String, Object> result = new LinkedHashMap<>(4, 1F);
- result.put("transport", activeTransport.getValue());
- result.put("authentication", MCPTransportType.STREAMABLE_HTTP ==
activeTransport ? "not_enabled_by_mcp_transport" : "local_client_process");
- result.put("recommended_exposure", MCPTransportType.STREAMABLE_HTTP ==
activeTransport ? "loopback_or_trusted_gateway" : "local_stdio_session");
+ result.put("transport",
activeTransport.name().toLowerCase(Locale.ENGLISH));
+ result.put("authentication", MCPTransportType.HTTP == activeTransport
? "not_enabled_by_mcp_transport" : "local_client_process");
+ result.put("recommended_exposure", MCPTransportType.HTTP ==
activeTransport ? "loopback_or_trusted_gateway" : "local_stdio_session");
result.put("model_action", "Do not request or echo JDBC URLs,
credentials, raw environment variables, or stack traces.");
return result;
}
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/context/MCPFeatureRuntimeRequestContextTest.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/context/MCPFeatureRuntimeRequestContextTest.java
index 2d34060c5d0..13b2bd78c0c 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/context/MCPFeatureRuntimeRequestContextTest.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/context/MCPFeatureRuntimeRequestContextTest.java
@@ -36,7 +36,7 @@ class MCPFeatureRuntimeRequestContextTest {
void assertSessionIdentity() {
MCPSessionIdentity sessionIdentity = new
MCPSessionIdentity("session-1", "subject", "gateway", Map.of("cluster",
"demo"));
MCPRuntimeContext runtimeContext = new MCPRuntimeContext(new
MCPSessionManager(Map.of()),
- new MCPDatabaseCapabilityProvider(Map.of()),
MCPTransportType.STREAMABLE_HTTP);
+ new MCPDatabaseCapabilityProvider(Map.of()),
MCPTransportType.HTTP);
assertThat(new MCPFeatureRuntimeRequestContext(runtimeContext,
sessionIdentity).getSessionIdentity(), is(sessionIdentity));
}
@@ -44,7 +44,7 @@ class MCPFeatureRuntimeRequestContextTest {
void assertFindRuntimeDatabaseConfiguration() {
RuntimeDatabaseConfiguration runtimeDatabaseConfig = new
RuntimeDatabaseConfiguration("jdbc:test:profile", "demo", "",
"com.mysql.cj.jdbc.Driver");
MCPRuntimeContext runtimeContext = new MCPRuntimeContext(new
MCPSessionManager(Map.of("logic_db", runtimeDatabaseConfig)),
- new MCPDatabaseCapabilityProvider(Map.of()),
MCPTransportType.STREAMABLE_HTTP);
+ new MCPDatabaseCapabilityProvider(Map.of()),
MCPTransportType.HTTP);
MCPFeatureRuntimeRequestContext requestContext = new
MCPFeatureRuntimeRequestContext(runtimeContext, new
MCPSessionIdentity("session-1", "", "", Map.of()));
assertThat(requestContext.findRuntimeDatabaseConfiguration("logic_db"),
is(Optional.of(runtimeDatabaseConfig)));
}
@@ -52,7 +52,7 @@ class MCPFeatureRuntimeRequestContextTest {
@Test
void assertFindMissingRuntimeDatabaseConfiguration() {
MCPRuntimeContext runtimeContext = new MCPRuntimeContext(new
MCPSessionManager(Map.of()),
- new MCPDatabaseCapabilityProvider(Map.of()),
MCPTransportType.STREAMABLE_HTTP);
+ new MCPDatabaseCapabilityProvider(Map.of()),
MCPTransportType.HTTP);
MCPFeatureRuntimeRequestContext requestContext = new
MCPFeatureRuntimeRequestContext(runtimeContext, new
MCPSessionIdentity("session-1", "", "", Map.of()));
assertThat(requestContext.findRuntimeDatabaseConfiguration("missing_db"),
is(Optional.empty()));
}
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/context/MCPRuntimeContextTest.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/context/MCPRuntimeContextTest.java
index 0e627e54629..614d10c7ddb 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/context/MCPRuntimeContextTest.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/context/MCPRuntimeContextTest.java
@@ -57,7 +57,7 @@ class MCPRuntimeContextTest {
}
private MCPRuntimeContext createRuntimeContext(final MCPSessionManager
sessionManager) {
- return new MCPRuntimeContext(sessionManager, new
MCPDatabaseCapabilityProvider(Map.of()), MCPTransportType.STREAMABLE_HTTP);
+ return new MCPRuntimeContext(sessionManager, new
MCPDatabaseCapabilityProvider(Map.of()), MCPTransportType.HTTP);
}
private WorkflowContextSnapshot createSnapshot(final String planId) {
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
index 7b00737ee69..0782f00b51c 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/ResourceTestDataFactory.java
@@ -132,7 +132,7 @@ public final class ResourceTestDataFactory {
* @return runtime context
*/
public static MCPRuntimeContext createRuntimeContext(final
List<DatabaseMetadataFixture> databaseMetadataList) {
- return createRuntimeContext(databaseMetadataList,
MCPTransportType.STREAMABLE_HTTP);
+ return createRuntimeContext(databaseMetadataList,
MCPTransportType.HTTP);
}
/**
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/capability/RuntimeStatusHandlerTest.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/capability/RuntimeStatusHandlerTest.java
index 03967fbd263..cd0dfe26d10 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/capability/RuntimeStatusHandlerTest.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/capability/RuntimeStatusHandlerTest.java
@@ -38,7 +38,7 @@ class RuntimeStatusHandlerTest {
@Test
void assertHandle() {
MCPFeatureRuntimeRequestContext requestContext =
- new
MCPFeatureRuntimeRequestContext(ResourceTestDataFactory.createRuntimeContext(ResourceTestDataFactory.createDatabaseMetadata(),
MCPTransportType.STREAMABLE_HTTP),
+ new
MCPFeatureRuntimeRequestContext(ResourceTestDataFactory.createRuntimeContext(ResourceTestDataFactory.createDatabaseMetadata(),
MCPTransportType.HTTP),
new MCPSessionIdentity("session-1", "", "", Map.of()));
Map<String, Object> actual = new
RuntimeStatusHandler().handle(requestContext, new
MCPUriVariables(Map.of())).toPayload();
assertThat(actual.get("response_mode"), is("runtime"));
@@ -72,7 +72,7 @@ class RuntimeStatusHandlerTest {
@Test
void assertHandleWithEmptyRuntimeDatabase() {
- MCPFeatureRuntimeRequestContext requestContext = new
MCPFeatureRuntimeRequestContext(ResourceTestDataFactory.createRuntimeContext(List.of(),
MCPTransportType.STREAMABLE_HTTP),
+ MCPFeatureRuntimeRequestContext requestContext = new
MCPFeatureRuntimeRequestContext(ResourceTestDataFactory.createRuntimeContext(List.of(),
MCPTransportType.HTTP),
new MCPSessionIdentity("session-1", "", "", Map.of()));
Map<String, Object> actual = new
RuntimeStatusHandler().handle(requestContext, new
MCPUriVariables(Map.of())).toPayload();
assertThat(actual.get("server_status"), is("configuration_required"));
diff --git
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/workflow/WorkflowPlanHandlerTest.java
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/workflow/WorkflowPlanHandlerTest.java
index 06f2727e662..bbbd1b482e8 100644
---
a/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/workflow/WorkflowPlanHandlerTest.java
+++
b/mcp/core/src/test/java/org/apache/shardingsphere/mcp/core/resource/handler/workflow/WorkflowPlanHandlerTest.java
@@ -44,7 +44,7 @@ class WorkflowPlanHandlerTest {
void assertHandle() {
MCPSessionManager sessionManager = new MCPSessionManager(Map.of());
sessionManager.createSession(new MCPSessionIdentity("session-1", "",
"", Map.of()));
- MCPRuntimeContext runtimeContext = new
MCPRuntimeContext(sessionManager, new MCPDatabaseCapabilityProvider(Map.of()),
MCPTransportType.STREAMABLE_HTTP);
+ MCPRuntimeContext runtimeContext = new
MCPRuntimeContext(sessionManager, new MCPDatabaseCapabilityProvider(Map.of()),
MCPTransportType.HTTP);
runtimeContext.getWorkflowSessionContext("session-1").save(createSnapshot());
MCPFeatureRuntimeRequestContext requestContext = new
MCPFeatureRuntimeRequestContext(runtimeContext,
sessionManager.getRequiredSessionIdentity("session-1"));
Map<String, Object> actual = new
WorkflowPlanHandler().handle(requestContext, new
MCPUriVariables(Map.of("plan_id", "plan-1"))).toPayload();
diff --git
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/llm/suite/MCPBuilderEvaluationArtifactTest.java
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/llm/suite/MCPBuilderEvaluationArtifactTest.java
index 5c6f024cac9..72cf92a2291 100644
---
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/llm/suite/MCPBuilderEvaluationArtifactTest.java
+++
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/llm/suite/MCPBuilderEvaluationArtifactTest.java
@@ -85,7 +85,7 @@ final class MCPBuilderEvaluationArtifactTest {
"plan_id",
"next_actions",
"transport.type",
- "STREAMABLE_HTTP",
+ "HTTP",
"STDIO",
"Origin",
"metadata",
diff --git
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/runtime/programmatic/AbstractHttpProtocolOnlyE2ETest.java
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/runtime/programmatic/AbstractHttpProtocolOnlyE2ETest.java
index 186d2d67d9d..5eea1685003 100644
---
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/runtime/programmatic/AbstractHttpProtocolOnlyE2ETest.java
+++
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/runtime/programmatic/AbstractHttpProtocolOnlyE2ETest.java
@@ -146,6 +146,6 @@ abstract class AbstractHttpProtocolOnlyE2ETest {
}
private MCPRuntimeContext createRuntimeContext() {
- return new MCPRuntimeContext(new
MCPSessionManager(Collections.emptyMap()), new
MCPDatabaseCapabilityProvider(Collections.emptyMap()),
MCPTransportType.STREAMABLE_HTTP);
+ return new MCPRuntimeContext(new
MCPSessionManager(Collections.emptyMap()), new
MCPDatabaseCapabilityProvider(Collections.emptyMap()), MCPTransportType.HTTP);
}
}
diff --git
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/distribution/PackagedDistributionTestSupport.java
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/distribution/PackagedDistributionTestSupport.java
index f239ba3d4a9..10bca0f9aee 100644
---
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/distribution/PackagedDistributionTestSupport.java
+++
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/distribution/PackagedDistributionTestSupport.java
@@ -290,7 +290,7 @@ public final class PackagedDistributionTestSupport {
}
private static MCPTransportType resolveTransportType(final
RuntimeTransport transport) {
- return RuntimeTransport.HTTP == transport ?
MCPTransportType.STREAMABLE_HTTP : MCPTransportType.STDIO;
+ return RuntimeTransport.HTTP == transport ? MCPTransportType.HTTP :
MCPTransportType.STDIO;
}
public record PreparedPackagedDistribution(Path home, Path configFile,
RuntimeTransport transport, int httpPort) {
diff --git
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/distribution/PackagedDistributionTestSupportTest.java
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/distribution/PackagedDistributionTestSupportTest.java
index 4e1a0f41752..a533b1bc0a2 100644
---
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/distribution/PackagedDistributionTestSupportTest.java
+++
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/distribution/PackagedDistributionTestSupportTest.java
@@ -48,7 +48,7 @@ class PackagedDistributionTestSupportTest {
private static final String HTTP_CONFIGURATION = """
transport:
- type: STREAMABLE_HTTP
+ type: HTTP
runtimeDatabases:
orders:
jdbcUrl: "jdbc:mysql://127.0.0.1:3306/orders"
@@ -186,7 +186,7 @@ class PackagedDistributionTestSupportTest {
private static Stream<Arguments> transportCases() {
return Stream.of(
- Arguments.of("http transport", RuntimeTransport.HTTP,
MCPTransportType.STREAMABLE_HTTP),
+ Arguments.of("http transport", RuntimeTransport.HTTP,
MCPTransportType.HTTP),
Arguments.of("stdio transport", RuntimeTransport.STDIO,
MCPTransportType.STDIO));
}
diff --git
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/runtime/AbstractConfigBackedRuntimeE2ETest.java
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/runtime/AbstractConfigBackedRuntimeE2ETest.java
index 02a4be11d98..5c985dedce1 100644
---
a/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/runtime/AbstractConfigBackedRuntimeE2ETest.java
+++
b/test/e2e/mcp/src/test/java/org/apache/shardingsphere/test/e2e/mcp/support/runtime/AbstractConfigBackedRuntimeE2ETest.java
@@ -183,7 +183,7 @@ public abstract class AbstractConfigBackedRuntimeE2ETest {
private String createConfigurationContent(final Map<String,
RuntimeDatabaseConfiguration> runtimeDatabases) {
RuntimeTransport transport = getTransport();
- MCPTransportType transportType = RuntimeTransport.HTTP == transport ?
MCPTransportType.STREAMABLE_HTTP : MCPTransportType.STDIO;
+ MCPTransportType transportType = RuntimeTransport.HTTP == transport ?
MCPTransportType.HTTP : MCPTransportType.STDIO;
return YamlEngine.marshal(new
YamlMCPLaunchConfigurationSwapper().swapToYamlConfiguration(
new MCPLaunchConfiguration(transportType,
createHttpTransportConfiguration(), runtimeDatabases)));
}
diff --git
a/test/e2e/mcp/src/test/resources/llm/evaluation/mcp-builder-evaluation.xml
b/test/e2e/mcp/src/test/resources/llm/evaluation/mcp-builder-evaluation.xml
index f55f25f0b48..d04eafa375f 100644
--- a/test/e2e/mcp/src/test/resources/llm/evaluation/mcp-builder-evaluation.xml
+++ b/test/e2e/mcp/src/test/resources/llm/evaluation/mcp-builder-evaluation.xml
@@ -192,7 +192,7 @@
</qa_pair>
<qa_pair id="q10" category="transport_security" read_only="true">
<question>
- During Streamable HTTP deployment, an operator sets transport.type to
STREAMABLE_HTTP and bindHost to 0.0.0.0 for a trusted gateway.
+ During Streamable HTTP deployment, an operator sets transport.type to
HTTP and bindHost to 0.0.0.0 for a trusted gateway.
Explain what built-in authorization exists, how present Origin headers
are treated, and where authentication must happen.
</question>
<answer>no_builtin_auth|origin_403|gateway_auth_boundary</answer>