A notification omits the `id` field, making it fire and forget with no response. MCP uses notifications for initialized, list changed pushes, resource updates, progress reports, and cancellation.
Think about sending text messages. Some texts are questions that need a reply: 'are you free tomorrow?' Others are just announcements: 'leaving now, on my way.' Requests in JSON-RPC are like the questions. They have a tracking number so the answer can be matched back. Notifications are like the announcements. You send them, the other person reads them, and that is the end of it. No reply needed, no reply allowed. MCP uses both kinds. Asking 'what tools do you have' is a request that gets a response. Telling the server 'I finished setting up' or being told 'my tool list just changed' is a notification: one way, no reply, fire and forget.
Detailed answer & concept explanation~7 min readEverything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
4 min: define notifications structurally (no `id`) and semantically (fire and forget), name four or five MCP notification methods with what each signals, explain capability gating for list changed notifications, and close with progress token and cancellation correlation.
Real products, models, and research that use this idea.
- Claude Desktop sends `notifications/initialized` to each MCP server after the initialize response and only then issues `tools/list`, following the lifecycle sequence.
- A filesystem MCP server watching a directory emits `notifications/resources/updated` whenever a file changes; the host re reads the resource and can surface fresh content to the model on the next turn.
- A long running build tool emits `notifications/progress` with completion updates during a `tools/call`; the host renders a progress bar without polling.
- When a user cancels a tool call from the UI, the host emits `notifications/cancelled` with the original request's id so the server can stop work and release resources.
What an interviewer would ask next. Try answering before peeking at the approach.
QHow does `notifications/progress` correlate to the original request?
QWhat happens if `notifications/cancelled` and the original request's response cross in flight?
Don't say thisRed flags and common mistakes that signal junior thinking. Click to expand.
Red flags and common mistakes that signal junior thinking. Click to expand.
Expecting a response to a notification or trying to match it by `id`. Notifications have no `id` and never receive a reply; if you need confirmation, send a request instead.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.
Same topic, related formats. Practice these next.