Skip to main content
Glama

Mila Telegram

Ejecuta tu sesión de Claude Code desde Telegram — y mantenla en marcha.

Este es un fork extendido del plugin oficial del canal de Telegram (Apache-2.0). El original conecta un bot de Telegram a una sesión de Claude Code. Este fork añade las cosas que empiezas a necesitar cuando realmente trabajas así todos los días: equipos en chats de grupo, notas de voz y un poller que no pierde tus mensajes cuando la sesión se reinicia.

Qué añade este fork

Un daemon que sobrevive a la sesión. En el original, el poller de Telegram vive dentro del proceso de la sesión: reinicia Claude Code y todos los mensajes enviados mientras tanto se pierden. Aquí el poller se ejecuta como un daemon de larga duración que añade eventos a un archivo de journal, y la sesión los reproduce desde un cursor al iniciarse. Reinicio, caída, actualización — los mensajes entrantes esperan en el archivo y llegan cuando la sesión vuelve.

Auto-unión a grupos con aprobación de un toque. Añade el bot a un grupo y envía /channel_join. El propietario recibe una tarjeta de cuatro botones en un chat privado: responder a todos, solo menciones, solo escucha (el bot oye el chat, pero las respuestas dentro de él están bloqueadas mecánicamente) o rechazar. Cada decisión — incluidas las rechazadas — se añade a un journal auth-log.jsonl, y cada chat conectado recibe una tarjeta de contexto en chats/<id>.md más un registro generado CHATS.md. Sin IDs de chat numéricos, sin editar JSON a mano; los mensajes de grupo nunca pueden cambiar la lista de permitidos por sí mismos — la aprobación solo ocurre en el chat privado del propietario.

Transcripción de voz. Las notas de voz se pasan a un comando de transcripción de tu elección (configura TELEGRAM_VOICE_TRANSCRIBE_CMD), y el texto llega al asistente junto con el audio. Si no se configura, las notas de voz simplemente pasan sin transcribir — sin valor predeterminado, sin proveedor.

Contexto de cita de respuesta. Cuando alguien responde a un mensaje anterior, el texto citado viaja con el nuevo, así el asistente responde sobre el mensaje al que realmente apuntaste en lugar de lo último en el chat.

Todo lo del plugin original sigue funcionando: emparejamiento, listas de permitidos, detección de menciones, reply / react / edit_message, fotos, adjuntos, indicadores de escritura.

Related MCP server: tsgram-mcp

Seguridad

Lee esto antes de ponerlo en una máquina que importa.

Los mensajes son entrada no confiable. Cualquier cosa que alguien envíe al bot llega a tu asistente como contenido. Alguien en un chat permitido puede intentar instruirlo. Trata el canal como una puerta pública a una sesión que puede leer archivos y ejecutar comandos.

Los grupos requieren una mención por defecto. Un grupo aprobado se añade con requireMention: true, así que el bot solo responde cuando se le dirige la palabra. Desactivar eso significa que cada mensaje de cada miembro va directo a la sesión — eso es una superficie real de inyección de prompts, no teórica. Desactívalo solo para un chat donde confíes en cada miembro.

Los adjuntos pueden salir. La herramienta reply envía cualquier ruta absoluta que el asistente le pase. Eso es deliberado — así es como sacas archivos de una sesión — pero combinado con el punto anterior también es una vía de exfiltración. Tus ajustes de permisos, no este plugin, son lo que se interpone entre un mensaje y un archivo que sale de tu máquina.

El journal de eventos es un límite de confianza. El daemon escribe eventos en un archivo y la sesión los reproduce; cualquier cosa que pueda escribir ese archivo habla con la voz de Telegram. El journal y su directorio se crean con 0600/0700, y el puente reproduce solo una lista de permitidos de dos métodos para que una línea falsificada no pueda invocar métodos arbitrarios. Mantén el directorio de estado en un sistema de archivos que solo tú puedas escribir.

Tu token vive en ~/.claude/channels/telegram/.env con 0600, y se elimina de la salida de errores antes de que se registre cualquier cosa.

Requisitos previos

  • Bun — el servidor MCP se ejecuta en Bun: curl -fsSL https://bun.sh/install | bash

Configuración

1. Crea un bot. Envía un mensaje a @BotFather, envía /newbot y copia el token que te dé (todo, incluidos los dígitos iniciales y los dos puntos).

2. Instala el plugin. Desde una sesión de Claude Code:

/plugin marketplace add shakhruz/mila-telegram
/plugin install mila-telegram@mila

3. Dale el token al servidor.

/telegram:configure 123456789:AAHfiqksKZ8...

Esto escribe TELEGRAM_BOT_TOKEN=... en ~/.claude/channels/telegram/.env. Puedes escribir ese archivo tú mismo, o configurar la variable en tu shell — el shell gana.

Para ejecutar varios bots en una máquina, apunta TELEGRAM_STATE_DIR a un directorio diferente por instancia.

4. Relanza con la bandera del canal. El servidor no se conectará sin ella:

claude --channels plugin:mila-telegram@mila

5. Empareja. Envía un mensaje directo a tu bot; responde con un código de 6 caracteres. En la sesión:

/telegram:access pair <code>

6. Ciérralo. El emparejamiento existe para capturar tu ID. Una vez que estés dentro, cambia a una lista de permitidos para que los extraños dejen de recibir códigos de emparejamiento:

/telegram:access policy allowlist

Ejecutar el daemon

El daemon es lo que hace que los reinicios sean gratuitos. Ejecuta receiver.ts como un servicio bajo el supervisor de procesos de tu elección — launchd en macOS, systemd en Linux — con RECEIVER_DAEMON=1 en su entorno:

RECEIVER_DAEMON=1 bun /path/to/plugin/receiver.ts

Escribe eventos en $TELEGRAM_STATE_DIR/inbound/events.jsonl. Cuando una sesión se inicia y encuentra el daemon vivo, lee de ese journal en lugar de hacer polling, así los dos nunca pelean por la API de Telegram. Sin daemon en ejecución, la sesión hace polling directamente exactamente como hace el plugin original — el daemon es opcional.

Configuración

Variable

Propósito

TELEGRAM_BOT_TOKEN

Token del bot de BotFather. Requerido.

TELEGRAM_STATE_DIR

Directorio de estado. Por defecto ~/.claude/channels/telegram.

TELEGRAM_VOICE_TRANSCRIBE_CMD

Comando que transcribe un archivo de voz. Sin configurar significa sin transcripción.

RECEIVER_DAEMON

Configúralo a 1 para ejecutar receiver.ts como el daemon de polling.

Control de acceso

Consulta ACCESS.md para políticas de mensajes directos, grupos, detección de menciones, configuración de entrega, comandos de habilidades y el esquema de access.json.

Los IDs son IDs de usuario numéricos — obtén el tuyo de @userinfobot. ackReaction solo acepta la lista blanca fija de emojis de Telegram.

Herramientas expuestas al asistente

Herramienta

Propósito

reply

Enviar a un chat. Toma chat_id + texto, opcionalmente reply_to para hilos nativos y files (rutas absolutas) para adjuntos. Las imágenes se envían como fotos, todo lo demás como documentos, 50MB cada uno. El texto largo se divide en fragmentos. Devuelve el/los ID(s) de mensaje enviado(s).

react

Añadir una reacción emoji por ID de mensaje. Solo la lista blanca fija de Telegram (👍 👎 ❤ 🔥 👀 …).

edit_message

Editar un mensaje que el bot envió. Bueno para "trabajando…" → resultado. Solo mensajes propios.

download_attachment

Obtener un archivo por file_id de un mensaje entrante y devolver su ruta local.

Los mensajes entrantes activan un indicador de escritura automáticamente.

Sin historial, sin búsqueda

La API de Bot de Telegram no expone ninguna de las dos. El bot solo ve los mensajes a medida que llegan — no hay forma de recuperar el pasado de un chat. Si el asistente necesita contexto anterior, tiene que pedírtelo. Este es un límite de Telegram, no de este plugin, y es por eso que las fotos se descargan con avidez al llegar.

Licencia y atribución

Apache-2.0. Este es un fork modificado del plugin de canal telegram de anthropics/claude-plugins-official, con copyright de Anthropic, PBC. Consulta NOTICE para la lista de cambios.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    F
    maintenance
    Enables remote control of AI coding assistants (Claude Code/Codex) via Telegram, allowing you to manage long-running tasks, send commands, and receive notifications from anywhere. Supports unattended mode with smart polling for up to 7 days and multi-session management.
    8
    29
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude Code sessions to Telegram, enabling AI-powered code assistance and file management directly from Telegram chats.
    92
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables Claude Code to act as an autonomous Telegram agent with tools for replying, reacting, editing messages, searching history, and handling attachments. Includes a TUI watchdog for unattended operation.
    1
    AGPL 3.0

View all related MCP servers

Related MCP Connectors

  • Telegram bridge for your MCP-compatible agent. Bidirectional, no LLM in our stack.

  • Multi-tenant Telegram gateway for AI agents — HTTP+stdio, 8 tools, MTProto User API

  • Persistent context for Claude. Your AI always knows your projects and next actions across sessions.

View all MCP Connectors

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/shakhruz/mila-telegram'

If you have feedback or need assistance with the MCP directory API, please join our Discord server