Telegram MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TELEGRAM_BOT_TOKEN | Yes | Your Telegram bot token |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_bot_infoA | Fetch the bot's own user info. |
| send_messageC | Send a message to a chat. |
| get_updatesC | Fetch updates (messages, commands, etc.) for the bot. |
| set_webhookB | Set a webhook URL for the bot to receive updates. |
| delete_webhookA | Delete the bot's webhook. |
| get_webhook_infoB | Get information about the bot's webhook. |
| answer_callback_queryB | Answer a callback query (from inline buttons). |
| edit_message_textC | Edit the text of a message. |
| send_photoB | Send a photo to a chat. |
| send_documentB | Send a document/file to a chat. |
| delete_messageC | Delete a message from a chat. |
| pin_chat_messageC | Pin a message in a chat. |
| unpin_chat_messageA | Unpin a message (or the most recent pinned message if message_id is omitted). |
| send_pollC | Send a poll to a chat. |
| stop_pollC | Close a poll and return the final results. |
| get_chatB | Fetch info about a chat/channel by ID. |
| get_chat_memberB | Get a specific user's membership status in a chat. |
| get_chat_administratorsB | List the administrators of a chat. |
| ban_chat_memberC | Ban a user from a chat. |
| unban_chat_memberB | Unban a user from a chat. |
| set_chat_titleB | Rename a chat/channel. |
| set_chat_descriptionC | Update a chat/channel's description. |
| send_videoB | Send a video to a chat. |
| send_audioB | Send an audio file to a chat. |
| send_voiceB | Send a voice note to a chat. |
| set_message_reactionB | React to a message with an emoji (default: thumbs up). |
| set_my_commandsA | Register bot commands so Telegram shows them in the UI.
|
| get_my_commandsA | Fetch the bot's currently registered commands. |
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 28 tools
Each tool targets a distinct Telegram API action, such as sending specific media types, managing messages, or handling chat members. There is no meaningful overlap between tools, even the media senders are clearly differentiated by type.
All tool names follow a consistent snake_case verb_noun pattern (e.g., send_message, get_chat_member, set_webhook). The verbs are descriptive and the objects are clear, making the naming predictable and easy to navigate.
With 28 tools, the server exceeds the 25-tool threshold the rubric associates with 'too many'. While Telegram's API is broad, many of these tools cover niche media types and admin actions, making the surface feel heavy rather than focused.
The tool set covers the core Telegram bot lifecycle: sending, editing, deleting, pinning, reacting, and polling, plus webhook and chat administration. Minor gaps exist, such as forward_message and edit_message_caption, but agents can work around these by resending or recreating content.