better-telegram-mcp

Servidor MCP de grado de producción para Telegram con API de Bot de modo dual + MTProto, 6 herramientas compuestas

Documentación

Better Telegram MCP

mcp-name: io.github.n24q02m/better-telegram-mcp

Telegram para agentes de IA: mensajes, chats, medios y contactos en modos de bot y cuenta de usuario.

ARCHIVADO 2026-09-13 — Este repositorio ya no se mantiene. Usa la API oficial de Telegram Bot en lugar de este servidor MCP. Las instalaciones existentes siguen funcionando pero no reciben actualizaciones ni soporte.

Mode CI codecov PyPI Docker License: Apache-2.0

Python Telegram MCP semantic-release Renovate

Proyectos hermanos de n24q02m (clic para expandir)
ProyectoEsloganEtiqueta
agent-chat-pluginAgentes de IA pares chatean en una carpeta compartida — sin relevo humano, sin orquestador, tra...Herramientas
better-code-review-graphGrafo de conocimiento para revisiones de código eficientes en tokens — búsqueda semántica y llam...MCP
better-driveSincronización bidireccional de Google Drive con filtro .driveignore — motor rclone, bandeja de WindowsHerramientas
better-email-mcpCorreo IMAP/SMTP para agentes de IA — leer, enviar, organizar carpetas y gestionar archivos adj...MCP
better-godot-mcpServidor MCP compuesto para Godot Engine — 17 herramientas compuestas para desarrollo de juegos asistido por IA...MCP
better-notion-mcpNotion centrado en Markdown para agentes de IA — páginas, bases de datos, bloques y comentarios...MCP
better-semantic-releaseBifurcación directa de python-semantic-release con protecciones de seguridad de lanzamiento integradas (orp...Herramientas
better-telegram-mcpTelegram para agentes de IA — mensajes, chats, medios y contactos en ambos modos de bo...MCP
better-workspace-mcpServidor MCP de Google Workspace (Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch...MCP
claude-pluginsMercado de plugins de Claude Code para los servidores MCP de n24q02m — instalar búsqueda web se...Mercado
imagine-mcpComprensión y generación de imágenes y videos para agentes de IA — en Gemini, Op...MCP
jules-task-archiverExtensión de Chrome para operaciones masivas en tareas de Jules mediante la API batchexecute — a...Herramientas
mcp-coreBase compartida para construir servidores MCP — transporte HTTP Streamable, OAut...MCP
mnemo-mcpMemoria de IA persistente con búsqueda híbrida y sincronización integrada. Abierta, gratuita, ilimit...MCP
qwen3-embedIncrustación y reordenamiento de texto Qwen3 ligero mediante ONNX Runtime y GGUFBiblioteca
skretSecretos sin el servidor.CLI
tacetUna cascada neuro-simbólica autodestiladora que amortiza el costo de LLM en conocimiento...Herramientas
web-corePaquete de infraestructura web compartida para búsqueda, extracción, seguridad HTTP y al...Biblioteca
wet-mcpServidor MCP de código abierto para agentes de IA: búsqueda web, extracción de contenido y bib...MCP

Tabla de contenidos

better-telegram-mcp MCP server

Características

  • Modo dual -- API de Bot (httpx) para bots, MTProto (Telethon) para cuentas de usuario
  • 7 herramientas con despacho de acciones: message, chat, media, contact, config, help, config__open_relay
  • Detección automática de modo -- Configura el token del bot para el modo bot, o las credenciales de API para el modo usuario
  • Autenticación OTP basada en web -- El formulario de relevo del navegador en modo HTTP maneja teléfono, OTP y 2FA para cuentas de usuario
  • Autenticación CLI local -- auth configura una máquina de un solo usuario; login sigue siendo un alias obsoleto
  • Anotaciones de herramientas -- Cada herramienta declara readOnlyHint, destructiveHint, idempotentHint, openWorldHint
  • Recursos MCP -- Documentación disponible como recursos telegram://docs/*
  • Seguridad reforzada -- Protección SSRF, prevención de recorrido de rutas, saneamiento de errores

Estado

El ejecutable usa por defecto stdio para operación local de un solo usuario. HTTP se activa con --http, MCP_TRANSPORT=http o TRANSPORT_MODE=http; HTTP es el modo de despliegue para la configuración de relevo del navegador y acceso opcional multiusuario. La matriz canónica de modos de pila nombra relevo remoto HTTP como el valor predeterminado de Telegram desplegado, por lo que cambiar el valor predeterminado del ejecutable requiere una decisión de contrato de transporte y una migración separadas. Este repositorio no afirma silenciosamente que esos dos valores predeterminados ya estén reconciliados.

No hay capas de puente daemon ni auto-generación desde stdio. Consulta Descripción general de modos para el modelo de transporte completo.

Los servidores MCP hermanos del mismo autor se enumeran en la sección plegable anterior — comparten esta arquitectura, por lo que los patrones de instalación se transfieren.

Instalación

# Local default: plugin install via Claude Code (stdio, bot mode)
/plugin marketplace add n24q02m/claude-plugins
/plugin install better-telegram-mcp@n24q02m-plugins

# Method 1 (CLI): direct uvx invocation (stdio, bot mode)
claude mcp add telegram -e TELEGRAM_BOT_TOKEN=123456:ABC-DEF -- uvx better-telegram-mcp

# Method 2 (fallback): Docker stdio
docker run -i --rm -e TELEGRAM_BOT_TOKEN=123456:ABC-DEF n24q02m/better-telegram-mcp

# Method 3 (recommended for user mode / multi-device / OAuth): Docker HTTP
docker run -d --name better-telegram-mcp-http -p 8080:8080 \
  -e MCP_TRANSPORT=http \
  -e PUBLIC_URL=https://telegram.example.com \
  -e MCP_DCR_SERVER_SECRET=<32+ random bytes> \
  n24q02m/better-telegram-mcp:latest

Matriz de instalación

ClienteInstalación
Claude Code/plugin marketplace add n24q02m/claude-plugins + /plugin install better-telegram-mcp@n24q02m-plugins (modo bot stdio), o claude mcp add como en el bloque anterior
Cursor / Windsurf / Gemini CLI / cualquier cliente MCPJSON mcpServers en la configuración del cliente — stdio command, o type: "http" + url apuntando a un despliegue

Guías completas por cliente: mcp.n24q02m.com/servers/better-telegram-mcp/setup/.

El modo stdio es el modo local de un solo usuario. El modo bot usa TELEGRAM_BOT_TOKEN; el modo usuario se puede configurar localmente con better-telegram-mcp auth --phone <+number>. El modo usuario HTTP usa el formulario de relevo basado en navegador en /authorize para teléfono, OTP y 2FA.

Punto final remoto -- un despliegue HTTP está protegido por OAuth y sirve /mcp. Apunta cualquier cliente MCP que hable Streamable HTTP + OAuth 2.1 a https://<your-host>/mcp; cada usuario completa la configuración de relevo del navegador (token de bot, o teléfono + OTP) en la primera conexión. Para ejecutar uno, usa el método Docker HTTP anterior o el despliegue en Cloudflare a continuación.

Las matrices de configuración completas están en el sitio de documentación canónico mcp.n24q02m.com/servers/better-telegram-mcp/setup/, y los fragmentos para pegar al agente en claude-plugins/plugins/better-telegram-mcp/setup-with-agent.md.

Smithery

También listado en Smithery. Según smithery.yaml, Smithery inicia el servidor sobre stdio con uvx --python 3.13 better-telegram-mcp y no toma configuración en el momento de la instalación (configSchema vacío) — las credenciales se proporcionan en tiempo de ejecución a través del propio flujo de configuración del servidor: la variable de entorno TELEGRAM_BOT_TOKEN o el comando local auth para el modo stdio de un solo usuario, o el formulario de relevo del navegador para el modo usuario HTTP (consulta Configuración).

Configuración

La configuración se carga desde variables de entorno con prefijo TELEGRAM_ (Configuración de Pydantic).

Modo stdio (local de un solo usuario):

VariableRequeridaDescripción
TELEGRAM_BOT_TOKENSíToken de bot de @BotFather (formato 123456789:ABCdef...)

Modo HTTP (bot + usuario): las credenciales se ingresan mediante el formulario de relevo del navegador, no variables de entorno. Variables de entorno del lado del servidor para autoalojamiento:

VariableRequeridaPredeterminadoDescripción
MCP_TRANSPORTSístdioConfigúralo en http para habilitar el modo HTTP (la bandera CLI --http o TRANSPORT_MODE=http también funcionan)
PUBLIC_URLAutoalojamiento--URL pública del servidor; su presencia habilita la rama OAuth multiusuario
MCP_DCR_SERVER_SECRETAutoalojamiento--Secreto compartido OAuth multiusuario, 32+ bytes aleatorios (el DCR_SERVER_SECRET heredado aún se acepta)
HOSTNo0.0.0.0Dirección de enlace
PORTNo8080Puerto HTTP

Credenciales de modo usuario (anulaciones opcionales): TELEGRAM_API_ID y TELEGRAM_API_HASH vienen con valores predeterminados públicos de desarrollo integrados, por lo que solo TELEGRAM_PHONE es necesario para iniciar el flujo de teléfono + OTP. TELEGRAM_SESSION_NAME y TELEGRAM_DATA_DIR personalizan la ubicación del archivo de sesión de Telethon. No existe la variable de entorno TELEGRAM_PASSWORD — el 2FA del relevo HTTP se ingresa a través de la interfaz web; la autenticación CLI local solicita interactivamente y nunca lo almacena en el entorno.

CLI

El script de consola better-telegram-mcp (instalado por uvx / pip) inicia el servidor cuando se ejecuta sin subcomando, y expone algunos subcomandos de operador para la configuración local de un solo usuario y diagnósticos. Cualquier bandera que no sea un subcomando se pasa directamente al servidor (por ejemplo, --http).

better-telegram-mcp            # start the MCP server (stdio, bot mode by default)
better-telegram-mcp --http     # start in HTTP mode
better-telegram-mcp --version  # print the version

Subcomandos (better-telegram-mcp <subcommand>):

SubcomandoUsoDescripción
authauth --bot-token <token> o auth --phone <+number>Autentica esta máquina (un solo usuario). El modo bot valida el token; el modo teléfono ejecuta el flujo interactivo OTP/2FA y almacena la sesión de Telethon en disco
loginMismos argumentos que authAlias obsoleto de auth
logoutlogoutRevoca la sesión de Telegram en el servidor, elimina el archivo de sesión local y borra las credenciales guardadas
configconfig status, config delete [--yes]Muestra o elimina la configuración de credenciales locales guardadas (las anulaciones de entorno aún tienen prioridad al iniciar el servidor)
relayrelay status, relay open, relay resetInspecciona, abre (imprime una URL de configuración nueva) o restablece la sesión de configuración de relevo del navegador
doctordoctorImprime diagnósticos del entorno — versión de Python, backend de credenciales, estado de configuración + relevo, y modo de transporte
# Bot mode: validate a bot token and save it to the local config
better-telegram-mcp auth --bot-token 123456:ABC-DEF

# User mode: interactive phone + OTP (+ 2FA if enabled) sign-in
better-telegram-mcp auth --phone +15551234567

# Remove local credentials and revoke the session
better-telegram-mcp logout

El comando auth, su alias obsoleto login y logout son de un solo usuario y solo para la máquina local — escriben la sesión de Telethon en disco y la configuración cifrada de un solo usuario, así que ejecútalos en la máquina que aloja el servidor stdio. Para despliegues HTTP remotos / multiusuario, las credenciales se ingresan a través del formulario de relevo del navegador en su lugar (consulta el punto final remoto y Configuración).

Documentación

Documentación completa en mcp.n24q02m.com/servers/better-telegram-mcp/:

Instalar con agente de IA -- pega esto a tu agente de codificación de IA:

Instala el servidor MCP better-telegram-mcp siguiendo los pasos en https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/better-telegram-mcp/setup-with-agent.md

Herramientas

HerramientaAccionesDescripción
messagesend, edit, delete, forward, pin, react, search, historyEnviar, editar, eliminar, reenviar mensajes. Fijar, reaccionar, buscar, ver historial
chatlist, info, create, join, leave, members, admin, settings, topicsListar y gestionar chats, grupos, canales. Miembros, administración, temas del foro
mediasend_photo, send_file, send_voice, send_video, downloadEnviar fotos, archivos, notas de voz, videos. Descargar medios de mensajes
contactlist, search, add, blockListar, buscar, agregar contactos. Bloquear/desbloquear usuarios (solo modo usuario)
configstatus, set, cache_clear, setup_status, setup_start, setup_reset, setup_completeEstado del servidor, configuración de ejecución, caché, configuración de credenciales (relay, estado, restablecer, completar)
help--Documentación completa para cualquier tema
config__open_relay--Re-activar el flujo de configuración del relay de cero (imprime una nueva URL de relay para el formulario del navegador). Registrado a través de mcp-core's register_open_relay_tool para que un LLM pueda reiniciar la configuración sin reinicio manual

Recursos MCP

URIContenido
telegram://docs/messagesReferencia de operaciones de mensajes
telegram://docs/chatsReferencia de gestión de chats
telegram://docs/mediaReferencia de envío/descarga de medios
telegram://docs/contactsReferencia de gestión de contactos
telegram://statsToda la documentación combinada

Comparación

Cómo se compara better-telegram-mcp con competidores directos en cada pilar:

Capacidadbetter-telegram-mcpchigwell/telegram-mcpsparfenyuk/mcp-telegramguangxiangdebizi/telegram-mcp
Modo API de bot (token de bot)Sí (httpx)NoNoSí
Modo cuenta de usuario MTProtoSí (Telethon)SíSíNo
Enviar / editar / eliminar mensajesSíSíNo (solo lectura, solo borrador)Sí (solo envío)
Descarga de medios de mensajesSíSíSíNo (solo envío)
Gestión de contactos (agregar / bloquear)Sí (modo usuario)SíParcial (solo listar)No
Autenticación OTP web / navegadorSí (formulario relay, sin interfaz)No (cadena de sesión CLI)No (inicio de sesión CLI)No (token de bot preconfigurado)
Remoto multiusuario, aislamiento por usuarioSí (backends por JWT-sub)NoNoNo
Protección SSRFSí (validación de URL + bloqueo de DNS-rebinding)??No
Prevención de path traversalSíSí (ruta real permitida)?No
Auto-alojableSíSíSíSí

Seguridad

  • Protección SSRF -- Todas las URLs validadas contra rangos de IP internos/privados, bloqueo de DNS rebinding
  • Prevención de Path Traversal -- Rutas de archivo validadas, directorios sensibles bloqueados
  • Seguridad de archivos de sesión -- Permisos 600, 2FA solo a través de la interfaz web (nunca almacenado en variables de entorno)
  • Sanitización de errores -- Las credenciales nunca se filtran en mensajes de error

Compilar desde el código fuente

git clone https://github.com/n24q02m/better-telegram-mcp.git
cd better-telegram-mcp
uv sync
uv run better-telegram-mcp

Desplegar en Cloudflare

Deploy to Cloudflare

Ejecuta tu propio better-telegram-mcp multiusuario sin servidor en Cloudflare (Worker + Container + KV).

Despliegue (gestionado por CD)

Los despliegues gestionados pasan por CI, nunca a mano: el trabajo deploy-cf en .github/workflows/cd.yml se ejecuta después de un lanzamiento, verifica la etiqueta lanzada, compila la imagen inmutable http en la versión lanzada, la envía al registro gestionado de Cloudflare, despliega y se controla mediante una verificación canary — una instancia gestionada solo puede ejecutar una etiqueta de lanzamiento exacta. El wrangler deploy manual contra una instancia gestionada/operada no está permitido: rompe la correspondencia etiqueta de lanzamiento ↔ imagen en vivo, y la siguiente ejecución de CD lo sobrescribiría.

El trabajo está controlado por la variable de Actions del repositorio CF_HOSTED_ENABLED — actualmente false, por lo que los lanzamientos no publican un endpoint alojado (según el Modelo de confianza, no hay un endpoint público de Telegram alojado por un operador). Para ejecutar tu propia instancia, usa los pasos de auto-alojamiento a continuación.

Requisitos previos: una cuenta de Cloudflare en el plan de pago Workers -- requerido para Containers (el nivel gratuito de Cloudflare no incluye Containers) -- y el CLI wrangler.

  1. git clone https://github.com/n24q02m/better-telegram-mcp && cd better-telegram-mcp
  2. wrangler login
  3. Aprovisiona el espacio de nombres KV y pega su id en wrangler.jsonc:
    wrangler kv namespace create better-telegram-kv
    
  4. Envía la imagen del contenedor a tu registro gestionado de Cloudflare (los Containers de CF no pueden extraer de registros externos directamente), luego establece <YOUR_ACCOUNT_ID> en wrangler.jsonc:
    docker pull ghcr.io/n24q02m/better-telegram-mcp:beta
    docker tag ghcr.io/n24q02m/better-telegram-mcp:beta better-telegram-mcp:beta
    wrangler containers push better-telegram-mcp:beta   # prints registry.cloudflare.com/<ACCOUNT_ID>/better-telegram-mcp:beta
    
  5. Establece <YOUR_PUBLIC_URL> (por ejemplo, https://telegram.example.com) y <YOUR_WORKER_DOMAIN> (por ejemplo, telegram.example.com) en wrangler.jsonc, luego establece los secretos:
    wrangler secret put CREDENTIAL_SECRET
    wrangler secret put MCP_RELAY_PASSWORD
    wrangler secret put MCP_DCR_SERVER_SECRET
    
    CREDENTIAL_SECRET es OBLIGATORIO: deriva una clave de firma OAuth determinista para que la identidad del usuario sobreviva a la recreación del contenedor. MCP_RELAY_PASSWORD controla el formulario de configuración del navegador (puerta frontal compartida Gate A); MCP_DCR_SERVER_SECRET (32+ bytes aleatorios) marca el despliegue como intencionalmente multiusuario.
  6. wrangler deploy, luego completa la configuración en el formulario relay del navegador en el dominio de tu Worker -- cada usuario ingresa su propio token de bot o teléfono + OTP allí, por lo que no hay credenciales de Telegram por usuario en el Worker.

El almacenamiento se asigna a Cloudflare a través de MCP_STORAGE_BACKEND=cf-kv (la configuración cifrada). NO establezcas MCP_AUTH_DISABLE en un despliegue compartido/público -- colapsa todos los usuarios en un solo cubo de credenciales.

Modelo de confianza

Este plugin implementa TC-NearZK (en memoria, efímero). Consulta el modelo de confianza de mcp-core para la clasificación completa.

El proyecto ya no opera un endpoint de Telegram alojado por n24q02m. El modo HTTP está disponible solo en infraestructura que un operador despliega y controla.

ModoAlmacenamientoCifrado¿Quién puede leer tus datos?
HTTP auto-alojado (opt-in)dict[sub] = MTProtoSession en memoriaSolo en procesoProceso del servidor controlado por el operador (se borra al reiniciar)
stdio~/.config/mcp/config.enc (credenciales) + ~/.better-telegram-mcp/<name>.session (sesión Telethon)AES-GCM, clave vinculada a la máquinaSolo tu usuario del SO (permiso de archivo 0600)

Nombre de usuario del espacio de trabajo (formulario HTTP de configuración)

El formulario de configuración del navegador tiene un campo opcional de nombre de usuario del espacio de trabajo. Ingresar el mismo nombre de usuario siempre te lleva al mismo cubo por sub, por lo que tu sesión permanece accesible a través de una reautorización y entre dispositivos, en lugar de estar vinculada al sujeto único emitido para cada ida y vuelta de /authorize. Dejarlo en blanco mantiene el comportamiento anterior por autorización.

Límite de confianza: cuando el formulario está controlado por un MCP_RELAY_PASSWORD compartido, el nombre de usuario es una clave de partición, no un secreto -- cualquiera que conozca esa contraseña puede escribir cualquier nombre de usuario y llegar a ese cubo. Eso está bien para un grupo de confianza; un despliegue multiinquilino no confiable necesita un secreto por usuario o OAuth delegado en su lugar.

Migración única: los usuarios existentes deben reautenticarse una vez después de este cambio. Nada se elimina; las sesiones almacenadas bajo el antiguo sujeto aleatorio simplemente ya no se abordan.

Licencia

Apache-2.0 -- Consulta LICENSE.