Telegram channel MCP notifications not surfaced in conversation

Resolved 💬 5 comments Opened Mar 23, 2026 by anthony-potts Closed Apr 12, 2026

Description

Inbound Telegram messages are received by the Telegram channel MCP server and mcp.notification() resolves successfully, but the messages are never injected into the active Claude Code conversation as <channel> tags.

Environment

  • Claude Code version: 2.1.81
  • OS: macOS (Darwin 24.6.0)
  • Plugin: claude-plugins-official/telegram v0.0.1
  • Runtime: Bun

Steps to Reproduce

  1. Configure the Telegram channel plugin with a valid bot token and allowlisted user ID
  2. Start a Claude Code session
  3. Send a message to the bot from the allowlisted Telegram account
  4. Observe that no <channel source="telegram"> tag appears in the conversation

Observed Behavior

  • The bot receives the message (confirmed via grammY polling)
  • The access gate passes (gate result=deliver)
  • mcp.notification({ method: 'notifications/claude/channel', ... }) resolves without error
  • Debug logging confirms "notification sent successfully"
  • No <channel> tag ever appears in the Claude Code conversation
  • The bot's typing indicator shows in Telegram, confirming the message was processed

Expected Behavior

The notification should be surfaced in the conversation as a <channel source="telegram" chat_id="..." message_id="..." user="..." ts="..."> tag, allowing Claude to read and reply to the message.

Additional Context

  • Outbound replies via the reply tool work correctly — messages sent from Claude reach Telegram
  • Only one bot process is running (no duplicate consumer / 409 conflict)
  • The MCP server declares experimental: { 'claude/channel': {} } capability
  • Tested across multiple session restarts — same behavior

Debug Log (excerpt)

[timestamp] gate result=deliver from=<user_id> chat=<chat_id>
[timestamp] sending notification chat_id=<chat_id> text=okay, how about now?
[timestamp] notification sent successfully

View original on GitHub ↗

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