feat(everything): add URL elicitation example (SEP-1036)#3895
feat(everything): add URL elicitation example (SEP-1036)#3895JosephDoUrden wants to merge 1 commit intomodelcontextprotocol:mainfrom
Conversation
Add a trigger-url-elicitation-request tool to the Everything server that demonstrates SEP-1036 URL Elicitation. The tool sends an elicitation/create request with mode "url", asking the client to navigate the user to an external URL for out-of-band interaction (e.g., third-party OAuth authorization). The tool is conditionally registered only when the client declares elicitation.url capability, consistent with existing elicitation tools. Closes modelcontextprotocol#3034
olaservo
left a comment
There was a problem hiding this comment.
Clean implementation — follows the existing elicitation tool pattern exactly. The capability check and conditional registration are correct.
Two suggestions:
- Can you verify the
elicitationIdfield is part of the SEP-1036 spec? If it's not a recognized field, it might be worth removing to avoid confusion. - A basic test that verifies the tool is registered when the
elicitation.urlcapability is present (and not registered when absent) would be a nice addition, though not blocking.
This review was assisted by Claude Code.
|
@claude review |
|
Claude finished @cliffhall's task in 1m 45s —— View job PR Review: feat(everything): add URL elicitation example (SEP-1036)
Overall this is a clean, correct implementation of SEP-1036 URL elicitation that follows the repo's existing patterns well. A few things to call out: Spec alignment:
|
| Spec correctness | ✅ elicitationId is required and correctly generated |
| Capability gating | ✅ Correctly checks elicitation.url sub-capability |
| Response handling | ✅ All three actions handled correctly |
| Completion notification | |
| Test coverage |
The implementation is sound and spec-compliant. The completion notification and tests are the main items worth addressing before merge.
Summary
Add a
trigger-url-elicitation-requesttool to the Everything server that demonstrates SEP-1036 URL Elicitation — the newurlmode for secure out-of-band interactions.Closes #3034
What is URL Elicitation?
SEP-1036 extends MCP elicitation with a
urlmode for scenarios where sensitive data (credentials, payment info) must not transit through the MCP client:The server sends
elicitation/createwithmode: "url", and the client navigates the user to the specified URL. The actual interaction happens out-of-band in the browser.Changes
src/everything/tools/trigger-url-elicitation-request.ts: New tool that sends a URL elicitation request with an example GitHub OAuth URLsrc/everything/tools/index.ts: Register the tool inregisterConditionalTools(only when client declareselicitation.urlcapability)Design
Follows the same pattern as the existing
trigger-elicitation-requesttool:elicitation.url)ElicitResultSchemafor response validationTest plan
npx tsc --noEmit)npx vitest run)AI Disclosure
AI assistance (Claude) was used for issue research and understanding SEP-1036. The implementation was written and reviewed by the author.