letopis-mcp
📜 Летопись (Letopis)
Motor de archivado y búsqueda inteligente para el historial de los chats de Telegram
Mensajes en crudo en JSONL · búsqueda de texto completo con morfología rusa · descargador con gestor
Idea
Letopis no es un bot ni un servicio, sino una herramienta CLI pensada para que un agente LLM (principalmente Claude Code) pueda leer el historial de tus chats de Telegram y responder preguntas a partir de él, como si fuera una base de conocimientos cualquiera.
El archivo se almacena como archivos normales — .jsonl, uno por chat y mes, append-only. Sobre ellos se construye un índice SQLite con búsqueda de texto completo (FTS5), que entiende las formas de las palabras rusas: la consulta «хостинг» encuentra mensajes con la palabra «хостингами». A la búsqueda también están conectadas las transcripciones de voz, los nombres de archivo y el texto de las encuestas.
$ ./tg search переезд хостинг --chat devops --from 2025-06El motor y los datos están separados. Este repositorio contiene solo el código: los propios archivos de los chats,
config.toml,.envy la sesión de Telegram viven en un repositorio privado separado, lo que te permite mantener el control sobre lo que es público y lo que no. Más información en «Estructura».
Related MCP server: telegram-user-mcp
✨ Funcionalidades
🔎 Búsqueda de texto completo | SQLite FTS5 + |
📦 Archivo como archivos |
|
⬇️ Descargador con gestor |
|
🎙️ Transcripción de voz | local (faster-whisper), a través de Telegram Premium o OpenAI Whisper API |
🌐 Visor web | chats → temas con chips, scroll infinito, filtros, reproductor de voz, saltos a respuestas |
⌨️ Visor TUI | la misma funcionalidad en la terminal ( |
👥 Varias cuentas | chats distintos se pueden descargar con cuentas de Telegram distintas |
🤖 Pensado para agentes | salida JSON, formatos cortos y compactos, contrato CLI estable |
🚀 Inicio rápido
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 # опционально: локальная транскрипция голосовыхLetopis es solo el motor. Para conectarlo a un archivo concreto, crea un repositorio de datos separado y coloca allí la envoltura ./tg:
#!/bin/sh
exec "$HOME/projects/letopis/.venv/bin/tg" "$@"A partir de ahí, todo se ejecuta desde la raíz del repositorio con los datos:
chmod +x tg
./tg login # авторизация Telegram-сессии (телефон / код / 2FA)
./tg download --chat mychat --media all
./tg index && ./tg meta
./tg search приветEl motor encuentra solo la raíz de datos: al lanzar ./tg, busca desde el directorio actual hacia arriba una carpeta donde estén config.toml y archive/ (o se le indica explícitamente con la variable de entorno TG_ROOT).
🚀 MCP de solo lectura para ChatGPT
Letopis puede funcionar como un read-only MCP retrieval gateway para ChatGPT: el servidor usa el mismo data/index.db que la búsqueda normal, pero solo expone cinco herramientas seguras de recuperación: vista general del archivo, búsqueda, agregados, recuperación de mensajes y contexto local. El proceso MCP no sincroniza Telegram, no descarga archivos ni modifica el índice.
Instalación y ejecución
Instala el SDK de MCP y las dependencias de prueba en el entorno del motor:
.venv/bin/pip install -e ".[mcp,test]"Ejecución a través de entrypoint:
.venv/bin/letopis-mcpForma alternativa: .venv/bin/python -m tgarchive.mcp.server. Por defecto, el servidor escucha en `http://127.0.0.1:8765/mcp» and persists only loopback addresses. Para producción, establece un secreto de cursores estable y la ruta al índice en el entorno del proceso, por ejemplo:
export LETOPIS_MCP_DB=/srv/letopis-data/data/index.db
export LETOPIS_MCP_CURSOR_SECRET='случайный-длинный-секрет'
.venv/bin/letopis-mcpVariables de entorno
Variable | Por defecto | Propósito |
| el valor de | Ruta al índice SQLite; la ruta relativa se calcula desde la raíz del proyecto. |
| no definido; secreto temporal y aleatorio para el proceso | HMAC-SHA256 para cursores opacos. Obligatorio en producción: sin él, los cursores no sobreviven al reinicTIO del proceso. |
|
| Dirección loopback de bind; la aplicación rechaza direcciones no locales. |
|
| Puerto TCP del endpoint HTTP Streamable. |
|
| Nivel de logs estructurados ( |
|
| Máximo de operaciones concurrentes con la base de solo lectura. |
|
| Tiempo límite para la consulta SQLite y para esperar un slot de concurrencia. |
|
| Máximo de llamadas terminadas en la ventana móvil global. |
|
| Máximo de caracteres devueltos en la misma ventana. |
|
| Longitud de la ventana móvil en segundos. |
Rate limit se aplica a propósito de forma global en cada proceso: en v1 no hay OAuth ni principals identificator, por lo que no es un ACL por usuario. MCP lee estas variables como configuración del proceso y no carga automáticamente .env.
conexión a ChatGPT
El esquema recomendado no publica Letopis directamente a Internet:
ChatGPT ↔ OpenAI Secure MCP Tunnel ↔ tunnel-client на этом хосте
↔ 127.0.0.1:8765/mcpLos comandos concretos y los pasos de configuración de Secure MCP Tunnel depends on workspace actual de OpenAI and actual documentation de OpenAI. Consúltalos al momento de realizar la conexión; este repositorio no inventa ningún comando OAuth/tunnel sin verificar.
Seguridad del despliegue
El proceso MCP solo necesita data/index.db y los correspondientes sidecar de SQLite data/index.db-wal / data/index.db-shm. No debe tener acceso a .env, telegram.session*, archive/, de los archivos multimedia o del manifest. Ejecuta el servidor con un usuario Unix separado y con el mínimo de privilegios; la sincronización y la indexación deben hacerlo por separado con вклюros los permisos de escritura necesarios.
🗂 Estructura
репозиторий с данными/
├── 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 es la fuente de verdad. Archivos por mes,
syncsolo añade mensajes nuevos y nunca toca los antiguos.index.db: capa derivada. Se puede eliminar y reconstruir (./tg index --rebuild) en cualquier momento sin perder datos.manifest.json: administrador. Sobrevive a losac sua de índice; sabe qué chats/temas se están siguiendo y qué tipos de medios de ahí se deseen download.
Esta separación (motor en git, abierto; los datos aparte y privados) allows develop to develop and share code without risk leak filters.
🧭 Comandos
Búsqueda: lo indispensable para el agente
Comando | Qué hace | |
| Búsqueda de texto completo. Banderas: | |
| Suggest completa chronologically de la conversación completa | in |
| Messages around the specific message ( | |
| Variable نوع. | |
| list of | |
| variable date of archivo and index. |
Visores — modo manual
Comando | Qué hace |
| Interfaz web local: chats → chips de temas, desplazamiento infinito, búsqueda con filtros, salto a una fecha, filtro por autor (clic en el nick), fotos/vídeo en línea, reproductor de notas de voz con transcripción, respuestas con salto al hilo, enlaces |
| Lo mismo en la terminal: |
Descargador y gestor
Comando | Qué hace |
| Todos los chats de la cuenta (✓ — ya en el archivo) |
| Descargar chat/temas y dejar en seguimiento. Opciones: |
| Descargar mensajes nuevos de todos los chats en seguimiento |
| Descargar archivos para los mensajes ya descargados |
| Transcribir notas de voz a texto para que aparezcan en la búsqueda |
| Quitar el seguimiento del chat (los archivos quedan en el disco) |
| Actualizar nombres de chats / reindexar el archivo |
| Autorizar una sesión de Telegram (teléfono / código / 2FA) |
El chat se puede indicar como id, un alias de config.toml, parte del nombre, @username
o un enlace t.me/.... Los mensajes nuevos se descargan con todas las reacciones, las encuestas
y los eventos de servicio.
🎙 Transcripción de voz
El proveedor se define en config.toml [transcription]:
Proveedor | Coste | Requisitos |
| gratis, local |
|
| gratis | Telegram Premium en la cuenta |
| de pago (Whisper API) |
|
👥 Varias cuentas
[accounts]
default = "telegram.session"
backup = "sessions/backup.session"tg login --account backup autoriza una nueva sesión. download / sync /
dialogs / meta tienen la opción --account. Cada chat del manifiesto está
actado a su cuenta.
🗺 Estado
Etapa | Estado | Qué incluye |
A | ✅ listo | Índice, búsqueda, CLI, integración con Claude Code |
B | ✅ listo | Descargador ( |
C | ✅ listo | Visores: |
Próximo: sincronización automática, OCR de imágenes, proveedor de Azure Speech, exportación de selecciones.
🔒 Seguridad
telegram.session y .env dan acceso total a la cuenta de Telegram.
Guarda estos archivos en un repositorio privado separado con los datos, no los
concilia en este repositorio ni los publiques en ningún otro lugar.
Hecho para que el agente recuerde la conversación mejor que usted.
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 Servers
- AlicenseBqualityAmaintenanceMCP server that exposes any Telegram-Archive instance to LLMs, enabling message search, chat browsing, and access to archived Telegram history.7544GPL 3.0
- AlicenseNot gradedqualityBmaintenanceAn 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.9MIT
- AlicenseAqualityCmaintenanceA local MCP server that enables full-text and semantic search over your own Telegram chats using your personal MTProto login, with everything running locally.7MIT
- AlicenseNot gradedqualityBmaintenanceRead-only MCP server for Telegram chats and channels that provides digest summaries, message search, and action items.27MIT
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.
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/Toligrim/Letopis-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server