diff --git a/conformance-test/README.md b/conformance-test/README.md index 3f1e366b..9b827bcf 100644 --- a/conformance-test/README.md +++ b/conformance-test/README.md @@ -111,15 +111,8 @@ Tests the conformance server against all server scenarios: ## Known SDK Limitations -8 scenarios are expected to fail due to current SDK limitations (tracked in [ -`conformance-baseline.yml`](conformance-baseline.yml). - -| Scenario | Suite | Root Cause | -|---------------------------------------|--------|----------------------------------------------------------------------------------------------------------------| -| `elicitation-sep1330-enums` | server | *(same as above)* | -| `resources-templates-read` | server | SDK does not implement `addResourceTemplate()` with URI pattern matching; resources are looked up by exact URI | -| `elicitation-sep1034-client-defaults` | client | SDK does not fill in `default` values from the elicitation request schema before sending the response | - +Scenarios, expected to fail due to current SDK limitations, are tracked in +[`conformance-baseline.yml`](conformance-baseline.yml). These failures reveal SDK gaps and are intentionally not fixed in this module. [list-scenarios-command]: https://github.com/modelcontextprotocol/conformance/tree/main?tab=readme-ov-file#list-available-scenarios diff --git a/conformance-test/conformance-baseline.yml b/conformance-test/conformance-baseline.yml index c15041f4..37888474 100644 --- a/conformance-test/conformance-baseline.yml +++ b/conformance-test/conformance-baseline.yml @@ -1,7 +1,6 @@ # Conformance test baseline - expected failures # Add entries here as tests are identified as known SDK limitations server: - - elicitation-sep1330-enums - resources-templates-read client: diff --git a/conformance-test/src/main/kotlin/io/modelcontextprotocol/kotlin/sdk/conformance/ConformanceTools.kt b/conformance-test/src/main/kotlin/io/modelcontextprotocol/kotlin/sdk/conformance/ConformanceTools.kt index def59f81..579b2223 100644 --- a/conformance-test/src/main/kotlin/io/modelcontextprotocol/kotlin/sdk/conformance/ConformanceTools.kt +++ b/conformance-test/src/main/kotlin/io/modelcontextprotocol/kotlin/sdk/conformance/ConformanceTools.kt @@ -318,27 +318,22 @@ fun Server.registerConformanceTools() { ) }, ) - // Legacy titled (deprecated) + // Legacy titled (deprecated) - uses enum + enumNames arrays put( "legacyEnum", buildJsonObject { put("type", JsonPrimitive("string")) put( - "oneOf", + "enum", + JsonArray(listOf(JsonPrimitive("opt1"), JsonPrimitive("opt2"), JsonPrimitive("opt3"))), + ) + put( + "enumNames", JsonArray( listOf( - buildJsonObject { - put("const", JsonPrimitive("opt1")) - put("title", JsonPrimitive("Option One")) - }, - buildJsonObject { - put("const", JsonPrimitive("opt2")) - put("title", JsonPrimitive("Option Two")) - }, - buildJsonObject { - put("const", JsonPrimitive("opt3")) - put("title", JsonPrimitive("Option Three")) - }, + JsonPrimitive("Option One"), + JsonPrimitive("Option Two"), + JsonPrimitive("Option Three"), ), ), ) @@ -367,7 +362,7 @@ fun Server.registerConformanceTools() { ) }, ) - // Titled multi-select + // Titled multi-select - uses items.anyOf with const/title pairs put( "titledMulti", buildJsonObject { @@ -375,9 +370,8 @@ fun Server.registerConformanceTools() { put( "items", buildJsonObject { - put("type", JsonPrimitive("string")) put( - "oneOf", + "anyOf", JsonArray( listOf( buildJsonObject { @@ -405,7 +399,7 @@ fun Server.registerConformanceTools() { "Please review and update the form fields with defaults", schema, ) - CallToolResult(listOf(TextContent(result.content.toString()))) + CallToolResult(listOf(TextContent("Elicitation completed: action=${result.action}, content=${result.content}"))) } // 12. Dynamic tool