Servidor MCP de Telegram
🤖 MCP en acción
Aquí hay una demostración de las capacidades de Telegram MCP en Claude :
Ejemplo de uso básico:
- Ejemplo: Pedirle a Claude que analice el historial de chat y envíe una respuesta:
- Mensaje enviado exitosamente al grupo:
Como puedes ver, la IA puede interactuar sin problemas con tu cuenta de Telegram, recuperando y mostrando tus chats, mensajes y otros datos de forma natural.
Una integración completa de Telegram para Claude, Cursor y cualquier cliente compatible con MCP, impulsada por Telethon y el Protocolo de Contexto de Modelo (MCP) . Este proyecto te permite interactuar con tu cuenta de Telegram programáticamente, automatizando todo, desde la mensajería hasta la gestión de grupos.
🚀 Características y herramientas
Este servidor MCP ofrece un amplio conjunto de herramientas de Telegram. ¡Todas las funciones principales de Telegram/Telethon están disponibles como herramienta!
Gestión de chat y grupos
- get_chats(page, page_size) : Lista paginada de chats
- list_chats(chat_type, limit) : Lista de chats con metadatos y filtrado
- get_chat(chat_id) : Información detallada sobre un chat
- create_group(title, user_ids) : Crea un nuevo grupo
- create_channel(title, about, megagroup) : Crea un canal o supergrupo
- edit_chat_title(chat_id, title) : Cambiar el título del chat/grupo/canal
- delete_chat_photo(chat_id) : Eliminar foto de chat/grupo/canal
- leave_chat(chat_id) : Abandonar un grupo o canal
- get_participants(chat_id) : Listar todos los participantes
- get_admins(chat_id) : Lista todos los administradores
- get_banned_users(chat_id) : Lista todos los usuarios baneados
- contribute_admin(chat_id, user_id) : Promueve al usuario a administrador
- demote_admin(chat_id, user_id) : Degradar administrador a usuario
- ban_user(chat_id, user_id) : Banear al usuario
- unban_user(chat_id, user_id) : Desbanear usuario
- get_invite_link(chat_id) : Obtener el enlace de invitación
- export_chat_invite(chat_id) : Exportar enlace de invitación
- import_chat_invite(hash) : Unirse al chat mediante hash de invitación
- join_chat_by_link(link) : Unirse al chat mediante un enlace de invitación
Mensajería
- get_messages(chat_id, page, page_size) : Mensajes paginados
- list_messages(chat_id, limit, search_query, from_date, to_date) : Mensajes filtrados
- send_message(chat_id, message) : Enviar un mensaje
- reply_to_message(chat_id, message_id, text) : Responder a un mensaje
- edit_message(chat_id, message_id, new_text) : Edita tu mensaje
- delete_message(chat_id, message_id) : Eliminar un mensaje
- forward_message(from_chat_id, message_id, to_chat_id) : Reenviar un mensaje
- pin_message(chat_id, message_id) : Fijar un mensaje
- unpin_message(chat_id, message_id) : Desanclar un mensaje
- mark_as_read(chat_id) : Marcar todo como leído
- get_message_context(chat_id, message_id, context_size) : Contexto alrededor de un mensaje
- get_history(chat_id, limit) : Historial de chat completo
- get_pinned_messages(chat_id) : Lista de mensajes fijados
- get_last_interaction(contact_id) : Mensaje más reciente con un contacto
Gestión de contactos
- list_contacts() : Lista todos los contactos
- search_contacts(consulta) : Buscar contactos
- add_contact(teléfono, nombre, apellido) : Agregar un contacto
- delete_contact(user_id) : Eliminar un contacto
- block_user(user_id) : Bloquear a un usuario
- unblock_user(user_id) : Desbloquear un usuario
- import_contacts(contacts) : Importación masiva de contactos
- export_contacts() : Exportar todos los contactos como JSON
- get_blocked_users() : Lista de usuarios bloqueados
- get_contact_ids() : enumera todos los ID de contacto
- get_direct_chat_by_contact(contact_query) : Encuentra un chat directo con un contacto
- get_contact_chats(contact_id) : enumera todos los chats con un contacto
Usuario y perfil
- get_me() : Obtenga su información de usuario
- update_profile(first_name, last_name, about) : Actualiza tu perfil
- delete_profile_photo() : Elimina tu foto de perfil
- get_user_photos(user_id, limit) : Obtener las fotos de perfil de un usuario
- get_user_status(user_id) : Obtener el estado en línea de un usuario
Medios de comunicación
- get_media_info(chat_id, message_id) : Obtener información sobre los medios en un mensaje
Búsqueda y descubrimiento
- search_public_chats(consulta) : busca chats/canales/bots públicos
- search_messages(chat_id, consulta, límite) : Buscar mensajes en un chat
- resolve_username(nombre de usuario) : Resolver un nombre de usuario a ID
Pegatinas, GIF y bots
- get_sticker_sets() : Lista de conjuntos de pegatinas
- get_bot_info(bot_username) : obtener información sobre un bot
- set_bot_commands(bot_username, commands) : Establecer comandos de bot (solo cuentas de bot)
Privacidad, configuración y otros
- get_privacy_settings() : Obtener la configuración de privacidad
- set_privacy_settings(key, allow_users, disallow_users) : Establecer la configuración de privacidad
- mute_chat(chat_id) : Silenciar notificaciones
- unmute_chat(chat_id) : Activar el silencio de las notificaciones
- archive_chat(chat_id) : Archivar un chat
- unarchive_chat(chat_id) : Desarchivar un chat
- get_recent_actions(chat_id) : Obtener acciones recientes del administrador
Funcionalidad eliminada
Tenga en cuenta que las herramientas que requieren acceso directo a la ruta de archivo en el servidor ( send_file
, download_media
, set_profile_photo
, edit_chat_photo
, send_voice
, send_sticker
, upload_file
) se han eliminado de main.py
Esto se debe a las limitaciones del entorno MCP actual en cuanto al manejo de archivos adjuntos y las rutas del sistema de archivos local.
Además, se han eliminado las herramientas relacionadas con GIF ( get_gif_search
, get_saved_gifs
, send_gif
) debido a problemas constantes con la confiabilidad en la biblioteca Telethon o las interacciones de la API de Telegram.
📋 Requisitos
- Python 3.10+
- Teletón
- SDK de Python para MCP
- Claude Desktop o Cursor (o cualquier cliente MCP)
🔧 Instalación y configuración
1. Bifurcar y clonar
2. Crea un entorno virtual
3. Generar una cadena de sesión
Siga las instrucciones para autenticar y actualizar su archivo .env
.
4. Configurar .env
Copie .env.example
a .env
y complete sus valores:
Obtén tus credenciales de API en my.telegram.org/apps .
🐳 Ejecutando con Docker
Si tiene instalados Docker y Docker Compose, puede compilar y ejecutar el servidor en un contenedor, lo que simplifica la gestión de dependencias.
1. Construye la imagen
Desde el directorio raíz del proyecto, cree la imagen de Docker:
2. Ejecución del contenedor
Tienes dos opciones:
Opción A: Usar Docker Compose (recomendado para uso local)
Este método utiliza el archivo docker-compose.yml
y lee automáticamente sus credenciales desde un archivo .env
.
- Crear archivo
.env
: Asegúrate de tener un archivo.env
en la raíz del proyecto que contengaTELEGRAM_API_ID
,TELEGRAM_API_HASH
yTELEGRAM_SESSION_STRING
(oTELEGRAM_SESSION_NAME
). Usa.env.example
como plantilla. - Ejecutar Compose:
- Utilice
docker compose up -d
para ejecutar en modo separado (segundo plano). - Presione
Ctrl+C
para detener el servidor.
- Utilice
Opción B: Usar docker run
Puede ejecutar el contenedor directamente, pasando las credenciales como variables de entorno.
- Reemplace los marcadores de posición con sus credenciales reales.
- Utilice
-e TELEGRAM_SESSION_NAME=your_session_file_name
en lugar deTELEGRAM_SESSION_STRING
si prefiere sesiones basadas en archivos (requiere montaje de volumen, consultedocker-compose.yml
para ver un ejemplo). - Los indicadores
-it
son cruciales para interactuar con el servidor.
⚙️ Configuración para Claude y Cursor
Configuración de MCP
Edite la configuración de su escritorio Claude (por ejemplo, ~/Library/Application Support/Claude/claude_desktop_config.json
) o la configuración del cursor ( ~/.cursor/mcp.json
):
Ejemplos de herramientas con código y resultados
A continuación se muestran ejemplos de las herramientas más utilizadas con su implementación y resultados de muestra.
Cómo obtener tus chats
Ejemplo de salida:
Envío de mensajes
Ejemplo de salida:
Obtener enlaces de invitación al chat
La función get_invite_link
es particularmente robusta con múltiples métodos de respaldo:
Ejemplo de salida:
Unirse a los chats mediante enlaces de invitación
Ejemplo de salida:
Buscando chats públicos
Ejemplo de salida:
Obtener chats directos con contactos
Ejemplo de salida:
Ejemplos de uso
- "Mostrar mis chats recientes"
- Envía "Hola mundo" al chat 123456789
- Añadir contacto con el teléfono +1234567890, nombre John Doe
- Crear un grupo 'Equipo de Proyecto' con los usuarios 111, 222 y 333.
- "Descargar el contenido multimedia del mensaje 42 en el chat 123456789"
- Silenciar notificaciones del chat 123456789
- "Promocionar al usuario 111 a administrador en el grupo 123456789"
- Buscar canales públicos sobre noticias
- Únete al grupo de Telegram con el enlace de invitación https://t.me/+AbCdEfGhIjK
- "Enviar una pegatina a mis mensajes guardados"
- Consigue todos mis sets de pegatinas
Puede utilizar estas herramientas a través del lenguaje natural en Claude, Cursor o cualquier cliente compatible con MCP.
🧠 Manejo de errores y robustez
Esta implementación incluye un manejo integral de errores:
- Gestión de sesiones : funciona con sesiones basadas en archivos y cadenas
- Informe de errores : errores detallados registrados en
mcp_errors.log
- Degradación elegante : múltiples enfoques alternativos para funciones críticas
- Mensajes fáciles de usar : mensajes de error claros y procesables en lugar de errores técnicos
- Detección del tipo de cuenta : Funciones que requieren que las cuentas de bot detecten y notifiquen cuando se utilizan con cuentas de usuario
- Procesamiento de enlaces de invitación : maneja varios formatos de enlaces y casos de miembros ya existentes
El código está diseñado para ser robusto frente a problemas y limitaciones comunes de la API de Telegram.
🛠️ Guía de contribuciones
- Bifurca este repositorio: chigwell/telegram-mcp
- Clona tu bifurcación:
- Crear una nueva rama:
- Realice sus cambios, agregue pruebas/documentos si es necesario.
- Envíe y abra una solicitud de extracción a chigwell/telegram-mcp con una descripción clara.
- Etiqueta a @chigwell o @l1v0n1 en tu PR para revisión.
Consideraciones de seguridad
- Nunca confirmes tu
.env
o cadena de sesión. - La cadena de sesión brinda acceso completo a tu cuenta de Telegram. ¡Mantenla segura!
- Todo el procesamiento es local; no se envían datos a ningún lugar excepto a la API de Telegram.
- Utilice
.env.example
como plantilla y mantenga privado su archivo.env
real. - Los archivos de prueba se excluyen automáticamente en
.gitignore
.
🛠️ Solución de problemas
- Verifique los registros en su cliente MCP (Claude/Cursor) y la terminal para detectar errores.
- Los registros de errores detallados se pueden encontrar en
mcp_errors.log
. - ¿Errores del intérprete? Asegúrate de que tu
.venv
esté creado y seleccionado. - ¿Bloqueo de base de datos? Use autenticación por cadena de sesión, no por sesiones basadas en archivos.
- ¿Problemas con iCloud/Dropbox? Mueve tu proyecto a una ruta local sin espacios si ves errores extraños.
- Regenera la cadena de sesión si cambias tu contraseña de Telegram o ves errores de autenticación.
- Las funciones exclusivas de bot mostrarán mensajes claros cuando se utilicen con cuentas de usuarios normales.
- ¿Errores en el script de prueba? Revisa la configuración de pruebas en
.env
para ver si hay cuentas o grupos de prueba válidos.
📄 Licencia
Este proyecto está licenciado bajo la licencia Apache 2.0 .
🙏 Agradecimientos
Mantenido por @chigwell y @l1v0n1 . ¡Se aceptan relaciones públicas!
Historia de las estrellas
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Un servidor que permite la interacción con los chats de Telegram directamente a través de hosts compatibles con MCP como Claude for Desktop, proporcionando herramientas para recuperar chats, recibir mensajes y enviar mensajes.
- 🤖 MCP en acción
- 🚀 Características y herramientas
- Funcionalidad eliminada
- 📋 Requisitos
- 🔧 Instalación y configuración
- 🐳 Ejecutando con Docker
- ⚙️ Configuración para Claude y Cursor
- Ejemplos de herramientas con código y resultados
- Ejemplos de uso
- 🧠 Manejo de errores y robustez
- 🛠️ Guía de contribuciones
- Consideraciones de seguridad
- 🛠️ Solución de problemas
- 📄 Licencia
- 🙏 Agradecimientos
- Historia de las estrellas
Related MCP Servers
- -securityFlicense-qualityAn MCP server that enables communication with users through Telegram. This server provides a tool to ask questions to users and receive their responses via a Telegram bot.Last updated -116JavaScript
- AsecurityAlicenseAqualityAn MCP server that enables saving and sharing Claude Desktop conversations, allowing users to store chats privately or make them public through a web interface.Last updated -26TypeScriptMIT License
- -securityFlicense-qualityAn MCP server that allows Claude to interact with Discord by providing tools for sending/reading messages and managing server resources through Discord's API.Last updated -JavaScript
- -securityAlicense-qualityA simple MCP server that allows Claude to access your Telegram account to read and send messages on your behalf.Last updated -4PythonApache 2.0