Telegram plugin: notifications/claude/channel not surfacing in conversation

Resolved 💬 3 comments Opened Mar 25, 2026 by praveshkhatana Closed Mar 29, 2026

Description

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

Environment

  • Claude Code version: 2.1.83 (latest as of 2026-03-25)
  • OS: Linux 6.17.0-19-generic (Ubuntu)
  • MCP SDK: @modelcontextprotocol/sdk v1.27.1
  • Bun: v1.3.11
  • Plugin: claude-channel-telegram v0.0.1

Steps to Reproduce

  1. Install the Telegram plugin via /plugin install telegram@claude-plugins-official
  2. Configure bot token via /telegram:configure
  3. Pair a Telegram user (user ID added to allowFrom in access.json)
  4. Start a Claude Code session — plugin spawns as child process (confirmed via ps — correct parent PID, stdio piped via sockets)
  5. Send a message from Telegram to the bot

Expected Behavior

The Telegram message should appear in the Claude Code conversation as a <channel source="telegram" ...> block.

Actual Behavior

The message never appears. Claude Code does not surface the notification.

Debugging Done

  • Bot token is validgetMe returns @claude_pixo_bot
  • No webhook set — long polling works
  • Bot receives messages — confirmed via direct getUpdates API call
  • Plugin receives messages — confirmed via debug logging (process.stderr.write before/after mcp.notification())
  • MCP notification is sent successfullymcp.notification() resolves without error, and the JSON-RPC message is written to stdout:

``json
{"method":"notifications/claude/channel","params":{"content":"Hello 👋","meta":{"chat_id":"8376514788","message_id":"32","user":"8376514788","user_id":"8376514788","ts":"2026-03-25T15:22:52.000Z"}},"jsonrpc":"2.0"}
``

  • MCP tools workmcp__plugin_telegram_telegram__reply successfully sends messages TO the user
  • Plugin is child of Claude process — confirmed via /proc/<pid>/status (PPid matches Claude PID), stdio FDs are sockets
  • No 409 conflict (after clearing) — plugin logs polling as @claude_pixo_bot without errors
  • Server declares capabilityexperimental: { 'claude/channel': {} } is set in MCP server capabilities
  • No other bot consumers — OpenClaw on the same system uses a different bot token

Conclusion

The MCP transport is delivering the notification from the plugin to Claude Code, but Claude Code's MCP client is not processing notifications/claude/channel into a conversation message. Outbound tool calls work; inbound notifications do not.

View original on GitHub ↗

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