feat(binding-mcp): offer 2025-11-25 and negotiate elicitation url capability - #1820
Merged
jfallows merged 2 commits intoJun 2, 2026
Merged
Conversation
Bump the offered MCP protocol version from 2025-06-18 to 2025-11-25 so the proxy can negotiate SEP-1036 url-mode elicitation against a compliant upstream. The south client offers 2025-11-25 and the north server responds with it; per-side down-negotiation to an older peer is preserved. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Parse the north client's initialize capabilities and serialize them to the
upstream so url-mode elicitation (SEP-1036) flows end-to-end through the proxy.
- mcp.idl: add CLIENT_ELICITATION_FORM and CLIENT_ELICITATION_URL to
McpCapabilities, carried on McpLifecycleBeginEx.capabilities.
- north server: parse capabilities.elicitation.{url} from the initialize
request (bare elicitation implies form) and stamp the bits on the lifecycle
begin instead of a fixed capability set; echo the negotiated protocol version
in the initialize response instead of always responding with the latest.
- south client: serialize capabilities back to the upstream from the bits,
emitting elicitation.url only when the north client advertised it; the cache
hydrater advertises no client capabilities.
The proxy already propagates the lifecycle capabilities north-to-south, so url
elicitation is gated per-side: the south advertises url only when the north
client supports it.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This was referenced Jun 3, 2026
jfallows
deleted the
feature/1819-binding-mcp-protocol-version-elicitation-url
branch
July 1, 2026 23:06
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Enable url-mode elicitation (SEP-1036) to flow through the
mcpproxy by offeringMCP protocol 2025-11-25 and negotiating the
elicitation.urlclient capability,so the south client advertises it to upstreams only when the originating north client
supports it.
Closes #1819.
Changes
Two commits:
feat: offer MCP protocol version 2025-11-25 — bump the offered version from2025-06-18to2025-11-25across the two factories and the spec scripts; per-sidedown-negotiation to an older peer is preserved.
feat: negotiate elicitation client capabilitymcp.idl: addCLIENT_ELICITATION_FORMandCLIENT_ELICITATION_URLtoMcpCapabilities, carried on the existingMcpLifecycleBeginEx.capabilities.capabilities.elicitation.{url}from theinitializerequest (bare
elicitationimplies form) and stamps the bits on the lifecyclebegin instead of a fixed capability set; it now echoes the negotiated protocol
version in the
initializeresponse instead of always responding with the latest.capabilitiesback to the upstream from the bits,emitting
elicitation.urlonly when the north client advertised it; the cachehydrater advertises no client capabilities.
The proxy already propagates the lifecycle capabilities north-to-south, so url-mode
elicitation is gated per-side: the south advertises
urlonly when the north clientsupports it.
Notes
Independent binding-mcp enablement, off
develop(after the example-branch extractions#1812 / #1814 / #1816 / #1818). Precursor to wiring the
mcp.proxyurl-elicitation demoon the rebased example branch (#1793).
Testing
./mvnw verify -pl specs/binding-mcp.spec,runtime/binding-mcp— binding-mcp ITs (193)lifecycle.initialize.elicitation.url,lifecycle.initialize.elicitation.form,lifecycle.initialize.negotiate.🤖 Generated with Claude Code