Telegram plugin: MCP channel notifications not delivered to conversation

Resolved 💬 4 comments Opened Mar 22, 2026 by Crispydug Closed Apr 23, 2026

Bug Description

The Telegram plugin (plugin:telegram@claude-plugins-official) successfully receives inbound messages and sends MCP notifications/channel/message via stdio, but Claude Code does not surface these notifications to the active conversation.

Environment

  • Claude Code version: 2.1.81
  • Platform: macOS (Darwin 25.3.0)
  • Launch command: claude --channels plugin:telegram@claude-plugins-official
  • Plugin version: 0.0.1 (from ~/.claude/plugins/cache/claude-plugins-official/telegram/0.0.1)

Steps to Reproduce

  1. Configure Telegram plugin with valid bot token and access.json (allowlist policy with authorized user ID)
  2. Start Claude Code with claude --channels plugin:telegram@claude-plugins-official
  3. Verify outbound works: use reply tool to send a message to Telegram — succeeds
  4. Send a message FROM Telegram TO the bot
  5. Observe: message never appears in the Claude Code conversation

Evidence

Debug logging added to the plugin's server.ts confirms:

2026-03-22T19:44:57.823Z gate result: deliver for sender=6304339334 text=hello
2026-03-22T19:44:57.830Z notification SENT OK for: hello
2026-03-22T19:46:43.754Z gate result: deliver for sender=6304339334 text=can yuo see this
2026-03-22T19:46:43.761Z notification SENT OK for: can yuo see this

The plugin:

  • Receives the Telegram update via long-polling ✅
  • Passes the access control gate (allowlist check) ✅
  • Sends notifications/channel/message via MCP stdio transport ✅
  • Claude Code does NOT surface the notification to the conversation ❌

Additional Context

  • The StdioServerTransport in @modelcontextprotocol/sdk writes notifications directly to stdout
  • The MCP SDK client silently drops notifications without registered handlers (protocol.js_onNotification returns early if no handler exists)
  • This suggests Claude Code's MCP client may not be registering a handler for notifications/channel/message

Expected Behavior

Inbound Telegram messages should appear in the conversation as <channel source="telegram" ...> blocks, enabling bidirectional communication.

Actual Behavior

Only outbound messaging works. Inbound messages are received by the plugin and sent as MCP notifications but never surface in the conversation.

View original on GitHub ↗

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