MCP channel notifications from Telegram plugin silently dropped (inbound broken, outbound works)
Resolved 💬 3 comments Opened Mar 27, 2026 by LenRipski Closed Mar 30, 2026
Summary
The Telegram plugin (v0.0.4) successfully receives messages from Telegram (typing indicator fires, gate passes), calls mcp.notification({ method: 'notifications/claude/channel', ... }), but the notification never surfaces in the Claude Code conversation. Outbound tool calls (reply, react, edit_message) work perfectly.
Environment
- Claude Code v2.1.85
- macOS (Darwin 25.3.0)
- Plugin: telegram@claude-plugins-official v0.0.4
- Transport: StdioServerTransport
Steps to reproduce
- Install the Telegram plugin from the official marketplace
- Configure bot token and add a user to the allowlist in access.json
- Send a message from the allowlisted Telegram user to the bot
- Observe: typing indicator appears (bot receives message, gate passes), but the message never appears in the Claude Code conversation
What we verified
- Single plugin process running (no duplicate/zombie processes)
- Bot token valid (getMe returns clean)
- User on allowlist (gate returns action: 'deliver')
- 409 on manual getUpdates confirms process holds polling lock
- Outbound MCP tool calls succeed (reply sends messages)
- Server declares
experimental: { 'claude/channel': {} }capability correctly mcp.notification()call at server.ts:925 fires (typing indicator at line 908 proves code reaches that point)- The .catch() at line 945 does not appear to fire (no stderr output)
Expected behavior
Messages should appear in the conversation as <channel source="telegram" ...> tags.
Actual behavior
Messages are silently dropped. The notification goes over stdio but Claude Code does not surface it.
Workaround
None currently. Restarting Claude Code, killing processes, and re-pairing have been attempted 17+ times across multiple sessions with no change in behavior.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗