Telegram plugin: notifications/claude/channel not surfacing in conversation
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/sdkv1.27.1 - Bun: v1.3.11
- Plugin:
claude-channel-telegramv0.0.1
Steps to Reproduce
- Install the Telegram plugin via
/plugin install telegram@claude-plugins-official - Configure bot token via
/telegram:configure - Pair a Telegram user (user ID added to
allowFrominaccess.json) - Start a Claude Code session — plugin spawns as child process (confirmed via
ps— correct parent PID, stdio piped via sockets) - 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 valid —
getMereturns@claude_pixo_bot - No webhook set — long polling works
- Bot receives messages — confirmed via direct
getUpdatesAPI call - Plugin receives messages — confirmed via debug logging (
process.stderr.writebefore/aftermcp.notification()) - MCP notification is sent successfully —
mcp.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 work —
mcp__plugin_telegram_telegram__replysuccessfully 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_botwithout errors - Server declares capability —
experimental: { '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.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗