Skip to content

Verify MRTR confirmation and legacy elicitation compatibility - #529

Merged
jongalloway merged 1 commit into
mainfrom
jongalloway-elicitation-compatibility
Oct 31, 2026
Merged

jongalloway merged 1 commit into
mainfrom
jongalloway-elicitation-compatibility

Conversation

@jongalloway

Copy link
Copy Markdown
Owner

Destructive-operation confirmation already supports native MRTR and legacy elicitation, but its coverage did not fully establish wire behavior, solution-removal safety, or the effect of the SDK's retry limits. This closes those verification gaps without changing production confirmation behavior or dependencies.

Changes

  • Inspect native inputRequests and submit inputResponses using a transport-only client, independently of the SDK's automatic retry loop.
  • Verify legacy Clean and Remove finish within one wire-level tool call, and separately exercise the SDK's explicit-MRTR backward-compatibility resolver.
  • Verify real solution membership changes only after accepted boolean confirmation; malformed or missing confirmation data leave Clean and Remove side effects untouched.
  • Extend production stdio confirmation coverage to both operations on MCP 2026-07-28 and 2025-11-25.
  • Clarify the retained native, legacy, and Tasks paths and document why one confirmation round stays below the SDK's 10-retry limits.

Legacy production calls intentionally retain ElicitAsync; the explicit-MRTR resolver is exercised by a test-only tool. Existing Tasks and no-elicitation fallback behavior remain unchanged.

Validation

  • Server build succeeded.
  • All 94 targeted elicitation, SDK compatibility, and stdio confirmation tests passed.
  • Existing dependency target-framework warnings remain unchanged.

Fixes: #486

Cover native MRTR wire exchanges, legacy elicitation and resolver behavior, confirmation side effects, and stdio compatibility. Document the single-round flow and SDK retry limits without changing production behavior.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI balanced review requested due to automatic review settings October 31, 2026 01:09

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

There are no active review issues for the expanded destructive-operation confirmation tests and documentation.

No open issues 🎉

What changed in this PR

This PR strengthens verification of destructive-operation confirmation in the .NET MCP server, addressing #486 without changing production behavior or dependencies.

Changes:

  • Add native wire-level confirmation tests, solution-removal safety checks, and invalid-response coverage.
  • Verify legacy single-call behavior and the SDK’s backward-compatibility resolver; extend real-stdio coverage to both Clean and Remove.
  • Document native, legacy, and Tasks confirmation paths and their relationship to SDK retry limits.
File Description
DotNetMcp.Tests/​Tools/​ElicitationTests.cs Clarify the fallback test’s name and documentation.
DotNetMcp.Tests/​Server/​Sdk20CompatibilityTests.cs Add wire-level, side-effect safety, invalid-input, and resolver tests.
DotNetMcp.Tests/​Server/​McpConformanceTests.cs Cover Clean and Remove confirmation over stdio on both protocols.
doc/​testing.md Describe the expanded confirmation coverage.
doc/​sdk-v1.1-compatibility.md Explain confirmation paths and retry limits; update the MRTR documentation link.

Review effort: Balanced

@jongalloway
jongalloway merged commit 1fcad73 into main Oct 31, 2026
9 checks passed
@jongalloway
jongalloway deleted the jongalloway-elicitation-compatibility branch October 31, 2026 01:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Migrate Elicitation to MRTR and verify legacy back-compat

2 participants