letopis-mcp
📜 Летопись (Letopis)
Engine für das Archiv und die intelligente Suche in Telegram-Chat-Verläufen
Rohe Nachrichten in JSONL · Volltextsuche mit russischer Morphologie · Downloader mit Manager
Idee
Летопись ist kein Bot und kein Dienst, sondern ein CLI-Werkzeug, das genau dafür gebaut ist, dass ein LLM-Agent (vor allem Claude Code) den Verlauf Ihrer Telegram-Chats lesen und daraus Fragen beantworten kann – wie aus einer normalen Wissensbasis.
Das Archiv wird als normale Dateien gespeichert – .jsonl, eine Datei pro Chat und Monat, append-only. Darüber wird ein SQLite-Index mit Volltextsuche (FTS5) aufgebaut, der russische Wortformen versteht: Die Abfrage „хостинг“ findet auch Nachrichten mit dem Wort „хостингами“. In die Suche fließen außerdem Sprachnachrichten-Transkripte, Dateinamen und der Text von Umfragen ein.
$ ./tg search переезд хостинг --chat devops --from 2025-06Engine und Daten sind getrennt. Dieses Repository enthält nur den Code – die Chat-Archive selbst,
config.toml,.envund die Telegram-Session liegen in einem separaten privaten Repository. Das behält die Kontrolle darüber, was öffentlich ist und was nicht. Details im Abschnitt „Struktur“.
Related MCP server: telegram-user-mcp
✨ Funktionen
🔎 Volltextsuche | SQLite FTS5 + |
📦 Archiv als Dateien |
|
⬇️ Downloader mit Manager |
|
🎙️ Sprachnachrichten-Transkription | lokal (faster-whisper), über Telegram Premium oder OpenAI Whisper API |
🌐 We-Viewer | Chats → Themen-Chips, nllunendliches Scrollen, Filter, Sprachplayer, Sprünge zu Replies |
⌨️ TUI-Viewer | dieselbe Funktion im Terminal ( |
👥 Mehrere Konten | verschiedene Chats können mit verschiedenen Telegram-Konten heruntergewden |
🤖 Auf Agenten abgestimmt | JSON-Ausgabe, kompakte Kurzformate, stabiler CLI-Vertrag |
🚀 Schnellstart
git clone https://github.com/Toligrim/letopis.git
cd letopis
python3 -m venv .venv && .venv/bin/pip install -e .
.venv/bin/pip install faster-whisper # опционально: локальная транскрипция голосовыхЛетопись ist nur die Engine. Um einen konkreten Chatter anzuschließen, legen Sie ein eigenes Daten-Repository an und legen Sie dort den Wrapper ./tg ab:
#!/bin/sh
exec "$HOME/projects/letopis/.venv/bin/tg" "$@"Danach läuft alles aus dem Wurzelverzeichnis des Daten-Repository:
chmod +x tg
./tg login # авторизация Telegram-сессии (телефон / код / 2FA)
./tg download --chat mychat --media all
./tg index && ./tg meta
./tg search приветDie Engine findet das Daten-Wurzelverzeichnis selbst: Beim Start sucht tg von dem aktuellen Verzeichnis aus nach oben einer Dokumentation, in der config.toml und archive/ seitlich liegen (oder das wird explicity über die Umgebungsvariable TG_ROOT gesetzt).
🤖 Read-only MCP für ChatGPT
Letopis kann als Read-only-MCP-Retrieval-Gateway für ChatGPT ausgeführt werden: Der Server verwendet die gleiche data/index.db wie die normale Search, stellt aber nur fünf sichere Retrieval-Werkzeuge bereit – Archivübersicht, Suche, Aggregates, Message-Auswahl und lokalen Context. Der MCP-Prozess synchronisiert Telegram nicht, lädt keine Dateien herunter und verändert den Index nicht.
Installation und Start
Install the MCP-SDK und die Test-Abhängigkeiten in die Umgebung der Engine:
.venv/bin/pip install -e ".[mcp,test]"Start über den Entrypoint:
.venv/bin/letopis-mcpAlternative Forme — .venv/bin/python -m tgarchive.mcp.server. Standardmäßig horcht der Server auf http://127.0.0.1:8765/mcp und akzeptiert nur Loopback-Adressen. Gast für den Produktion mit Betrieb, setzen Sie ein stabiles Cursor-Secretschloss secret und ihn den Index-Pfad in der Prozess-Umgebung an, z.B.:
export LETOPIS_MCP_DB=/srv/letopis-data/data/index.db
export LETOPIS_MCP_CURSOR_SECRET='случайный-длинный-секрет'
.venv/bin/letopis-mcpUmgebungsvariablen
Umgebungsvariablen | Standard | Zweck |
| Wert von | Pfad zum SQLite-Index; relative Pfade werden ab Projektstamm aufgelöst. |
| keine; kurzlebiges Zufallsgeheimnis pro Prozess | HMAC-SHA256 für sweat Cursor. In Produktion erforderlich: ohne Ihnn sticken die Cursor keinen Prozessstart. |
|
| Loopback-Bind-Adresse; die Anwendung lehnt nichtlokale Adressen ab. |
|
| TCP-Port des Streamable-HTTP-Endpunkts. |
|
| Stufe des strukturierten Logging ( |
|
| Maximale gleichzeitige Problemen auf der read-only DB. |
|
| Deadline für SQLite-Anfragen und Warten auf einen Concurrency-Slot. |
|
| Maximale angeforderte Aufrufe im globalen Rolling-Fenster. |
|
| Maximale diejenigen Zeichen im selben Fenster. |
|
| Länge des Rolling-Fenster in Sekunden. |
Rate Limit ist absichtlich pro Prozess global gehalten: in v1 gibt es kein OAuth und keine identifizierten Principals – es ist also keine Per-User-ACL. Der MCP liest diese Variablen als Prozesskonfiguration und lädt .env nicht automatisch.
Anbindung an ChatGPT
Empfohlenes Schema veröffentlicht Letopis nicht direkt ins Internet:
ChatGPT ↔ OpenAI Secure MCP Tunnel ↔ tunnel-client на этом хосте
↔ 127.0.0.1:8765/mcpDie konkreten Befehle und Schritte für den Secure MCP Tunnel hängen vom aktuellen OpenAI-Workspace und der aktuellen OpenAI-Dokumentation ab. Bitte zur Zeit der Verbindung deutlich ansehen; dieses Bildschirm erfindet keine unbekannte OAuth-/Tunnel-Befehl.
Sicherheit des Deployment
Der DHCP-Prozess braucht nur data/index.db und die SQLite-seitigen Neben-Dateien data/index.db-wal / data/index.db-shm. .env, telegram.session*, archive/, Medien bzw. Manifest dürfen nicht zugänglich sein. Führen Führen Sie den Server unter einem eigenen Unix-Benutzer mit minimalen Rechten aus; Synchronisierung und Indizierung laufen als separater Prozess mit bestimmten Schreibrechten.
🗂 Struktur
репозиторий с данными/
├── config.toml # настройки: аккаунты, транскрипция, веб-порт
├── .env # api_id / api_hash Telegram
├── telegram.session # сессия аккаунта (и доп. сессии из [accounts])
├── tg -> letopis/.venv/bin/tg # обёртка-энтрипоинт
├── data/
│ └── index.db # SQLite + FTS5 — производный, пересобирается
└── archive/
├── manifest.json # какие чаты отслеживаем, каким аккаунтом, какие медиа качаем
└── <chat_id>/
├── 2025-06.jsonl # сырые сообщения этого месяца — источник истины
├── 2025-07.jsonl
├── transcripts.jsonl # расшифровки голосовых/кружков
├── media_index.jsonl # реестр скачанных файлов
└── media/ # сами файлыJSONL – Quelle der Wahrheit. Monatsdateien;
syncappendets nur neue Nachrichten, bestehende Gewässer werden nie angefasst.index.db– eine separate Ebene. Sie kann jederzeit gelöscht bearbeitet werden (./tg index --rebuild), ohne Datenverlust.manifest.json– der Manager. Er lebensindexierte Neuaufbau; speichert, welcheChats/Topicstrackers werden und welche Medientypen für sie heruntergeladen werden.
Diese Trennung (Engine in Git, offen → Daten getrennt, privat) egal, es ermöglicht, den Code freely weiterzuentwickeln und zu teilen, ohne das Risiko eines Datenlecks in den Chatverläufen.
🧭 Befehle
Suchbefehle – das Wesentliche für Agenten
Befehl | Wirkung |
| Volltextsuche. Flags: |
| Chronologischer Ausschnitt des gesamtem Verlaufs |
| Nachrichten um einen bestimmten Nachrichten („ |
|
|
| Themen eines Forum-Chats |
| Stellungnahme/Status von Archiv und Index. |
Projekt-Liste – manuelle Betriebsart
Befehl | Was es tut |
| Lokale Weboberfläche: Chats → Themen-Chips, unendliches Scrollen, Suche mit Filtern, Sprung zum Datum, Filter nach Autor (Klick auf den Nickname), Foto/Video inline, Player für Sprachnachrichten mit Transkript, Replies mit Sprung in den Thread, |
| Dasselbe im Terminal: |
Downloader und Manager
Befehl | Was es tut |
| Alle Chats des Kontos (✓ – bereits im Archiv) |
| Chat/Topics herunterladen und auf Tracking setzen. Flags: |
| Neue Nachrichten aller beobachteten Chats nachladen |
| Dateien für bereits heruntergeladene Nachrichten nachladen |
| Sprachnachrichten in Text transkribieren, damit sie in die Suche aufgenommen werden |
| Chat aus der Beobachtung entfernen (Dateien bleiben auf der Festplatte) |
| Chatnamen aktualisieren / Archiv nachindizieren |
| Telegram-Sitzung autorisieren (Telefon / Code / 2FA) |
Ein Chat kann als id, als Alias aus config.toml, als Teilname, @username
oder Link t.me/... angegeben werden. Neue Nachrichten werden mit allen Reaktionen, Umfragen und Service-Ereignissen heruntergeladen.
🎙 Transkription von Sprachnachrichten
Der Provider wird in config.toml [transcription] festgelegt:
Provider | Kosten | Voraussetzungen |
| kostenlos, lokal |
|
| kostenlos | Telegram Premium auf dem Konto |
| kostenpflichtig (Whisper API) |
|
👥 Mehrere Konten
[accounts]
default = "telegram.session"
backup = "sessions/backup.session"tg login --account backup autorisiert eine neue Sitzung. download / sync / dialogs / meta haben jeweils das Flag --account. Jeder Titel im Manifest ist seinem Konto zugeordnet.
🗺Status
Phase | Status | Funktionsumfang |
A | ✅ fertig | Index, Suche, CLI, Integration mit Claude Code |
B | ✅ fertig | Downloader ( |
C | ✅ fertig | Abschluss: |
Als Nächstes: Auto-Sync nach Zeitplan, OCR von Bildern, Azure-Speech-Provider, Export von Auswahlen.
🔒 Sicherheit
telegram.session und .env geben vollen Zugriff auf das Telegram-Konto. Bewahren Sie sie in einem separaten privaten Repository mit den Daten auf; committen Sie sie nicht in dieses Repository und veröffentlichen Sie sie irgendwo.
Entwickelt, damit ein Agent die Unterhaltung besser merken kann als man selbst.
This server cannot be deployed
Maintenance
Related MCP Connectors
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server that exposes any Telegram-Archive instance to LLMs, enabling message search, chat browsing, and access to archived Telegram history.12656 npm9GPL 3.0
- AlicenseNot gradedqualityCmaintenanceAn MCP server that connects to Telegram as your real user account and exposes read-only tools to read and search messages, list chats and folders, inspect group info, and download media.16 npmMIT
- AlicenseAqualityBmaintenanceLocal-first, read-only MCP server for searching and retrieving cited evidence from archived Telegram chats, including transcripts and media metadata.53MIT
- AlicenseNot gradedqualityBmaintenanceLets AI agents search and read your personal Telegram and WhatsApp conversations through a self-hosted, read-only MCP server backed by a single SQLite file.2AGPL 3.0