Progress Notifications Not Working in ChatGPT (MCP TS SDK 1.20.0)

I’m trying to implement progress notifications in a stateless MCP server using the TypeScript SDK(1.20.0). During testing, I found some important differences between the behavior in MCP Inspector and ChatGPT, and I need clarification on whether ChatGPT actually supports progress notifications at this time.

Using MCP Inspector:

  • Progress notifications work correctly

  • Inspector automatically sends a progressToken for each tool request

  • This token is available on the server via context._meta.progressToken

  • Since the token exists, the server can send:

{
  "method": "notifications/progress",
  "params": {
    "progressToken": "...",
    "progress": 5,
    "total": 10
  }
}

and Inspector receives and displays the updates in real time.

So the overall flow works correctly in MCP Inspector.

When the same MCP server is connected to ChatGPT:

  • ChatGPT does not send a progressToken with tool requests

  • Because no token is present, the server cannot associate outgoing progress notifications with any active request.

  • As a result, ChatGPT does not display progress updates (assumption, since no token = no mapping).

Does ChatGPT currently support progress notifications in MCP tools?
If not:

  1. Is progress-token support planned for ChatGPT?

  2. Is there any workaround for long-running tools (e.g., 2–3 minutes) without the connection being closed by ChatGPT?

Progress notifications work perfectly in MCP Inspector, so I want to understand whether ChatGPT’s lack of a progressToken is intentional, temporary, or a missing feature.

Hey @piyush_jaiswal, We reviewed your request and can confirm that progress notification is not a supported feature yet and we do not have a timeline to share for its implementation. Furthermore, In regards to a workaround for long running tool you can try creating the task quickly (return a CreateTaskResult) so ChatGPT / the model host does not keep a single connection open waiting for a 2–3 minute tool run. Then (a) provide an immediate short result or placeholder to the model if useful, (b) use the task ID + tasks/result polling (or tasks/list) to fetch the final result later, and (c) optionally send notifications/progress updates tied to the same task/progress token while the work runs. This is the MCP-specified pattern for long runs and is the supported workaround for avoiding connection timeouts. You can refer to the documentation here. Thank you!

1 Like