better-telegram-mcp

Servidor MCP de nível de produção para Telegram com API de Bot em modo duplo + MTProto, 6 ferramentas compostas

Documentação

Better Telegram MCP

mcp-name: io.github.n24q02m/better-telegram-mcp

Telegram para agentes de IA — mensagens, chats, mídia e contatos nos modos bot e conta de usuário completa.

CI codecov PyPI Docker License: Apache-2.0

Python Telegram MCP semantic-release Renovate

Projetos irmãos de n24q02m (clique para expandir)
ProjetoSloganTag
agent-chat-pluginAgentes de IA conversam entre si em uma pasta compartilhada — sem retransmissão humana, sem orquestrador, tra...Ferramentas
better-code-review-graphGrafo de conhecimento para revisões de código eficientes em tokens — busca semântica e chamada...MCP
better-driveSincronização bidirecional com Google Drive com filtro .driveignore — mecanismo rclone, bandeja do WindowsFerramentas
better-email-mcpE-mail IMAP/SMTP para agentes de IA — ler, enviar, organizar pastas e gerenciar anex...MCP
better-godot-mcpServidor MCP composto para Godot Engine — 17 ferramentas compostas para desenvolvimento de jogos assistido por IA...MCP
better-notion-mcpNotion com foco em Markdown para agentes de IA — páginas, bancos de dados, blocos e comentários...MCP
better-semantic-releaseFork drop-in do python-semantic-release com proteções de segurança de release integradas (orp...Ferramentas
better-telegram-mcpTelegram para agentes de IA — mensagens, chats, mídia e contatos nos modos bot e conta de usuário completa...MCP
better-workspace-mcpServidor MCP do Google Workspace (Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch...MCP
claude-pluginsMarketplace de plugins do Claude Code para os servidores MCP n24q02m — instale busca web...Marketplace
imagine-mcpCompreensão e geração de imagem e vídeo para agentes de IA — em Gemini, Op...MCP
jules-task-archiverExtensão do Chrome para operações em lote em tarefas do Jules via API batchexecute — a...Ferramentas
mcp-coreFundação compartilhada para construir servidores MCP — transporte HTTP Streamable, OAut...MCP
mnemo-mcpMemória de IA persistente com busca híbrida e sincronização incorporada. Aberto, gratuito, ilimit...MCP
qwen3-embedEmbedding e re-ranking de texto Qwen3 leve via ONNX Runtime e GGUFBiblioteca
skretSegredos sem o servidor.CLI
tacetCascata neuro-simbólica autodestilante que amortiza o custo de LLM em conhecimento...Ferramentas
web-corePacote de infraestrutura web compartilhado para busca, raspagem, segurança HTTP e st...Biblioteca
wet-mcpServidor MCP de código aberto para agentes de IA: busca web, extração de conteúdo e lib...MCP

Sumário

better-telegram-mcp MCP server

Recursos

  • Modo duplo — API de Bot (httpx) para bots, MTProto (Telethon) para contas de usuário
  • 7 ferramentas com despacho de ações: message, chat, media, contact, config, help, config__open_relay
  • Detecção automática de modo — Defina o token do bot para o modo bot, ou credenciais de API para o modo usuário
  • Autenticação OTP baseada na web — Formulário de retransmissão em modo HTTP no navegador lida com telefone, OTP e 2FA para contas de usuário
  • Autenticação CLI localauth configura uma máquina de usuário único; login permanece como um alias obsoleto
  • Anotações de ferramentas — Cada ferramenta declara readOnlyHint, destructiveHint, idempotentHint, openWorldHint
  • Recursos MCP — Documentação disponível como recursos telegram://docs/*
  • Segurança reforçada — Proteção SSRF, prevenção de travessia de caminho, sanitização de erros

Status

Dois transportes limpos: stdio (padrão, modo local de usuário único) e HTTP (modo bot + usuário, configuração de retransmissão no navegador, multi-usuário opcional). Sem camada de ponte daemon e sem auto-inicialização a partir do stdio. Consulte a Visão geral dos modos para o modelo completo de transporte.

Servidores MCP irmãos do mesmo autor estão listados na seção recolhível acima — eles compartilham esta arquitetura, então os padrões de instalação são transferíveis.

Instalação

# Method 1 (default): plugin install via Claude Code (stdio, bot mode)
/plugin marketplace add n24q02m/claude-plugins
/plugin install better-telegram-mcp@n24q02m-plugins

# Method 1 (CLI): direct uvx invocation (stdio, bot mode)
claude mcp add telegram -e TELEGRAM_BOT_TOKEN=123456:ABC-DEF -- uvx better-telegram-mcp

# Method 2 (fallback): Docker stdio
docker run -i --rm -e TELEGRAM_BOT_TOKEN=123456:ABC-DEF n24q02m/better-telegram-mcp

# Method 3 (recommended for user mode / multi-device / OAuth): Docker HTTP
docker run -d --name better-telegram-mcp-http -p 8080:8080 \
  -e MCP_TRANSPORT=http \
  -e PUBLIC_URL=https://telegram.example.com \
  -e MCP_DCR_SERVER_SECRET=<32+ random bytes> \
  n24q02m/better-telegram-mcp:latest

O modo stdio é o modo local de usuário único. O modo bot usa TELEGRAM_BOT_TOKEN; o modo usuário pode ser configurado localmente com better-telegram-mcp auth --phone <+number>. O modo usuário HTTP usa o formulário de retransmissão baseado no navegador em /authorize para telefone, OTP e 2FA.

Endpoint remoto — uma implantação HTTP é protegida por OAuth e serve /mcp. Aponte qualquer cliente MCP que fale Streamable HTTP + OAuth 2.1 para https://<your-host>/mcp; cada usuário completa a configuração de retransmissão no navegador (token do bot, ou telefone + OTP) na primeira conexão. Para executar um, use o método HTTP Docker acima ou a implantação no Cloudflare abaixo.

Matrizes de configuração completas estão no site de documentação canônico mcp.n24q02m.com/servers/better-telegram-mcp/setup/, e os trechos de colar-no-agente em claude-plugins/plugins/better-telegram-mcp/setup-with-agent.md.

Smithery

Também listado no Smithery. Conforme smithery.yaml, o Smithery inicia o servidor via stdio com uvx --python 3.13 better-telegram-mcp e não aceita configuração no momento da instalação (configSchema vazio) — as credenciais são fornecidas em tempo de execução pelo próprio fluxo de configuração do servidor: a variável de ambiente TELEGRAM_BOT_TOKEN ou o comando local auth para o modo stdio de usuário único, ou o formulário de retransmissão no navegador para o modo usuário HTTP (consulte Configuração).

Configuração

As configurações são carregadas de variáveis de ambiente com prefixo TELEGRAM_ (Pydantic Settings).

Modo stdio (local, usuário único):

VariávelObrigatóriaDescrição
TELEGRAM_BOT_TOKENSimToken do bot do @BotFather (formato 123456789:ABCdef...)

Modo HTTP (bot + usuário): as credenciais são inseridas pelo formulário de retransmissão no navegador, não por variáveis de ambiente. Variáveis de ambiente do lado do servidor para auto-hospedagem:

VariávelObrigatóriaPadrãoDescrição
MCP_TRANSPORTSimstdioDefina como http para habilitar o modo HTTP (flag --http da CLI ou TRANSPORT_MODE=http também funcionam)
PUBLIC_URLAuto-hospedagem--URL pública do servidor; a presença habilita o ramo OAuth multi-usuário
MCP_DCR_SERVER_SECRETAuto-hospedagem--Segredo compartilhado OAuth multi-usuário, 32+ bytes aleatórios (DCR_SERVER_SECRET legado ainda é aceito)
HOSTNão0.0.0.0Endereço de bind
PORTNão8080Porta HTTP

Credenciais do modo usuário (substituições opcionais): TELEGRAM_API_ID e TELEGRAM_API_HASH vêm com padrões públicos de desenvolvimento integrados, então apenas TELEGRAM_PHONE é necessário para iniciar o fluxo de telefone + OTP. TELEGRAM_SESSION_NAME e TELEGRAM_DATA_DIR personalizam o local do arquivo de sessão do Telethon. Não existe variável de ambiente TELEGRAM_PASSWORD — o 2FA de retransmissão HTTP é inserido pela interface web; a autenticação CLI local solicita interativamente e nunca armazena no ambiente.

CLI

O script de console better-telegram-mcp (instalado por uvx / pip) inicia o servidor quando executado sem subcomando, e expõe alguns subcomandos de operador para configuração local de usuário único e diagnósticos. Qualquer flag que não seja um subcomando é passada diretamente ao servidor (ex.: --http).

better-telegram-mcp            # start the MCP server (stdio, bot mode by default)
better-telegram-mcp --http     # start in HTTP mode
better-telegram-mcp --version  # print the version

Subcomandos (better-telegram-mcp <subcommand>):

SubcomandoUsoDescrição
authauth --bot-token <token> ou auth --phone <+number>Autenticar esta máquina (usuário único). O modo bot valida o token; o modo telefone executa o fluxo interativo de OTP/2FA e armazena a sessão do Telethon em disco
loginMesmos argumentos que authAlias obsoleto de auth
logoutlogoutRevogar a sessão do Telegram no servidor, excluir o arquivo de sessão local e limpar as credenciais salvas
configconfig status, config delete [--yes]Mostrar ou excluir a configuração de credenciais locais salvas (substituições de ambiente ainda têm precedência na inicialização do servidor)
relayrelay status, relay open, relay resetInspecionar, abrir (imprimir uma nova URL de configuração) ou redefinir a sessão de configuração de retransmissão no navegador
doctordoctorImprimir diagnósticos do ambiente — versão do Python, backend de credenciais, estado de configuração + retransmissão e modo de transporte
# Bot mode: validate a bot token and save it to the local config
better-telegram-mcp auth --bot-token 123456:ABC-DEF

# User mode: interactive phone + OTP (+ 2FA if enabled) sign-in
better-telegram-mcp auth --phone +15551234567

# Remove local credentials and revoke the session
better-telegram-mcp logout

O comando auth, seu alias obsoleto login e logout são de usuário único e apenas para máquina local — eles gravam a sessão do Telethon em disco e a configuração criptografada de usuário único, então execute-os na máquina que hospeda o servidor stdio. Para implantações HTTP remotas / multi-usuário, as credenciais são inseridas pelo formulário de retransmissão no navegador (consulte o endpoint remoto e Configuração).

Documentação

Documentação completa em mcp.n24q02m.com/servers/better-telegram-mcp/setup/:

Instalar com agente de IA — cole isto no seu agente de codificação de IA:

Instale o servidor MCP better-telegram-mcp seguindo os passos em https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/better-telegram-mcp/setup-with-agent.md

Ferramentas

FerramentaAçõesDescrição
messagesend, edit, delete, forward, pin, react, search, historyEnviar, editar, excluir, encaminhar mensagens. Fixar, reagir, pesquisar, navegar no histórico
chatlist, info, create, join, leave, members, admin, settings, topicsListar e gerenciar chats, grupos, canais. Membros, administração, tópicos de fórum
mediasend_photo, send_file, send_voice, send_video, downloadEnviar fotos, arquivos, notas de voz, vídeos. Baixar mídia de mensagens
contactlist, search, add, blockListar, pesquisar, adicionar contatos. Bloquear/desbloquear usuários (somente modo usuário)
configstatus, set, cache_clear, setup_status, setup_start, setup_reset, setup_completeStatus do servidor, configurações de tempo de execução, cache, configuração de credenciais (retransmissão, status, redefinição, conclusão)
help--Documentação completa para qualquer tópico
config__open_relay--Re-disparar o fluxo de configuração de retransmissão sem configuração (imprime uma nova URL de retransmissão para o formulário do navegador). Registrado via mcp-core's register_open_relay_tool para que um LLM possa reiniciar a configuração sem reinicialização manual

Recursos MCP

URIConteúdo
telegram://docs/messagesReferência de operações de mensagem
telegram://docs/chatsReferência de gerenciamento de chat
telegram://docs/mediaReferência de envio/download de mídia
telegram://docs/contactsReferência de gerenciamento de contatos
telegram://statsToda a documentação combinada

Comparação

Como o better-telegram-mcp se posiciona em relação aos concorrentes diretos em cada pilar:

Capacidadebetter-telegram-mcpchigwell/telegram-mcpsparfenyuk/mcp-telegramguangxiangdebizi/telegram-mcp
Modo Bot API (token de bot)Sim (httpx)NãoNãoSim
Modo de conta de usuário MTProtoSim (Telethon)SimSimNão
Enviar / editar / excluir mensagensSimSimNão (somente leitura, somente rascunho)Sim (somente envio)
Download de mídia de mensagensSimSimSimNão (somente envio)
Gerenciamento de contatos (adicionar / bloquear)Sim (modo usuário)SimParcial (somente listar)Não
Autenticação OTP via web / navegadorSim (formulário relay, headless)Não (string de sessão CLI)Não (login CLI)Não (token de bot pré-definido)
Remoto multi-usuário, isolamento por usuárioSim (backends por JWT-sub)NãoNãoNão
Proteção SSRFSim (validação de URL + DNS-rebinding)??Não
Prevenção de path traversalSim (caminho real com raiz permitida)Sim?Não
Auto-hospedávelSimSimSimSim

Segurança

  • Proteção SSRF — Todas as URLs validadas contra faixas de IP internas/privadas, DNS rebinding bloqueado
  • Prevenção de Path Traversal — Caminhos de arquivo validados, diretórios sensíveis bloqueados
  • Segurança do arquivo de sessão — Permissões 600, 2FA somente via interface web (nunca armazenado em variáveis de ambiente)
  • Sanitização de erros — Credenciais nunca vazadas em mensagens de erro

Compilar a partir do código-fonte

git clone https://github.com/n24q02m/better-telegram-mcp.git
cd better-telegram-mcp
uv sync
uv run better-telegram-mcp

Implantar no Cloudflare

Deploy to Cloudflare

Execute seu próprio servidor better-telegram-mcp multi-usuário sem servidor no Cloudflare (Worker + Container + KV).

Pré-requisitos: uma conta Cloudflare no plano Workers Paid — necessário para Containers (o nível gratuito do Cloudflare não inclui Containers) — e a CLI wrangler.

  1. git clone https://github.com/n24q02m/better-telegram-mcp && cd better-telegram-mcp
  2. wrangler login
  3. Provisione o namespace KV e cole o id dele em wrangler.jsonc:
    wrangler kv namespace create better-telegram-kv
    
  4. Envie a imagem do container para o seu registro gerenciado do Cloudflare (CF Containers não podem puxar de registros externos diretamente) e defina <YOUR_ACCOUNT_ID> em wrangler.jsonc:
    docker pull ghcr.io/n24q02m/better-telegram-mcp:beta
    docker tag ghcr.io/n24q02m/better-telegram-mcp:beta better-telegram-mcp:beta
    wrangler containers push better-telegram-mcp:beta   # prints registry.cloudflare.com/<ACCOUNT_ID>/better-telegram-mcp:beta
    
  5. Defina <YOUR_PUBLIC_URL> (ex.: https://telegram.example.com) e <YOUR_WORKER_DOMAIN> (ex.: telegram.example.com) em wrangler.jsonc, e então defina os segredos:
    wrangler secret put CREDENTIAL_SECRET
    wrangler secret put MCP_RELAY_PASSWORD
    wrangler secret put MCP_DCR_SERVER_SECRET
    
    CREDENTIAL_SECRET é OBRIGATÓRIO: ele deriva uma chave de assinatura OAuth determinística para que a identidade do usuário sobreviva à recriação do container. MCP_RELAY_PASSWORD controla o formulário de configuração do navegador (porta de entrada compartilhada do Gate A); MCP_DCR_SERVER_SECRET (32+ bytes aleatórios) marca a implantação como intencionalmente multi-usuário.
  6. wrangler deploy, e então conclua a configuração no formulário relay do navegador no domínio do seu Worker — cada usuário insere seu próprio token de bot ou telefone + OTP lá, então nenhuma credencial Telegram por usuário fica no Worker.

O armazenamento é mapeado para o Cloudflare via MCP_STORAGE_BACKEND=cf-kv (a configuração criptografada). NÃO defina MCP_AUTH_DISABLE em uma implantação compartilhada/pública — isso colapsa todos os usuários em um único balde de credenciais.

Modelo de confiança

Este plugin implementa TC-NearZK (em memória, efêmero). Veja modelo de confiança do mcp-core para a classificação completa.

ModoArmazenamentoCriptografiaQuem pode ler seus dados?
HTTP hospedado n24q02m (padrão)Em memória dict[sub] = MTProtoSessionSomente no processoProcesso do servidor (limpo no reinício)
HTTP auto-hospedadoIgual ao hospedadoIgualSomente você (admin = usuário)
stdio~/.config/mcp/config.enc (credenciais) + ~/.better-telegram-mcp/<name>.session (sessão Telethon)AES-GCM, chave vinculada à máquinaSomente o usuário do seu SO (permissão de arquivo 0600)

Nome de usuário do workspace (formulário de configuração HTTP)

O formulário de configuração do navegador tem um campo opcional nome de usuário do workspace. Inserir o mesmo nome de usuário sempre o leva ao mesmo balde por sub, então sua sessão permanece acessível após uma reautorização e entre dispositivos, em vez de ficar vinculada ao sujeito único cunhado para cada ida e volta de /authorize. Deixar em branco mantém o comportamento anterior por autorização.

Limite de confiança: quando o formulário é protegido por um MCP_RELAY_PASSWORD compartilhado, o nome de usuário é uma chave de partição, não um segredo — qualquer pessoa que conheça essa senha pode digitar qualquer nome de usuário e alcançar esse balde. Isso é aceitável para um grupo confiável; uma implantação multi-tenant não confiável precisa de um segredo por usuário ou OAuth delegado em vez disso.

Migração única: usuários existentes devem reautenticar uma vez após esta mudança. Nada é excluído; sessões armazenadas sob o antigo sujeito aleatório são simplesmente não mais endereçadas.

Licença

Apache-2.0 — Veja LICENSE.