Telegram plugin: notifications/claude/channel MCP notifications silently dropped
Bug Report
Claude Code version: 2.1.81 (latest as of 2026-03-23)
Plugin: telegram@claude-plugins-official v0.0.1
OS: macOS (Darwin 25.3.0)
Description
The Telegram plugin's MCP server successfully receives inbound messages from Telegram and sends notifications/claude/channel MCP notifications, but Claude Code silently drops them — they never appear in the conversation.
Steps to Reproduce
- Install the telegram plugin:
/plugin install telegram@claude-plugins-official - Configure bot token via
/telegram:configure <token> - Pair a Telegram account via
/telegram:access pair <code> - Lock down access:
/telegram:access policy allowlist - Send a message to the bot on Telegram
- Message never appears in the Claude Code conversation
Debugging Done
Added debug logging to server.ts. The log confirms the full pipeline works on the bot side:
[2026-03-23T04:15:20.359Z] === server starting ===
[2026-03-23T04:15:21.121Z] polling started as @lovelyjoy_claude_bot
[2026-03-23T04:15:29.779Z] handleInbound: text="你运行在什么样的一个系统上", from=5579203735, gate=deliver
[2026-03-23T04:15:29.779Z] sending MCP notification: chat_id=5579203735, user=jefinsocal, text="你运行在什么样的一个系统上"
[2026-03-23T04:15:29.780Z] MCP notification sent OK
- Bot long-polling: ✅ working (confirmed via 409 Conflict on manual
getUpdates) - Gate/allowlist check: ✅ passing
- MCP notification send: ✅ no error thrown
- Outbound
replytool: ✅ works (can send messages TO Telegram) - Inbound notification surfacing: ❌ never appears in conversation
Expected Behavior
Messages from Telegram should appear in the conversation as <channel source="telegram" ...> blocks, as described in the MCP server instructions.
Actual Behavior
The notifications/claude/channel notification is sent successfully by the MCP server but Claude Code does not surface it to the conversation. No error is logged on either side.
Environment Notes
- Network: Behind Clash Verge proxy (required — Telegram is blocked by GFW)
- Proxy works correctly for both polling and API calls
/reload-pluginsdoes not always restart the MCP server process (old PID persists); manualkill+ reload is needed
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗