local-only server
The server can only run on the client’s local machine because it depends on local resources.
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
- edit_chat_photo(chat_id, file_path) : Establecer la foto 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
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
- get_last_interaction(contact_id) : Mensaje más reciente con un contacto
Usuario y perfil
- get_me() : Obtenga su información de usuario
- update_profile(first_name, last_name, about) : Actualiza tu perfil
- set_profile_photo(file_path) : Establece tu foto de 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
- send_file(chat_id, file_path, caption) : Envía un archivo
- send_voice(chat_id, file_path) : Envía un mensaje de voz
- download_media(chat_id, message_id, file_path) : Descargar medios
- upload_file(file_path) : Sube un archivo a los servidores de Telegram
- 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
- send_sticker(chat_id, file_path) : Envía un sticker
- get_gif_search(consulta, límite) : busca GIF
- send_gif(chat_id, gif_id) : Envía un GIF
- 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
📋 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 .
⚙️ 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 tanto con sesiones basadas en archivos como en 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
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.