Telegram channel plugin: inbound MCP notifications not surfaced in conversation

Resolved 💬 3 comments Opened Mar 23, 2026 by PotluckProtocol Closed Mar 27, 2026

Bug

The Telegram channel plugin (telegram@claude-plugins-official v0.0.1) sends MCP notifications via notifications/claude/channel on inbound messages, but Claude Code (v2.1.81) never surfaces them as <channel> tags in the conversation.

Symptoms

  • Outbound works: calling the reply MCP tool successfully delivers messages to Telegram
  • Inbound broken: when a user sends a message to the bot on Telegram:
  • The bot receives the message (confirmed via typing indicator appearing in Telegram)
  • The server logs sending notification and notification sent OK to stderr
  • Claude Code never receives the <channel source="telegram" ...> tag — the message is silently swallowed
  • The model cannot respond because it never sees the inbound message

Environment

  • Claude Code: 2.1.81
  • Plugin: telegram@claude-plugins-official v0.0.1 (gitCommitSha: b664e152af5742dd11b6a6e5d7a65848a8c5a261)
  • Platform: Windows 11 Pro (10.0.26200)
  • Runtime: bun
  • Launch command: claude --dangerously-skip-permissions --channels plugin:telegram@claude-plugins-official

Investigation done

  1. Bot token is valid (getMe returns successfully)
  2. No webhook is set (getWebhookInfo returns empty URL)
  3. access.json is correctly configured with the user's ID on the allowlist
  4. Killed duplicate bun processes (two instances were competing for long polling) — did not fix the issue
  5. Confirmed only one bun server.ts process remains, owned by the current session
  6. Plugin server code at line 593 calls mcp.notification() with method notifications/claude/channel — the promise resolves successfully (no error)
  7. The MCP server declares experimental: { 'claude/channel': {} } in its capabilities

Likely cause

Claude Code's MCP client either:

  • Does not subscribe to / handle notifications/claude/channel notifications from channel plugins
  • Handles them but does not inject them into the conversation context as <channel> tags

The plugin side appears to be working correctly — the notification is sent and resolves without error. The gap is between the MCP notification being received by Claude Code and it appearing in the model's conversation.

Workaround

Direct outbound messages work (calling reply tool with the user's chat_id). Users can type messages in the CLI and have them relayed to Telegram, but the bidirectional channel flow is broken.

View original on GitHub ↗

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