io.github.antonio-castellon/mcp-telegram-bridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SAFETY_STRICT | No | When set to 1, true, yes, or on, enables strict inbound classification of updates for untrusted groups. Disabled by default. | |
| ALLOWED_CHAT_IDS | No | Comma-separated list of chat IDs the bot is allowed to send messages to. If empty, the bot can send to any chat it can see. Recommended for production use. | |
| TELEGRAM_BOT_TOKEN | Yes | Your Telegram bot token from @BotFather. Required to authenticate with the Telegram Bot API. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| telegram_get_meA | Return the bot identity (getMe). Useful as a connectivity check. |
| telegram_get_chatC | Fetch chat metadata (getChat) for a chat_id. |
| telegram_send_messageA | Send a text message. Outbound text is scrubbed for token-shaped secrets. Optional buttons=[{id,label}] become an inline keyboard. |
| telegram_edit_reply_markupA | Edit or clear inline buttons on an existing message. Pass buttons=null/omit to strip markup; or a new [{id,label}] list. |
| telegram_answer_callbackC | Acknowledge a callback_query (optional toast text / alert). |
| telegram_get_updatesA | Long-poll getUpdates. The agent owns the offset loop. When SAFETY_STRICT is enabled, each update is annotated with safety.{kind,blocked,warning}; otherwise inbound text is returned unchanged and is not classified. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool targets a distinct Telegram API endpoint: identity, chat info, sending messages, editing buttons, answering callbacks, and fetching updates. The only minor ambiguity is between send_message and edit_reply_markup since both handle buttons, but their purposes (new vs. existing message) are clearly different.
All tools follow a consistent 'telegram_' prefix followed by a verb_noun pattern (e.g., get_me, get_chat, send_message). The naming is predictable and consistent across the entire set.
With 6 tools, the server covers the essential operations for a Telegram bridge without unnecessary bloat. Each tool serves a clear purpose in the core workflow of a bot, making the count well-scoped.
The server covers identity, chat info, sending, editing, callback answers, and updates. However, it lacks common operations like deleting messages or sending media/files. Also, the update loop relies heavily on the agent, and there is no method to manage webhooks, but the core messaging loop is covered.