Skip to content

input_required not being handled correctly #1073

Closed

Description

@Randgalt

Inspector Version

v0.19.0

Describe the bug

We have a server that implements a task. When we run we set the status to input_required. The Inspector then goes into a status/list/status/list infinite loop. It never attempts to get the task result for the required input.

To Reproduce

Write a server tool that tries to send an ElicitRequest as a task input_required

Expected behavior

Inspector should try to get task result to get the ElicitRequest.

Screenshots

Image Image Image

Environment (please complete the following information):

  • OS: MacOS
  • Browser Safari

Additional context

n/a

Version Consideration

Inspector V2 is under development to address architectural and UX improvements. During this time, V1 contributions should focus on bug fixes and MCP spec compliance. See CONTRIBUTING.md for more details.

Activity

  1. cliffhall commented on Feb 6, 2026

    @cliffhall
    Member

    Hi @Randgalt

    I think there's a disconnect. Looks like you're running 0.19.0. The PR we're testing is on 0.20.0.

    Maybe you're not running the PR branch I linked to.

    If you are, then I think perhaps your tool should have execution.taskSupport === "forbidden" because the tool itself isn't going to be run as a task, it is going to start a task on the client.

    The presence of the "Run as Task" button in your screenshot is a giveaway that either you're not on my branch OR your tool is not configured correctly.

    The Everything server has a tool that starts a client side task called trigger-sampling-request-async. Let's test with it.

    Try this

    1. Run the Everything server npx @modelcontextprotocol/server-everything@latest streamableHttp
    2. Run the Inspector from this branch
    3. Click Connect
    4. Click List Tools
    5. Scroll down list and click "trigger-sampling-request-async" tool in list
    6. Enter "Hello" in prompt field
    7. Note "Run as Task" checkbox is not present
    8. Click "Run Tool"
    9. See you're on the Elicitation screen
    10. Enter "goodbye" in the text field of the elicitation form
    11. Click Submit
    12. See you're back on the Tool screen and the tool completed
    13. Look at the Server History pane, it is newest on top
    14. There is a tool/call with success at the top
    15. Next there is a notifications/tasks/status with completed
    16. Next there is a notifications/tasks/status with input_required

    What you should see

    Screen.Recording.2026-02-06.at.6.06.43.PM.mov
  2. Randgalt commented on Feb 6, 2026

    @Randgalt
    Author

    Let me see if I understand correctly. We have a tool, called "task" that wishes to run as a task on our server. So we set the execution.taskSupport to required. Am I not understanding how this works?

    {
          "name": "task",
          "description": "Test task with elicitation",
          "inputSchema": {
            "type": "object",
            "properties": {},
            "required": [],
            "$schema": "https://json-schema.org/draft/2020-12/schema",
            "description": "Test task with elicitation"
          },
          "annotations": {},
          "execution": {
            "taskSupport": "required"
          }
        }

    Note this is what we return for the tools/call result:

    {
      "content": [],
      "task": {
        "createdAt": "2026-02-06T23:30:47.576226Z",
        "lastUpdatedAt": "2026-02-06T23:30:47.576226Z",
        "pollInterval": 100,
        "status": "working",
        "taskId": "e14b50b5fe9c4072ba00f97c9629ceaa",
        "ttl": 3600000
      }
    }
  3. cliffhall commented on Feb 7, 2026

    @cliffhall
    Member

    Ok, gotcha. We have an Everything server tool with a mode that is meant to test this use case, but it seems not to send the actual elicitation request. We'll get that sorted so we can more properly test the scenario. But are you certain that your server has sent the elicitation request? You said it sent a task status of input_required but didn't mention if elicitation request was sent.

  4. Randgalt commented on Feb 7, 2026

    @Randgalt
    Author

    You said it sent a task status of input_required but didn't mention if elicitation request was sent.

    As I understand the protocol the ElicitRequest is returned when the client calls task/result which it is meant to do when the status becomes input_required. I’ve tested this with the pending Java client implementation and it works.

    With the Inspector we never get the task/result call.

  5. cliffhall commented on Feb 7, 2026

    @cliffhall
    Member

    @Randgalt try with STDIO.
    In trying the Everything Server's "Simulate Research Query" tool which tests elicitation request generated from a server task, I was seeing:

    Image

    Getting into the code I found the note @olaservo had left about the gap. The Typescript SDK doesn't support this for anything but STDIO at the moment.

    Image

    Tried it with STDIO and it works fine.

    stdio-elicitation.mov
  6. Randgalt commented on Feb 7, 2026

    @Randgalt
    Author

    Ok. Our server is HTTP/SSE only. Will wait for that PR

  7. cliffhall commented on Feb 7, 2026

    @cliffhall
    Member

    Ok. Our server is HTTP/SSE only. Will wait for that PR

    I've pinged the TS SDK team about it. The PR has been outstanding since December. They're in the process of creating a V2 SDK and so V1 isn't getting quite as much attention as it was before. But this is a spec compliance matter, so I think it'll get tended.

  8. galagaevdc commented on Apr 3, 2026

    @galagaevdc
    Contributor

    I've prepared the fix for this issue in PR #1174

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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