Integrations
Enables interaction with Telegram chats, allowing users to retrieve lists of chats, fetch message history, and send messages directly through the Telegram platform.
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:Copy
- 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:Copy
- Crear una nueva rama:Copy
- 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
local-only server
The server can only run on the client's local machine because it depends on local resources.
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 in Action
- 🚀 Features & Tools
- Removed Functionality
- 📋 Requirements
- 🔧 Installation & Setup
- 🐳 Running with Docker
- ⚙️ Configuration for Claude & Cursor
- 📝 Tool Examples with Code & Output
- 🎮 Usage Examples
- 🧠 Error Handling & Robustness
- 🛠️ Contribution Guide
- 🔒 Security Considerations
- 🛠️ Troubleshooting
- 📄 License
- 🙏 Acknowledgements
- Star History
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 allows Claude to create, manage and publish X/Twitter posts directly through the chat interface.Last updated -535PythonMIT License
- 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