MCP Progress Reporting not behaving as expected

Describe the Bug

Hi there,

After recent release notes suggested that progress tokens are now supported for MCP servers, I’m testing progress monitoring with a local MCP server. I have a throwaway tool which reports progress in 3 phases.

Unfortunately, I can’t get any progress to show in the UI. Logs suggest that progress is being reported, but I guess I assumed there would be some handling of this in the actual agent UI.

Is this a misunderstanding on my part? Are there any other sanctioned strategies to handle long-running MCP tools?

Steps to Reproduce

  • Implement progress monitoring / handling for an MCP server
  • Have the cursor agent call one of those tools

Expected Behavior

Expected to see some UI representation of the progress being reported

Operating System

MacOS

Current Cursor Version (Menu → About Cursor → Copy)

Version: 1.3.7
VSCode Version: 1.99.3
Commit: 5d56108ff2401c28f239aa2a527ef424ce7719a0
Date: 2025-07-31T04:04:35.474Z (1 day ago)

Does this stop you from using Cursor

No - Cursor works, but with this issue

1 Like

Hi @macebake and welcome to Cursor Forum.

Thank you for the bug report.

Could you post a Request ID with privacy disabled so we can look into the details? Cursor – Getting a Request ID

Hey @condor, unfortunately I can’t disable privacy mode as I’m on a business plan.

Short of debugging my specific request, can you let me know if I’m misunderstanding the way progress tokens are meant to work in Cursor? Should there be a UI component when the agent calls an MCP tool that reports progress? I’m referencing these FastMCP docs for my implementation of progress reporting. Very possible there’s just an issue with my implementation.

I am looking internally for more info to share :slight_smile:

1 Like

Cursor supports progress notifications from MCP servers.

When your MCP tool is performing long-running operations, you can send progress updates that will be displayed in the Cursor UI.

What Users See
When an MCP tool is running in Cursor’s Chat, progress updates appear next to the tool name showing current / total (e.g., 25 / 100 or 10 / ? if total is unknown).

How to Implement in Your MCP Server
When handling a tool call request, check for the progressToken in the request’s _meta field. Use this token to send progress notifications back to Cursor:

// In your tool handler
const progressToken = request.params._meta?.progressToken;

// Send progress updates
if (progressToken) {
  await server.notification({
    method: "notifications/progress",
    params: {
      progressToken: progressToken,
      progress: 25,      // Current progress
      total: 100        // Total (optional)
    }
  });
}

This topic was automatically closed 22 days after the last reply. New replies are no longer allowed.