Telegram Notifier (Botfather)

Usa el bot de Botfather para notificarte en Telegram.

Documentación

Servidor MCP de Telegram Notifier

Un servidor MCP que permite a un LLM enviar mensajes y archivos a un usuario a través de un bot de Telegram, y leer mensajes entrantes. Sin bibliotecas HTTP o de Telegram externas — solo la API nativa de fetch y el SDK oficial de MCP.

Inicio Rápido

No se requiere clonar ni compilar — solo añade la configuración a tu cliente MCP.

1. Crear un Bot de Telegram

  1. Abre Telegram y envía un mensaje a @BotFather
  2. Envía /newbot y sigue las instrucciones para nombrar tu bot
  3. Copia el token del bot que recibas (por ejemplo, 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11)

2. Encuentra tu ID de Chat

  1. Envía cualquier mensaje a tu nuevo bot en Telegram
  2. Abre la siguiente URL en tu navegador, reemplazando YOUR_BOT_TOKEN con tu token real:
    https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates
    
  3. En la respuesta JSON, busca "chat":{"id": 123456789} — ese número es tu ID de chat

Consejo: Para chats de grupo, añade el bot al grupo, envía un mensaje y revisa la misma URL. Los IDs de chats de grupo son números negativos (por ejemplo, -1001234567890).

3. Añadir a tu Cliente MCP

Claude Desktop

Añade esto a tu archivo de configuración de Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "telegram-notifier": {
      "command": "npx",
      "args": ["telegram-notifier-mcp"],
      "env": {
        "TELEGRAM_BOT_TOKEN": "your-bot-token-here",
        "TELEGRAM_CHAT_ID": "your-chat-id-here"
      }
    }
  }
}

Claude Code

Añade a .mcp.json o ~/.claude.json de tu proyecto:

{
  "mcpServers": {
    "telegram-notifier": {
      "command": "npx",
      "args": ["telegram-notifier-mcp"],
      "env": {
        "TELEGRAM_BOT_TOKEN": "your-bot-token-here",
        "TELEGRAM_CHAT_ID": "your-chat-id-here"
      }
    }
  }
}

Codex CLI

Puedes configurar Codex CLI de cualquiera de estas formas:

Opción A: Añadirlo manualmente en ~/.codex/config.toml

[mcp_servers.telegram-notifier]
command = "npx"
args = ["telegram-notifier-mcp"]

[mcp_servers.telegram-notifier.env]
TELEGRAM_BOT_TOKEN = "your-bot-token-here"
TELEGRAM_CHAT_ID = "your-chat-id-here"

Opción B: Añadirlo con un comando CLI

codex mcp add telegram-notifier \
  --env TELEGRAM_BOT_TOKEN=your-bot-token-here \
  --env TELEGRAM_CHAT_ID=your-chat-id-here \
  -- npx telegram-notifier-mcp

Eso es todo — tu LLM ahora puede enviarte notificaciones de Telegram.

Configuración

El servidor utiliza dos variables de entorno:

VariableRequeridaDescripción
TELEGRAM_BOT_TOKENSíToken del bot de @BotFather
TELEGRAM_CHAT_IDNoID de chat predeterminado. Puede sobrescribirse por llamada de herramienta mediante el parámetro chatId.

El servidor saldrá con un error si TELEGRAM_BOT_TOKEN no está configurado. Si TELEGRAM_CHAT_ID no está configurado, debes pasar chatId a cada llamada de herramienta.

Herramientas

send_message

Envía un mensaje de texto a un chat de Telegram.

ParámetroTipoRequeridoDescripción
textstringSíEl texto del mensaje a enviar
chatIdstringNoID de chat de destino (sobrescribe TELEGRAM_CHAT_ID)
parseModestringNoMarkdown, MarkdownV2 o HTML
disableNotificationbooleanNoEnviar silenciosamente sin sonido de notificación

send_document

Envía un archivo/documento a un chat de Telegram.

ParámetroTipoRequeridoDescripción
filePathstringSíRuta absoluta al archivo
chatIdstringNoID de chat de destino (sobrescribe TELEGRAM_CHAT_ID)
captionstringNoLeyenda para el documento
parseModestringNoMarkdown, MarkdownV2 o HTML
disableNotificationbooleanNoEnviar silenciosamente sin sonido de notificación

send_photo

Envía una foto/imagen a un chat de Telegram.

ParámetroTipoRequeridoDescripción
filePathstringSíRuta absoluta al archivo de imagen
chatIdstringNoID de chat de destino (sobrescribe TELEGRAM_CHAT_ID)
captionstringNoLeyenda para la foto
parseModestringNoMarkdown, MarkdownV2 o HTML
disableNotificationbooleanNoEnviar silenciosamente sin sonido de notificación

send_video

Envía un video a un chat de Telegram.

ParámetroTipoRequeridoDescripción
filePathstringSíRuta absoluta al archivo de video
chatIdstringNoID de chat de destino (sobrescribe TELEGRAM_CHAT_ID)
captionstringNoLeyenda para el video
parseModestringNoMarkdown, MarkdownV2 o HTML
disableNotificationbooleanNoEnviar silenciosamente sin sonido de notificación

send_audio

Envía un archivo de audio a un chat de Telegram.

ParámetroTipoRequeridoDescripción
filePathstringSíRuta absoluta al archivo de audio
chatIdstringNoID de chat de destino (sobrescribe TELEGRAM_CHAT_ID)
captionstringNoLeyenda para el audio
parseModestringNoMarkdown, MarkdownV2 o HTML
disableNotificationbooleanNoEnviar silenciosamente sin sonido de notificación

get_updates

Comprueba si hay nuevos mensajes enviados al bot. Solo devuelve mensajes recibidos desde la última comprobación.

ParámetroTipoRequeridoDescripción
limitnumberNoMáximo de mensajes a recuperar (1-100, predeterminado 10)
timeoutnumberNoTiempo de espera de polling largo en segundos (0-30, predeterminado 0). Establece >0 para esperar nuevos mensajes.

Descargas de Archivos

Cuando un mensaje contiene medios (foto, documento, video, audio, mensaje de voz o sticker), el servidor descarga automáticamente el archivo a ~/.telegram-notifier-mcp/downloads/ e incluye la ruta local en la salida. Esto permite que el LLM lea o procese el archivo directamente.

  • Los archivos se guardan como <timestamp>-<original_filename> para evitar colisiones
  • Las fotos se descargan en la resolución más alta disponible
  • La API de Bot de Telegram limita las descargas a 20 MB
  • Si una descarga falla, la salida se reduce a solo etiquetar el tipo de medio

Pruebas con el Inspector de MCP

Puedes probar el servidor de forma interactiva usando el Inspector de MCP:

TELEGRAM_BOT_TOKEN="your-token" TELEGRAM_CHAT_ID="your-chat-id" \
  npx @modelcontextprotocol/inspector npx telegram-notifier-mcp

Esto abre una interfaz de navegador donde puedes invocar cada herramienta y ver los resultados.

Manejo de Errores

El servidor maneja los errores de forma elegante y devuelve mensajes descriptivos:

EscenarioComportamiento
Falta TELEGRAM_BOT_TOKENEl servidor sale al inicio con instrucciones
Falta ID de chat (sin variable de entorno, sin parámetro)Devuelve isError: true con mensaje
Archivo no encontradoDevuelve isError: true con la ruta del archivo
Archivo supera 50 MBDevuelve isError: true con el tamaño del archivo
Error de API de TelegramDevuelve isError: true con la descripción del error de Telegram

Todos los registros del servidor van a stderr para que nunca interfieran con el transporte MCP stdio en stdout.

Límites de Tamaño de Archivo

Telegram impone un límite de 50 MB para subidas de archivos a través de la API de Bot. El servidor valida el tamaño del archivo antes de subirlo y devuelve un error si se excede el límite.

Desarrollo

git clone https://github.com/AdeshAtole/telegram-notifier-mcp
cd telegram-notifier-mcp
npm install
npm run build

# Watch mode — rebuilds on file changes
npm run dev

Publicación

Las versiones se publican en npm automáticamente mediante GitHub Actions cuando creas una versión de GitHub.

Configuración:

  1. Añade tu token de npm como secreto del repositorio llamado NPM_TOKEN en Configuración de GitHub > Secretos y variables > Acciones
  2. Incrementa la versión en package.json
  3. Crea una nueva versión de GitHub — el flujo de trabajo compilará y publicará en npm

Licencia

MIT