Why does progressToken exist?
#533
Replies: 1 comment
-
|
This is a sharp observation — you have identified real surface-level redundancy between 1. Separation of concerns: routing vs progress
These are different lifecycle patterns. Conflating them into 2. Implementation flexibilityThe spec intentionally does not mandate that
If the spec hard-coded "progressToken is always requestId," all of these patterns would break. 3. Security boundaryIn multi-tenant or proxied MCP deployments, the Your workaround is correctThat said: using The spec allows the separation because it was designed for a broader range of deployments than just "one client, one server, one process." In your case, |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Pre-submission Checklist
Question Category
Your Question
Working through the specification and the concept of a
progressTokenis confusing me. Mechanically I fully understand it and how to use it. My confusion relates to why it's even a distinct thing. It's only relevant when sending a Request, has to be unique across all Active Requests, and there's only one per Request. Why not simply userequestIdand a flag in_metaindicating a desire to receive progress tracking? ArequestIdhas stricter requirements and there's already precedent in the spec for usingrequestIdin a notification with request cancellations. As it is, it's adding an extra level of tracking/routing where I have to match up the incoming notification to a request by thatprogressTokeninstead of simply by therequestId. It's extra complexity for no obvious reason.Now that I have understood this, I'll simply be using
requestIdas aprogressTokenin my code. It'll make the Requestor code simpler as they don't need a more complicated lookup to route progress notifications. Obviously I can't do anything about the Processor code unless the spec gets updated in the future.Beta Was this translation helpful? Give feedback.
All reactions