MCP notifications/claude/channel notifications not delivered to session (Telegram plugin)

Resolved 💬 6 comments Opened Mar 20, 2026 by shersingh7 Closed May 5, 2026

Bug Description

MCP notifications with method notifications/claude/channel are not being delivered to the Claude Code session, even though the notification is sent successfully by the MCP server.

Evidence

I have confirmed through debugging that:

  1. MCP notification is sent successfully - Log shows:

``
2026-03-20T21:06:23.419Z attempting notification for chat_id=1618126757, text="Can u see this Monsieur..."
2026-03-20T21:06:23.422Z notification sent successfully
``

  1. MCP connection is working - Outbound MCP tools (reply, react, edit_message) work correctly. I can send messages TO Telegram.
  1. MCP server is properly connected - Process tree confirms the MCP server is a child of the Claude Code process.
  1. Inbound notifications are NOT delivered - The <channel source="telegram"> messages never appear in the session, despite the notification being sent.

Technical Details

Environment

  • Claude Code version: 2.1.80
  • Telegram plugin version: 0.0.1
  • MCP SDK version: 1.27.1
  • OS: macOS (Darwin 25.3.0)

MCP Server Configuration

{
  "mcpServers": {
    "telegram": {
      "command": "bun",
      "args": ["run", "--cwd", "...", "--shell=bun", "--silent", "start"]
    }
  }
}

Server Capabilities Declaration

capabilities: {
  tools: {},
  experimental: { 'claude/channel': {} }
}

Notification Format

mcp.notification({
  method: 'notifications/claude/channel',
  params: {
    content: text,
    meta: {
      chat_id: string,
      message_id: string,
      user: string,
      user_id: string,
      ts: string
    }
  }
})

Process Tree (confirmed MCP server is child of Claude Code)

claude --model glm-5:cloud (PID 37304)
└── bun run ... start (PID 37312)
    └── bun server.ts (PID 37317)

Debug Log

2026-03-20T21:06:23.419Z attempting notification for chat_id=1618126757, text="Can u see this Monsieur..."
2026-03-20T21:06:23.422Z notification sent successfully

Expected Behavior

When the MCP server sends a notifications/claude/channel notification, Claude Code should deliver the message content to the session as a <channel source="telegram"> message, as documented in the plugin's instructions.

Actual Behavior

The notification is written to stdout by the MCP server (confirmed by "notification sent successfully" log), but Claude Code does not process/forward the notification. The session never receives the <channel> message.

Additional Context

  • The Telegram plugin is installed and enabled via enabledPlugins in settings.json
  • Outbound MCP tools work correctly (reply, react, edit_message)
  • The MCP server uses StdioServerTransport (stdin/stdout)
  • User sees "typing..." indicator in Telegram (bot receives messages and processes them)
  • Only inbound channel notifications fail

Possible Root Cause

Claude Code may not have a handler registered for the notifications/claude/channel notification type. The MCP SDK's _onnotification method silently ignores notifications without handlers:

_onnotification(notification) {
    const handler = this._notificationHandlers.get(notification.method) ?? this.fallbackNotificationHandler;
    // Ignore notifications not being subscribed to.
    if (handler === undefined) {
        return;
    }
    // ...
}

Steps to Reproduce

  1. Install telegram plugin: /plugin install telegram@claude-plugins-official
  2. Configure bot token: /telegram:configure <token>
  3. Enable plugin in settings.json: "enabledPlugins": { "telegram@claude-plugins-official": true }
  4. Start session with MCP config or enabled plugin
  5. Send a message to the Telegram bot
  6. Observe: Bot sends "typing..." but notification never arrives in session

Workaround

None currently. Outbound messages work, but inbound messages cannot be received.

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗