Skip to main content
Glama

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 (telethon, pyaes, pyasn1, rsa, сам tgread)

слой MCP

mcp SDK → starlette, uvicorn, pydantic, pyjwt[crypto], opentelemetry

~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

Три уровня, в порядке возрастания того, насколько они переживут ошибку:

  1. Никакой инструмент записи не рекламируется. Внедрённой инструкции нечего вызывать.

  2. Каждая полезная нагрузка оборачивается в баннер UNTRUSTED CONTENT, называющий её данными, а не инструкциями — включая названия чатов и био, которые тоже контролируются атакующим.

  3. Транспортная защита. 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:#fff

tgread check запускает это офлайн: 26 запросов на запись заблокировано, 17 чтений разрешено, неизвестные имена закрыты, вложенность проверена. Ни сети, ни сессии, ни учётных данных.

Инструменты

Инструмент

Описание

list_chats

диалоги, фильтруются по query и kind — найдите id/@username для остальных

read_chat

история одного чата, от старых к новым, постранично по id или дате. Не отмечает как прочитанное

search_messages

полнотекстовый поиск, в одном чате или по всему, что видит аккаунт

chat_info

тип, количество участников, описание, флаги 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, и завершается ошибкой, а не пересобирает зависимости. Резолвер, который тихо подхватывает свежий апстрим-релиз, — это путь, по которому скомпрометированный пакет попадает в процесс, держащий вашу сессию.

Структура

Путь

Описание

tgread.py

весь сервер: защита, инструменты, цикл JSON-RPC, CLI

bin/tgread

запускатель — исполняет интерпретатор закреплённого venv

pyproject.toml, uv.lock

закрепление версий

install.sh

venv, симлинк, claude mcp add --scope user

test-tgread.sh

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 runs

login и 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.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with Telegram accounts through MCP, supporting messaging, contacts, groups, media, and admin functions.
    4
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    A read-only MCP server that lets AI agents read personal Telegram chats from an allowlist of folders, with no send/edit/delete capability.
    53
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables users to read, search, and manage Telegram messages in channels, groups, and private chats through MCP tools.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides 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

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