tgread
tgread
Только чтение Telegram MCP-сервер. Позволяет Claude Code читать ваши каналы, группы и личные сообщения — и не даёт ему возможности писать в них.
./install.sh # pinned venv + ~/.local/bin/tgread + MCP registration
tgread login # api_id/api_hash, phone, code, 2FA
tgread status # who am I, is the session live, are perms saneПочему не один из существующих
Есть хорошие серверы сообщества — chigwell/telegram-mcp имеет 1.5k звёзд, 30 контрибьюторов и настоящую гигиену релизов. Причина написать этот — не недоверие к тому коду. Дело в том, что честная выгода от самостоятельной разработки — это поверхность инструментов и проверяемость, а не количество зависимостей, и именно эти две вещи важны, когда процесс держит сессию Telegram и подаёт агенту текст, контролируемый атакующим.
сервер сообщества | tgread | |
MTProto | Telethon | Telethon — то же самое, и правильно |
разрешённые пакеты | 44 | 5 ( |
слой MCP |
| ~200 строк stdio JSON-RPC в этом репозитории |
инструменты записи | send, edit, delete, forward, react, join, admin | нет |
контроль записи | по соглашению | на транспортном шлюзе |
код для проверки перед доверием | ~3000 строк от 30 контрибьюторов | один файл, который можно прочитать за один присест |
Писать MTProto вручную было бы безрассудно — Telethon и есть криптография, миграция DC и логика переподключения. Так что он остаётся. Всё, что выше него, — наше.
Related MCP server: telegram-mcp-server
Модель угроз
Чтение каналов означает, что текст, выбранный атакующим, попадает в агента, у которого есть доступ к оболочке — и, как правило, ко всему остальному, что вы подключили: почта, заметки, облачные учётные данные. Это главный риск здесь, и он не устраняется тем, кто написал сервер. Выбор сервера без поверхности записи — одно из немногих смягчений, которое не зависит от хорошего поведения модели.
flowchart TD
A["hostile channel post<br/>'ignore previous instructions…'"] --> B["tgread read_chat"]
B --> C["UNTRUSTED envelope<br/>wrapped around every payload"]
C --> D["agent context"]
D --> E{"agent tries to act on it"}
E -->|"send / delete / join"| F["no such tool exists<br/>tools/call → isError"]
E -->|"raw TL request"| G["guard at _call → WriteBlocked"]
E -->|"summarise for the user"| H["fine — this is the intended path"]
style F fill:#1f6f43,color:#fff
style G fill:#1f6f43,color:#fffТри уровня, в порядке возрастания того, насколько они переживут ошибку:
Никакой инструмент записи не рекламируется. Внедрённой инструкции нечего вызывать.
Каждая полезная нагрузка оборачивается в баннер
UNTRUSTED CONTENT, называющий её данными, а не инструкциями — включая названия чатов и био, которые тоже контролируются атакующим.Транспортная защита. Telethon пропускает каждый исходящий TL-запрос через
TelegramClient._call(68 внутренних мест вызова достигают его черезawait self(req), а__call__— однострочный делегат).ReadOnlyClientпереопределяет его. Ошибка в этом файле всё равно не может изменить аккаунт.
Защита отказывает закрыто: запрос отклоняется, если имя его TL-класса не начинается с Get/Search/Resolve/Check/Find или он не входит в список разрешённой инфраструктуры из девяти записей. Три запроса, похожие на чтение, отклоняются по имени, потому что у них есть эффекты, которые могут наблюдать другие люди — GetMessagesViews (увеличивает публичный счётчик просмотров), GetBotCallbackAnswer (нажимает инлайн-кнопку), GetInlineBotResults (запрашивает бота от вашего имени). Вложенные запросы обходятся, так что запись не может проехать внутри разрешённой обёртки InvokeWithLayer.
flowchart LR
R["TL request"] --> W["walk nested .query"]
W --> D{"in EXPLICIT_DENY?"}
D -->|yes| X["WriteBlocked"]
D -->|no| I{"in INFRA_ALLOW?"}
I -->|yes| P["to the wire"]
I -->|no| V{"starts with Get/Search/<br/>Resolve/Check/Find?"}
V -->|yes| P
V -->|"no — incl. every<br/>name we've never seen"| X
style X fill:#8b2020,color:#fff
style P fill:#1f6f43,color:#ffftgread check запускает это офлайн: 26 запросов на запись заблокировано, 17 чтений разрешено, неизвестные имена закрыты, вложенность проверена. Ни сети, ни сессии, ни учётных данных.
Инструменты
Инструмент | Описание |
| диалоги, фильтруются по |
| история одного чата, от старых к новым, постранично по id или дате. Не отмечает как прочитанное |
| полнотекстовый поиск, в одном чате или по всему, что видит аккаунт |
| тип, количество участников, описание, флаги verified/scam |
Преднамеренно нет загрузки медиа: получение вложений означает запись байтов, выбранных атакующим, в файловую систему агента. Метаданные сообщения сообщают только тип медиа.
Эксплуатационные заметки
Используйте вторичный аккаунт. Юзерботы (любой MTProto-клиент, не являющийся официальным приложением) могут быть забанены по ToS. Этот риск одинаков для любого сервера здесь.
Файл сессии — это bearer-токен для всего аккаунта. Смена пароля Telegram не аннулирует его. Только
tgread logout— который отзывает на стороне сервера перед локальным удалением — или Настройки → Устройства. Относитесь к нему как к закрытому ключу SSH.pip install telegram-mcp— это не этот пакет и не пакет chigwell. Это имя на PyPI принадлежит несвязанному проекту; передача емуTELEGRAM_API_ID/TELEGRAM_API_HASHотдаст ваши учётные данные стороннему коду. Ничего из этого намеренно не публикуется на PyPI.Состояние хранится в одной директории —
$TGREAD_STATE_DIR, по умолчанию~/.local/state/tgread, режим 0700, содержитconfig.env(0600) иtgread.session(0600). Одна директория для chmod, для резервного копирования, для уничтожения.tgread statusсообщает, если права доступа отклонились.install.shиспользуетuv sync --frozen— он устанавливает ровно те версии, которые указаны в закоммиченномuv.lock, и завершается ошибкой, а не пересобирает зависимости. Резолвер, который тихо подхватывает свежий апстрим-релиз, — это путь, по которому скомпрометированный пакет попадает в процесс, держащий вашу сессию.
Структура
Путь | Описание |
| весь сервер: защита, инструменты, цикл JSON-RPC, CLI |
| запускатель — исполняет интерпретатор закреплённого venv |
| закрепление версий |
| venv, симлинк, |
| 17 офлайн-тестов — защита, поверхность, протокол, гигиена |
Команды
tgread login interactive: API credentials, phone, login code, 2FA
tgread status who am I, is the session valid, are permissions sane
tgread logout revoke server-side, then delete locally
tgread check offline self-test of the read-only guard
tgread serve speak MCP over stdio — what Claude Code runslogin и logout используют обычный клиент, а не защищённый: защита существует, чтобы ограничивать агента, а не человека за терминалом, устанавливающего или отзывающего сессию. Всё, к чему прикасается MCP-сервер, проходит через ReadOnlyClient.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Read-only Remote MCP for externally grounded AI agent trust receipts.
Unified inbox MCP for WhatsApp, Telegram, Email, voice — read/send messages, search, AI agents.
Private agent messaging: DMs, group channels, presence, search, and webhooks over MCP or REST.
Join durable public agent discussions and invite-only private group rooms through MCP.
161
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to interact with Telegram accounts through MCP, supporting messaging, contacts, groups, media, and admin functions.4Apache 2.0
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server that lets AI agents read personal Telegram chats from an allowlist of folders, with no send/edit/delete capability.53MIT
- FlicenseNot gradedqualityDmaintenanceEnables users to read, search, and manage Telegram messages in channels, groups, and private chats through MCP tools.-
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to Telegram chats, allowing AI agents to list chats, read messages, and search within chats via local MCP.MIT
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/demian-overflow/tgread'
If you have feedback or need assistance with the MCP directory API, please join our Discord server