Surface MCP server notifications/message as conversation interjections

Resolved 💬 1 comment Opened May 1, 2026 by swensonhcp-sift Closed May 31, 2026

Summary

MCP servers can send unsolicited notifications/message to clients at any time via the standard MCP protocol. Claude Code currently does not surface these as conversation messages/interjections, which means server-push patterns (watchers, background jobs, progress updates) are invisible to the user when using Claude Code as the MCP client.

Use case

We built a watch_notebook tool on a Snowflake Snowsight Notebook MCP server. The tool:

  1. Captures a baseline notebook state
  2. Spawns a background Tokio task that polls for changes
  3. On each change, calls peer.send_notification(ServerNotification::from(LoggingMessageNotification {...})) — fully standard MCP notifications/message
  4. Returns immediately to the caller

This works correctly for any MCP client that handles notifications/message. In Claude Code, the tool returns immediately (✅) but the subsequent notifications are silently dropped — the user never sees the change events.

Expected behavior

When an MCP server sends a notifications/message, Claude Code should inject it into the active conversation, similar to how <task-notification> tags surface background bash task completions today. The notification level (info, warning, error) could map to visual treatment.

Current workaround

None within Claude Code. The only alternative is writing to a log file and running a separate bash background task to poll it — which defeats the purpose of having a push-capable MCP server.

References

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗