tgread
tgread
Ein schreibgeschützter Telegram-MCP-Server. Erlaubt Claude Code, deine Kanäle, Gruppen und DMs zu lesen – und gibt ihm keine Möglichkeit, in sie zu schreiben.
./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 saneWarum nicht einer der bestehenden Server
Es gibt gute Community-Server – chigwell/telegram-mcp hat 1,5k Sterne, 30 Mitwirkende und echte Release-Hygiene. Der Grund, dieses hier zu schreiben, ist kein Misstrauen gegenüber diesem Code. Es ist, dass der ehrliche Gewinn beim Selbstschreiben in Werkzeugoberfläche und Überprüfbarkeit liegt, nicht in der Anzahl der Abhängigkeiten – und das sind die beiden Dinge, die zählen, wenn der Prozess eine Telegram-Sitzung hält und einen Agenten mit angreiferkontrolliertem Text füttert.
Community-Server | tgread | |
MTProto | Telethon | Telethon — dasselbe, und das zu Recht |
aufgelöste Pakete | 44 | 5 ( |
MCP-Ebene |
| ~200 Zeilen stdio-JSON-RPC in diesem Repo |
Schreibwerkzeuge | send, edit, delete, forward, react, join, admin | keine |
Durchsetzung des Schreibverbots | per Konvention | am Transport-Engpass |
zu prüfender Code, bevor man ihm vertraut | ~3.000 Zeilen von 30 Mitwirkenden | eine Datei, die man in einem Rutsch lesen kann |
MTProto von Hand zu schreiben wäre leichtsinnig – Telethon ist die Kryptografie, die DC-Migration und die Wiederverbindungslogik. Also bleibt es. Alles darüber gehört uns.
Related MCP server: telegram-mcp-server
Das Bedrohungsmodell
Kanäle zu lesen bedeutet, dass von einem Angreifer gewählter Text in einen Agenten gelangt, der eine Shell hält – und normalerweise auch alles andere, was du verbunden hast: E-Mail, Notizen, Cloud-Zugangsdaten. Das ist das dominierende Risiko hier, und es wird nicht dadurch behoben, wer den Server geschrieben hat. Einen Server ohne Schreiboberfläche zu wählen, ist eine der wenigen Abschwächungen, die nicht davon abhängt, dass sich das Modell gut verhält.
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:#fffDrei Ebenen, in aufsteigender Reihenfolge danach, wie viel sie einem Bug standhalten würden:
Kein Schreibwerkzeug wird angekündigt. Eine injizierte Anweisung hat nichts, das sie aufrufen kann.
Jede Nutzlast wird mit einem
UNTRUSTED CONTENT-Banner umhüllt, der sie als Daten kennzeichnet, nicht als Anweisungen – einschließlich Chat-Titel und Bios, die ebenfalls angreiferkontrolliert sind.Die Transport-Sicherung. Telethon schleust jede ausgehende TL-Anfrage durch
TelegramClient._call(68 interne Aufrufstellen erreichen sie überawait self(req), und__call__ist ein einzeiliger Delegat).ReadOnlyClientüberschreibt sie. Ein Bug in dieser Datei kann das Konto weiterhin nicht verändern.
Die Sicherung fällt geschlossen aus: Eine Anfrage wird abgelehnt, es sei denn, ihr TL-Klassenname beginnt mit Get/Search/Resolve/Check/Find oder sie steht auf einer aus neun Einträgen bestehenden Infrastruktur-Allowlist. Drei lese-artige Anfragen werden namentlich verweigert, weil sie Effekte haben, die andere beobachten können – GetMessagesViews (erhöht den öffentlichen Aufrufzähler), GetBotCallbackAnswer (drückt einen Inline-Button), GetInlineBotResults (fragt einen Bot in deinem Namen ab). Verschachtelte Anfragen werden durchlaufen, sodass ein Schreibzugriff nicht in einem erlaubten InvokeWithLayer-Wrapper mitreisen kann.
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 führt das offline aus: 26 Schreibanfragen blockiert, 17 Lesezugriffe erlaubt, unbekannte Namen fallen geschlossen aus, Verschachtelung geprüft. Kein Netzwerk, keine Sitzung, keine Zugangsdaten.
Werkzeuge
Werkzeug | Beschreibung |
| Dialoge, filterbar nach |
| Verlauf für einen Chat, älteste zuerst, paginiert nach id oder Datum. Markiert nicht als gelesen |
| Volltext, in einem Chat oder über alles, was das Konto sieht |
| Art, Mitgliederzahl, Beschreibung, verifiziert/Scam-Flags |
Es gibt bewusst keinen Mediendownload: Anhänge abzurufen bedeutet, vom Angreifer gewählte Bytes in das Dateisystem des Agenten zu schreiben. Die Metadaten von Nachrichten melden nur den Medien-Typ.
Betriebshinweise
Verwende ein Zweitkonto. Userbots (jeder MTProto-Client, der nicht die offizielle App ist) können laut ToS gebannt werden. Dieses Risiko ist für jeden Server hier identisch.
Die Sitzungsdatei ist ein Bearer-Token für das gesamte Konto. Das Ändern deines Telegram-Passworts macht es nicht ungültig. Nur
tgread logout– das serverseitig widerruft, bevor es lokal löscht – oder Einstellungen → Geräte tut das. Behandle es wie einen privaten SSH-Schlüssel.pip install telegram-mcpist weder dieses Projekt noch das von chigwell. Dieser PyPI-Name gehört zu einem nicht verwandten Projekt; die Übergabe vonTELEGRAM_API_ID/TELEGRAM_API_HASHan dieses Projekt würde deine Zugangsdaten an Code Dritter weiterreichen. Absichtlich wird von hier nichts auf PyPI veröffentlicht.Der Zustand liegt in einem einzigen Verzeichnis –
$TGREAD_STATE_DIR, Standard~/.local/state/tgread, Modus 0700, dasconfig.env(0600) undtgread.session(0600) enthält. Ein Verzeichnis zum chmoden, zum Sichern, zum Zerstören.tgread statusweist darauf hin, wenn die Berechtigungen abweichen.install.shverwendetuv sync --frozen– es installiert genau die Versionen aus der eingechecktenuv.lockund schlägt fehl, anstatt neu aufzulösen. Ein Resolver, der stillschweigend eine frische Upstream-Veröffentlichung aufgreift, ist der Weg, auf dem ein kompromittiertes Paket einen Prozess erreicht, der deine Sitzung hält.
Aufbau
Pfad | Beschreibung |
| der gesamte Server: Sicherung, Werkzeuge, JSON-RPC-Schleife, CLI |
| Launcher – führt den Interpreter der festgepinnten venv aus |
| das Pinning |
| venv, Symlink, |
| 17 Offline-Tests – Sicherung, Werkzeugoberfläche, Protokoll, Hygiene |
Befehle
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 und logout verwenden einen einfachen Client, nicht den gesicherten: Die Sicherung dient dazu, den Agenten einzuschränken, nicht den Menschen am Terminal, der die Sitzung einrichtet oder widerruft. Alles, was der MCP-Server anfasst, läuft über 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.
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 gradedqualityDmaintenanceA read-only MCP server that lets AI agents read personal Telegram chats from an allowlist of folders, with no send/edit/delete capability.39MIT
- 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