telegram-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
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
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_chatsA | List all dialogs (groups, channels, DMs) with unread counts |
| get_chat_infoC | Get details for a specific chat |
| create_groupC | Create a new group |
| create_channelC | Create a new channel |
| archive_chatC | Archive or unarchive a chat |
| mute_chatB | Mute or unmute notifications for a chat |
| leave_chatB | Leave a group or channel (DESTRUCTIVE: requires confirm=true) |
| delete_chatA | Delete a chat (DESTRUCTIVE: requires confirm=true) |
| mark_readB | Mark a chat as read. For forum supergroups, pass topic_id (1 for the General topic) to also clear the per-topic unread cursor. |
| read_messagesC | Get recent messages from a chat. For forum supergroups, pass topic_id to scope to a single topic (use 1 for the General topic). |
| search_messagesB | Search messages by keyword, optionally in a specific chat or chat type |
| search_regexA | Search cached messages using a regex pattern (runs locally, not against Telegram API) |
| get_messageC | Get a single message by ID |
| get_message_repliesC | Get replies/thread for a message |
| get_scheduled_messagesB | List scheduled messages in a chat |
| send_messageB | Send a message to a chat. For forum supergroups, pass topic_id to post into a specific topic (1 for the General topic). Combine with reply_to to reply to a specific message within that topic. |
| edit_messageC | Edit a sent message |
| delete_messageB | Delete messages (DESTRUCTIVE: requires confirm=true) |
| forward_messageC | Forward messages to another chat (DESTRUCTIVE: requires confirm=true) |
| schedule_messageB | Send a message at a future time |
| send_reactionA | React to a message with an emoji |
| pin_messageC | Pin a message in a chat |
| unpin_messageC | Unpin a message in a chat |
| download_mediaC | Download a photo, video, or document from a message |
| download_chat_mediaA | Download media files (photos, documents) from a chat in bulk |
| send_fileB | Send a file or photo to a chat. For forum supergroups, pass topic_id to post into a specific topic (1 for the General topic). Combine with reply_to to reply to a specific message within that topic. |
| send_voiceC | Send a voice message |
| send_locationD | Send a location |
| get_sticker_setsA | List available sticker packs |
| list_contactsB | List all contacts |
| get_contactC | Get contact details |
| get_userC | Get user profile info |
| block_userA | Block a user (DESTRUCTIVE: requires confirm=true) |
| unblock_userC | Unblock a user |
| get_participantsB | List members of a group or channel |
| add_participantC | Add a user to a group or channel |
| remove_participantA | Remove a user from a group or channel (DESTRUCTIVE: requires confirm=true) |
| set_chat_titleC | Change a chat's title |
| set_chat_descriptionC | Change a chat's description |
| set_chat_photoB | Change a chat's photo |
| list_forum_topicsA | List topics in a forum supergroup (e.g. GLC). Returns id, title, unread_count, and flags per topic. The General topic is always id 1. |
| get_invite_linkB | Generate an invite link for a group or channel |
| get_admin_logB | Get admin action history for a group or channel |
| get_meA | Get current account info |
| get_statusB | Get connection status and session health |
| get_dialogs_statsA | Get unread counts and chat activity summary |
| export_chatC | Export messages from a chat as JSON (max 1000 per call) |
| clear_cacheB | Wipe the local message cache |
| sync_messagesA | Sync messages from all chats (or a specific chat) into the local SQLite cache for fast offline search and analytics |
| get_new_messagesA | Get messages newer than a timestamp (polling pattern for real-time awareness) |
| chat_analyticsB | Get analytics from cached messages: top senders by message count |
| message_timelineA | Get message counts grouped by time period (hour or day) from the local cache |
| today_messagesA | Get all messages from today (UTC) from the local cache |
| export_cached_messagesB | Export messages from the local cache as JSON or CSV, with optional filters |
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 54 tools
Several tools have unclear boundaries, especially message retrieval: read_messages, get_new_messages, and today_messages all return messages with different scoping, while search_messages and search_regex overlap and export_chat/export_cached_messages are near-duplicates. download_media/download_chat_media and get_dialogs_stats/list_chats add further ambiguity.
The vast majority of tools follow a clean verb_noun snake_case pattern, such as send_message, create_channel, get_participants, and set_chat_title. A few tools like chat_analytics, message_timeline, and today_messages break the verb-first convention, and the use of both 'dialogs' and 'chats' is inconsistent.
54 tools is far beyond the well-scoped 3-15 range and lands in the 50+ extreme category. The surface feels bloated with overlapping retrieval, export, and analytics tools that could be consolidated.
Core Telegram workflows are well covered: messaging, scheduling, reactions, media, chat/group/channel lifecycle, participant management, contacts, admin logs, and local analytics. Gaps like forum-topic creation, scheduled-message deletion, and contact write operations are workaround-able rather than fatal.