subscriptions/listen.
There is no session-targeted or arbitrary post-response push channel. Keep
custom status notifications inside the tool, resource, or prompt callback that
owns the active response stream.
Choose the notification path
Notify the current client
Usectx.sendNotification(method, params?) inside a callback. It preserves the
v1 method-and-params signature while using the official v2 request notification
channel.
Use an application namespace for custom methods so clients can route them
without colliding with standard MCP notifications.
Publish list and resource changes
Cross-request invalidations use the server’s subscription-backed helpers. Only clients with an activesubscriptions/listen request for the corresponding
notification type receive them.
Report progress
Usectx.reportProgress when the current request has stages the client should
see. It returns false without sending anything when the caller did not supply
a progress token.
Send an MCP log message
ctx.sendLog(level, data, logger?) sends the standard
notifications/message notification on the active request. Modern clients
must opt in with a request log level; otherwise the SDK suppresses the message.
Next steps
Tool context API reference
Look up
ctx.sendNotification, ctx.reportProgress, and ctx.sendLog.Resource subscriptions
Notify clients that subscribed resource content changed.
Client notifications
Handle standard and custom notifications in a TypeScript MCP client.