I tried to deploy the toolkit, and I wasn't able to make it work without the IA:
--- Summary
When a VS Code Copilot Chat client (MCP client running spec version 2025-06-18) sends the initialize request to oracle-db-mcp-java-toolkit running in HTTP transport, the server replies with HTTP 400 Bad Request and the tool list never loads. In VS Code the server appears stuck on "Starting…" and eventually fails with a vague transport error; the picker spins indefinitely.
Root cause is that io.modelcontextprotocol.sdk:mcp:0.12.1 (the SDK version pinned by the toolkit's pom.xml) does not recognize the form sub-field that the newer spec added under capabilities.elicitation, and Jackson is configured to fail on unknown properties.
--- Environment
Toolkit: oracle/mcp — src/oracle-db-mcp-java-toolkit @ main (commit as of 2026-04-21)
SDK: io.modelcontextprotocol.sdk:mcp:0.12.1 (from toolkit pom.xml)
Transport: HTTP (Streamable HTTP, -Dtransport=http)
Server protocolVersion advertised: 2025-03-26
Runtime: OpenJDK 17.0.18, Oracle Linux 9.7, Tomcat embedded 11.0.21
Client: VS Code 1.x Copilot Chat (MCP client protocolVersion 2025-06-18)
- Reproduction
Build and start the toolkit with HTTP transport:
java -Dtransport=http
-Dhttps.port=45450
-DcertificatePath=/opt/oracle-mcp/mcp.p12
-DcertificatePassword=***
-DconfigFile=/opt/oracle-mcp/config.yaml
-Dtools=co,mcp-admin,database-operator
-jar oracle-db-mcp-toolkit-1.0.0.jar
- Send the exact initialize payload that VS Code Copilot Chat sends:
curl -sk -i -X POST https://localhost:45450/mcp
-H 'Content-Type: application/json'
-H 'Accept: application/json, text/event-stream'
-d '{
"jsonrpc":"2.0",
"id":1,
"method":"initialize",
"params":{
"protocolVersion":"2025-06-18",
"capabilities":{
"elicitation":{"form":{}}
},
"clientInfo":{"name":"vscode","version":"1.x"}
}
}'
- Observe:
HTTP/1.1 400
...
{"jsonrpc":"2.0","id":1,"error":{"code":-32600,
"message":"Invalid message: ... UnrecognizedPropertyException:
Unrecognized field "form" (class io.modelcontextprotocol.spec.
McpSchema$ClientCapabilities$Elicitation), not marked as ignorable ..."}}
- Without the elicitation.form field (e.g. from a curl test or an older client) the same request returns HTTP 200 and works normally.
--- Impact
- VS Code Copilot Chat (native type: "http" MCP client) cannot connect to the toolkit out of the box.
- Tools list never populates; the user sees the Tools picker "thinking" forever.
- Workaround via mcp-remote (stdio→http) hits the same server-side error because the field is forwarded as-is.
--- Attempted fixes
- Bump SDK to 1.1.1 / 0.13.1: compiles but breaks the toolkit's internal API (e.g. CallToolResult / JsonSchema constructors changed; Elicitation field shape differs). Not a drop-in change.
- Jackson FAIL_ON_UNKNOWN_PROPERTIES=false: the SDK owns the ObjectMapper and it's not externally configurable in 0.12.1.
#86
I tried to deploy the toolkit, and I wasn't able to make it work without the IA:
--- Summary
When a VS Code Copilot Chat client (MCP client running spec version 2025-06-18) sends the initialize request to oracle-db-mcp-java-toolkit running in HTTP transport, the server replies with HTTP 400 Bad Request and the tool list never loads. In VS Code the server appears stuck on "Starting…" and eventually fails with a vague transport error; the picker spins indefinitely.
Root cause is that io.modelcontextprotocol.sdk:mcp:0.12.1 (the SDK version pinned by the toolkit's pom.xml) does not recognize the form sub-field that the newer spec added under capabilities.elicitation, and Jackson is configured to fail on unknown properties.
--- Environment
Toolkit: oracle/mcp — src/oracle-db-mcp-java-toolkit @ main (commit as of 2026-04-21)
SDK: io.modelcontextprotocol.sdk:mcp:0.12.1 (from toolkit pom.xml)
Transport: HTTP (Streamable HTTP, -Dtransport=http)
Server protocolVersion advertised: 2025-03-26
Runtime: OpenJDK 17.0.18, Oracle Linux 9.7, Tomcat embedded 11.0.21
Client: VS Code 1.x Copilot Chat (MCP client protocolVersion 2025-06-18)
Build and start the toolkit with HTTP transport:
java -Dtransport=http
-Dhttps.port=45450
-DcertificatePath=/opt/oracle-mcp/mcp.p12
-DcertificatePassword=***
-DconfigFile=/opt/oracle-mcp/config.yaml
-Dtools=co,mcp-admin,database-operator
-jar oracle-db-mcp-toolkit-1.0.0.jar
curl -sk -i -X POST https://localhost:45450/mcp
-H 'Content-Type: application/json'
-H 'Accept: application/json, text/event-stream'
-d '{
"jsonrpc":"2.0",
"id":1,
"method":"initialize",
"params":{
"protocolVersion":"2025-06-18",
"capabilities":{
"elicitation":{"form":{}}
},
"clientInfo":{"name":"vscode","version":"1.x"}
}
}'
HTTP/1.1 400
...
{"jsonrpc":"2.0","id":1,"error":{"code":-32600,
"message":"Invalid message: ... UnrecognizedPropertyException:
Unrecognized field "form" (class io.modelcontextprotocol.spec.
McpSchema$ClientCapabilities$Elicitation), not marked as ignorable ..."}}
--- Impact
--- Attempted fixes
#86