Skip to content

HTTP 400 UnrecognizedPropertyException: "form" when VS Code Copilot Chat initializes against the Java HTTP toolkit (SDK 0.12.1 cannot parse capabilities.elicitation.form from MCP spec 2025-06-18) #215

@hmartinezlopez

Description

@hmartinezlopez

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)

  1. 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

  1. 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"}
}
}'

  1. 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 ..."}}

  1. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions