Implement SEP-1036: URL mode elicitation for secure out-of-band interactions #1580
+498
−12
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.
Summary
This PR implements SEP-1036 (URL mode elicitation) as specified in modelcontextprotocol/specification#887, adding support for secure out-of-band interactions that bypass the MCP client.
Note
SEP 1036 is currently Pending, so this feature should be considered experimental
Key Changes
Type System (
src/mcp/types.py):ELICITATION_REQUIREDerror code (-32000)ElicitationCapabilityto support bothformandurlmodesElicitTrackRequestandElicitTrackResultfor progress trackingUrlElicitationInfoandElicitationRequiredErrorDatatypesElicitRequestParamswithmodefield and URL mode parametersServer Implementation (
src/mcp/server/):elicit_url()helper function for URL mode elicitationelicit_form()andelicit_url()methods toServerSessionelicit()methodClient Implementation (
src/mcp/client/session.py):track_elicitation()method for monitoring URL mode progressTests (
tests/server/fastmcp/test_url_elicitation.py):Use Cases Enabled
This implementation enables servers to:
Breaking Changes
ElicitRequestParamsnow requires amodefield ("form" or "url")Testing
Related