Skip to content

Enable full HTTP elicitation support after SDK streaming API is available #3228

@olaservo

Description

@olaservo

Summary

The simulate-research-query tool in the Everything Server currently implements graceful degradation for elicitation on HTTP transport. When running over HTTP, elicitation attempts fail and the task uses a default interpretation instead of prompting the user.

This is because the SDK's sendRequest doesn't work for elicitation over HTTP - the connection is closed after the initial CreateTaskResult response.

Background

The SDK's streaming elicitation API (elicitInputStream) enables elicitation over HTTP by creating a new SSE stream. Once this is available in a released SDK version, we can upgrade to full HTTP elicitation support.

Changes needed

  1. Update @modelcontextprotocol/sdk dependency to version with streaming elicitation
  2. Replace try-catch sendRequest pattern with streaming API in simulate-research-query.ts
  3. Follow spec-compliant pattern:
    • Set input_required status before elicitation (spec SHOULD)
    • Use streaming elicitation (works over HTTP)
    • Transition back to working after receiving input (spec SHOULD)

Current behavior

Transport Elicitation Task Completion
STDIO ✅ Works ✅ Works
HTTP ❌ Graceful degradation ✅ Works (uses default)

Target behavior

Transport Elicitation Task Completion
STDIO ✅ Works ✅ Works
HTTP ✅ Works (via streaming) ✅ Works

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions