Telegram MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Logging level (DEBUG, INFO, WARNING, ERROR) | INFO |
| TELEGRAM_BOT_TOKEN | Yes | Bot token from @BotFather | |
| TELEGRAM_API_BASE_URL | No | Custom Telegram Bot API URL for self-hosted instances | https://api.telegram.org |
| TELEGRAM_DEFAULT_CHAT_ID | No | Default chat ID to use if omitted in tool calls | |
| TELEGRAM_REQUEST_TIMEOUT | No | Timeout in seconds for HTTP requests | 30.0 |
| TELEGRAM_DEFAULT_PARSE_MODE | No | Default parse mode: HTML, MarkdownV2, Markdown | HTML |
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 | Get current bot identity and configuration status. Tests bot token validity and returns bot id, username, first name, and permissions. |
| telegram_send_messageA | Send a text message to a Telegram chat, group, or channel. :param text: Text of the message to be sent (up to 4096 characters). :param chat_id: Unique identifier for target chat, group, or channel username (@channelusername). If omitted, uses TELEGRAM_DEFAULT_CHAT_ID if set. :param parse_mode: Formatting mode for message text ('HTML', 'MarkdownV2', 'Markdown', or None). :param disable_web_page_preview: Disables link previews for links in this message. :param disable_notification: Sends the message silently without sound. :param reply_to_message_id: If the message is a reply, ID of the original message. :return: JSON formatted Telegram Message object. |
| telegram_forward_messageA | Forward an existing message of any type from one chat to another. :param from_chat_id: Unique identifier for chat where original message was sent. :param message_id: Message identifier in the chat specified in from_chat_id. :param chat_id: Destination chat identifier. Defaults to TELEGRAM_DEFAULT_CHAT_ID. :param disable_notification: Forward message silently. :return: JSON formatted forwarded Message object. |
| telegram_send_photoA | Send a photo/image to a Telegram chat. :param photo: Local file path on disk (e.g. '/path/to/image.png') OR a public HTTP/HTTPS URL. :param caption: Optional photo caption (0-1024 characters). :param chat_id: Unique identifier for target chat (or @channelusername). :param parse_mode: Formatting for caption ('HTML', 'MarkdownV2', 'Markdown', or None). :param disable_notification: Send silently without notification sound. :return: JSON formatted Telegram Message object. |
| telegram_send_documentA | Send a general file or document (PDF, ZIP, source code, text file, etc.). :param document: Local file path on disk (e.g. '/path/to/report.pdf') OR a public HTTP/HTTPS URL. :param caption: Optional document caption (0-1024 characters). :param chat_id: Target chat identifier (or @channelusername). :param parse_mode: Formatting for caption ('HTML', 'MarkdownV2', etc.). :param disable_notification: Send silently. :return: JSON formatted Telegram Message object. |
| telegram_send_audioA | Send an audio file (.mp3, .m4a, etc.) to a chat. :param audio: Local file path on disk or HTTP/HTTPS URL. :param caption: Audio caption. :param title: Track name. :param performer: Performer / artist name. :param chat_id: Target chat identifier. :param parse_mode: Caption parse mode. :param disable_notification: Send silently. :return: JSON formatted Telegram Message object. |
| telegram_send_voiceA | Send a voice note (.ogg encoded with OPUS) to a chat. :param voice: Local file path on disk or HTTP/HTTPS URL. :param caption: Voice message caption. :param chat_id: Target chat identifier. :param parse_mode: Caption parse mode. :param disable_notification: Send silently. :return: JSON formatted Telegram Message object. |
| telegram_send_locationB | Send a point on the map (geographic coordinates). :param latitude: Latitude of the location. :param longitude: Longitude of the location. :param chat_id: Target chat identifier. :param disable_notification: Send silently. :return: JSON formatted Telegram Message object. |
| telegram_send_pollA | Send a native poll to a chat or channel. :param question: Poll question (1-300 characters). :param options: List of 2 to 10 answer options (each 1-100 characters). :param chat_id: Target chat identifier. :param is_anonymous: True if poll should be anonymous, False for public voters. :param allows_multiple_answers: True if poll allows multiple options to be checked. :return: JSON formatted Telegram Message object containing the Poll. |
| telegram_get_chatB | Get detailed information about a chat (private user, group, supergroup, or channel). Returns title, username, description, invite link, active photo, etc. :param chat_id: Unique identifier for target chat or @channelusername. :return: JSON formatted Telegram Chat object. |
| telegram_get_chat_member_countB | Get the total number of members in a group, supergroup, or channel. :param chat_id: Target chat identifier. :return: Member count integer formatted as string. |
| telegram_get_chat_administratorsB | Get a list of administrators in a chat/group/channel. :param chat_id: Target chat identifier. :return: JSON formatted list of ChatMember objects representing administrators. |
| telegram_pin_chat_messageA | Pin a message in a group, supergroup, or channel. :param message_id: Identifier of a message to pin. :param chat_id: Target chat identifier. :param disable_notification: Pin silently without notifying chat members. :return: Status string indicating success. |
| telegram_unpin_chat_messageA | Unpin a specific message or all messages in a chat. :param message_id: Identifier of message to unpin. If None, unpins all pinned messages. :param chat_id: Target chat identifier. :return: Status string indicating success. |
| telegram_delete_messageB | Delete a message from a chat. :param message_id: Identifier of the message to delete. :param chat_id: Target chat identifier. :return: Status string indicating success. |
| telegram_get_updatesA | Retrieve incoming updates (messages, reactions, etc.) sent to the bot. Useful to read incoming user messages or inspect user/group chat IDs. :param offset: Identifier of the first update to be returned. :param limit: Limits the number of updates to be retrieved (1-100, default 10). :param timeout: Timeout in seconds for short/long polling (0 for immediate response). :return: JSON array of Telegram Update objects. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| telegram_alert | Template for generating a standardized alert message to send to Telegram. |
| telegram_summary | Template for sending structured summaries or digest updates to a Telegram channel or chat. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| bot_info_resource | Provides current bot metadata and connection status. |
| config_resource | Returns safe summary of current Telegram MCP server configuration. |
TDQS
Scored across 16 tools
Every tool targets a distinct action/resource: get_me identifies the bot, get_chat retrieves chat metadata, and the send_* variants each handle a specific media type. Pin/unpin/delete message are clearly separate operations, and get_chat_member_count vs get_chat_administrators are well-differentiated despite both being chat info queries.
All tools use a consistent telegram_verb_noun pattern (telegram_send_message, telegram_get_chat, telegram_pin_chat_message). The naming convention is uniform throughout, making the tool set predictable and easy to navigate.
At 16 tools, the server is just above the typical well-scoped range, but the count is reasonable given the breadth of Telegram messaging and chat admin operations. The send_* media variants each earn their place, though a few could arguably be consolidated.
Core messaging workflows are covered: send, forward, delete, pin, unpin, plus chat info and member retrieval. However, notable gaps exist such as edit_message, send_video/contact/sticker, get_chat_member, and leave_chat, which agents would likely need for fuller Telegram bot interactions.