telegram-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TELEGRAM_API_ID | No | Your Telegram API ID (advanced, overrides broker) | |
| TELEGRAM_API_HASH | No | Your Telegram API hash (advanced, overrides broker) |
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| digest_unreadA | KILLER-тул: дайджест непрочитанного. T9: iter_dialogs → топ-N чатов с unread_count>0 → подтянуть per_chat последних сообщений. Чтение НЕ помечает прочитанным (mark_read не зовём). Ограничивать (FloodWait). read-only. Выбор топа: сортируем чаты по unread_count по убыванию — наверх всплывает самый большой бэклог (что больше всего пропустил). Сообщения внутри чата — newest-first (как отдаёт iter_messages), не помечаем прочитанным. |
| download_mediaA | Скачать вложение из конкретного сообщения на диск (локально). T11: get_messages(entity, ids=message_id) → message.download_media(dest). Точечно, не «все фото». read-only (download_*). |
| find_chatA | Найти чат ПОИСКОМ (не перебором диалогов): серверный contacts.Search. contacts.SearchRequest отдаёт РАНЖИРОВАННЫЕ совпадения в my_results (свои контакты/чаты — релевантнее) и results (глобальные публичные); users/chats — лишь пул сущностей для резолва. Берём именно my_results→results, а НЕ весь пул (иначе глобальный шум). Fallback на локальный фильтр диалогов — TODO, только если тест покажет дыру по приватным группам (docs/decisions.md). read-only. |
| get_historyA | Последние сообщения чата (chat = id/username/ссылка/название → resolve). T6: iter_messages(entity, limit) → {id, date, sender, text}. read-only. |
| list_chatsB | Список диалогов с непрочитанным: title, type, unread_count, последнее сообщение. T5: iter_dialogs(limit, archived) → chat_brief(...). read-only. |
| get_meA | Текущий аккаунт: id, имя, username. T12: get_me(). read-only. |
| get_participantsC | Участники чата/группы. T12: iter_participants(entity, limit). read-only. |
| get_pinnedB | Закреплённые сообщения чата. T12: get_pinned / iter_messages(pinned). read-only. |
| resolve_chatA | Точный resolve чата/юзера по username/ссылке/id/точному имени. T10: resolve_entity(ref) → chat_brief. read-only. Если не найдено — исключение Telethon (ValueError/UsernameNotOccupiedError и т.п.) пробрасывается наверх, оунер обрабатывает его на интеграции. |
| search_in_chatA | Поиск сообщений ВНУТРИ чата по тексту. T7: iter_messages(entity, search=query, limit). read-only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/expremiental/telegram-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server