telegram-mcp-kit
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | Bind host (default 127.0.0.1) | |
| MCP_PORT | No | Bind port (default 8000) | |
| HTTP_TIMEOUT | No | Telegram API timeout in seconds (default 30) | |
| MCP_TRANSPORT | No | stdio (default) or sse | |
| TELEGRAM_CHAT_ID | No | Default chat ID (if set, chat_id can be omitted in tool calls) | |
| TELEGRAM_BOT_TOKEN | Yes | Token from BotFather |
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 |
|---|---|
| get_bot_infoA | Get information about the bot (name, username, etc.). |
| get_chat_infoA | Get information about a chat (group, channel, or private chat). Args: chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) |
| get_chat_member_countA | Get the number of members in a chat. Args: chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) |
| get_chat_adminsB | Get list of administrators in a chat. Args: chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) |
| ban_memberA | Ban a user from a chat. Args: user_id: User ID to ban chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) |
| unban_memberA | Unban a user from a chat. Args: user_id: User ID to unban chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) |
| set_chat_titleA | Change the title of a chat (group/channel). Args: title: New chat title (1-128 characters) chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) |
| set_chat_descriptionA | Change the description of a chat (group/channel). Args: description: New description (0-255 characters) chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) |
| pin_messageA | Pin a message in a chat. Args: message_id: ID of the message to pin chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) silent: Pin without notification (default False) |
| unpin_messageB | Unpin a message in a chat. Args: chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) message_id: ID of message to unpin (optional, unpins most recent if not specified) |
| send_photoA | Send a photo to a chat. Args: photo: Photo URL or file_id chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) caption: Photo caption (optional) parse_mode: "Markdown", "MarkdownV2", or "HTML" for caption (optional) |
| send_photo_fileA | Send a local photo file to a chat. Args: file_path: Absolute path to the photo file on disk chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) caption: Photo caption (optional) parse_mode: "Markdown", "MarkdownV2", or "HTML" for caption (optional) |
| send_documentA | Send a document/file to a chat. Args: document: Document URL or file_id chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) caption: Document caption (optional) parse_mode: "Markdown", "MarkdownV2", or "HTML" for caption (optional) |
| send_document_fileA | Send a local file as a document to a chat. Args: file_path: Absolute path to the file on disk chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) caption: Document caption (optional) parse_mode: "Markdown", "MarkdownV2", or "HTML" for caption (optional) |
| get_file_infoA | Get file info and download link from Telegram. Args: file_id: Telegram file ID (from received messages) |
| send_messageA | Send a text message to a Telegram chat. Args: text: Message text (supports Markdown/HTML based on parse_mode) chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) parse_mode: "Markdown", "MarkdownV2", or "HTML" (optional) reply_to_message_id: ID of message to reply to (optional) |
| edit_messageA | Edit an existing message. Args: message_id: ID of the message to edit text: New text for the message chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) parse_mode: "Markdown", "MarkdownV2", or "HTML" (optional) |
| delete_messageB | Delete a message from a chat. Args: message_id: ID of the message to delete chat_id: Chat ID or @channel_username (uses TELEGRAM_CHAT_ID if omitted) |
| forward_messageB | Forward a message from one chat to another. Args: from_chat_id: Source chat ID message_id: ID of the message to forward chat_id: Target chat ID (uses TELEGRAM_CHAT_ID if omitted) |
| get_updatesA | Get recent messages/updates received by the bot. Args: offset: Update ID offset (to get updates after a specific ID) limit: Maximum number of updates to return (1-100, default 100) |
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 20 tools
All tools have distinct purposes with clear separation; similar pairs like send_document/send_document_file and send_photo/send_photo_file are differentiated by source type (URL/file_id vs local path).
All tool names follow a consistent verb_noun snake_case pattern (e.g., ban_member, get_chat_info, send_photo_file).
20 tools is on the higher end but covers core Telegram bot functionalities without being excessive. Each tool is justified.
Covers common messaging, moderation, and info retrieval but lacks support for sending stickers, audio, video, location, polls, and other media types, which are notable gaps for a full-featured Telegram toolset.