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+
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 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:
docker compose up --buildUtilice
docker compose up -d
para ejecutar en modo separado (segundo plano).Presione
Ctrl+C
para detener el servidor.
Opción B: Usar
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:
git clone https://github.com/<your-github-username>/telegram-mcp.gitCrear una nueva rama:
git checkout -b my-featureRealice 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
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
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 -838
- AsecurityAlicenseAqualityA bridge allowing Claude Desktop to access Telegram chats and messages via the Model Context Protocol, providing read-only capabilities to retrieve dialogs and messages from Telegram.Last updated -2145MIT 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 -10MIT License
- -securityAlicense-qualityA simple MCP server that allows Claude to access your Telegram account to read and send messages on your behalf.Last updated -6Apache 2.0