Skip to content

feat(binding-mcp): offer 2025-11-25 and negotiate elicitation url capability - #1820

Merged
jfallows merged 2 commits into
developfrom
feature/1819-binding-mcp-protocol-version-elicitation-url
Jun 2, 2026
Merged

feat(binding-mcp): offer 2025-11-25 and negotiate elicitation url capability#1820
jfallows merged 2 commits into
developfrom
feature/1819-binding-mcp-protocol-version-elicitation-url

Conversation

@jfallows

@jfallows jfallows commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Description

Enable url-mode elicitation (SEP-1036) to flow through the mcp proxy by offering
MCP protocol 2025-11-25 and negotiating the elicitation.url client capability,
so the south client advertises it to upstreams only when the originating north client
supports it.

Closes #1819.

Changes

Two commits:

  1. feat: offer MCP protocol version 2025-11-25 — bump the offered version from
    2025-06-18 to 2025-11-25 across the two factories and the spec scripts; per-side
    down-negotiation to an older peer is preserved.
  2. feat: negotiate elicitation client capability
    • mcp.idl: add CLIENT_ELICITATION_FORM and CLIENT_ELICITATION_URL to
      McpCapabilities, carried on the existing McpLifecycleBeginEx.capabilities.
    • north server parses capabilities.elicitation.{url} from the initialize
      request (bare elicitation implies form) and stamps the bits on the lifecycle
      begin instead of a fixed capability set; it now echoes the negotiated protocol
      version in the initialize response instead of always responding with the latest.
    • south client serializes 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-mode
elicitation is gated per-side: the south advertises url only when the north client
supports it.

Notes

Independent binding-mcp enablement, off develop (after the example-branch extractions
#1812 / #1814 / #1816 / #1818). Precursor to wiring the mcp.proxy url-elicitation demo
on the rebased example branch (#1793).

Testing

./mvnw verify -pl specs/binding-mcp.spec,runtime/binding-mcp — binding-mcp ITs (193)

  • spec NetworkIT/ApplicationIT peer ITs (179) green; checkstyle clean. New scenarios:
    lifecycle.initialize.elicitation.url, lifecycle.initialize.elicitation.form,
    lifecycle.initialize.negotiate.

🤖 Generated with Claude Code

jfallows and others added 2 commits June 2, 2026 16:28
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>

@jfallows jfallows left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

LGTM

@jfallows
jfallows merged commit b8e5993 into develop Jun 2, 2026
2 of 3 checks passed
@jfallows
jfallows deleted the feature/1819-binding-mcp-protocol-version-elicitation-url branch July 1, 2026 23:06
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.

binding-mcp: offer MCP 2025-11-25 + negotiate elicitation.url capability to enable url-mode elicitation

1 participant