LigueLead
Envie SMS, SMS Flash e chamadas de voz no Brasil via API LigueLead. CPaaS brasileiro com preços em BRL e pagamentos via PIX.
Documentação
📱 Servidor MCP LigueLead
Servidor MCP para envio de SMS, SMS Flash, chamadas de voz e RCS no Brasil através da API LigueLead. Permite que Claude, Cursor, Windsurf e qualquer agente de IA compatível com MCP enviem comunicações reais — sem código, sem configuração complexa.
🇧🇷 CPaaS Brasileiro · Preço em BRL · Pagamento via PIX · Suporte em PT-BR
Ferramentas disponíveis
| Ferramenta | Descrição |
|---|---|
send_sms | Envia campanha de SMS ou SMS Flash para números de telefone brasileiros |
list_voice_uploads | Lista todos os arquivos de áudio de voz enviados |
get_voice_upload | Obtém detalhes de um envio de voz específico |
upload_voice_audio | Envia áudio MP3/WAV para campanhas de voz |
send_voice_message | Envia uma campanha de voz para uma lista de telefones |
list_rcs_agents | Lista agentes RCS (marcas remetentes) e seu status de revisão |
create_rcs_template_text | Cria um template RCS de texto simples |
create_rcs_template_media | Cria um template RCS com imagem/vídeo |
create_rcs_template_card | Cria um template RCS de rich card com botões |
create_rcs_template_carousel | Cria um template RCS de carrossel (2-10 cards) |
send_rcs | Envia uma campanha RCS (baseada em template ou texto livre) |
Início rápido
Opção 1: npx (recomendado)
Sem necessidade de instalação — basta adicionar à configuração do seu cliente MCP:
{
"mcpServers": {
"liguelead": {
"command": "npx",
"args": ["-y", "@liguelead/mcp-server"],
"env": {
"LIGUELEAD_API_TOKEN": "your-token",
"LIGUELEAD_APP_ID": "your-app-id",
"TRANSPORT": "stdio"
}
}
}
}
Opção 2: Clonar e compilar
git clone https://github.com/liguelead/mcp.git
cd mcp
npm install
cp .env.example .env # Edit with your credentials
npm run build
npm start
O servidor inicia em http://localhost:3000 por padrão.
Obtendo suas credenciais
- Acesse areadocliente.liguelead.app.br
- Navegue até Integrações → API Token
- Crie um App e copie o API Token e o App ID
Transportes
| Transporte | Caso de uso | Variável de ambiente |
|---|---|---|
| HTTP Streamable (padrão) | Servidor remoto, qualquer cliente MCP | TRANSPORT=http |
| stdio | Local — Claude Desktop / Claude Code / Cursor | TRANSPORT=stdio |
Configuração do cliente
Claude Desktop (stdio)
Edite claude_desktop_config.json:
{
"mcpServers": {
"liguelead": {
"command": "npx",
"args": ["-y", "@liguelead/mcp-server"],
"env": {
"LIGUELEAD_API_TOKEN": "your-token",
"LIGUELEAD_APP_ID": "your-app-id",
"TRANSPORT": "stdio"
}
}
}
}
Claude Code
claude mcp add -s user liguelead \
-e LIGUELEAD_API_TOKEN=your-token \
-e LIGUELEAD_APP_ID=your-app-id \
-e TRANSPORT=stdio \
-- npx -y @liguelead/mcp-server
Cursor / Windsurf
Adicione às suas configurações MCP a mesma configuração do Claude Desktop acima.
Servidor HTTP remoto
Qualquer cliente MCP que suporte HTTP Streamable pode conectar via:
POST https://your-server.com/mcp
As credenciais permanecem no servidor — o cliente não precisa delas.
Ponte mcp-remote
Para clientes que não suportam HTTP nativamente (ex.: Claude Desktop conectando a um servidor remoto):
{
"mcpServers": {
"liguelead": {
"command": "npx",
"args": ["mcp-remote", "https://your-server.com/mcp"]
}
}
}
Implantação
Docker
docker build -t liguelead-mcp .
docker run -d -p 3000:3000 \
-e LIGUELEAD_API_TOKEN=your-token \
-e LIGUELEAD_APP_ID=your-app-id \
liguelead-mcp
Railway / Render
- Conecte o repositório Git
- Defina as variáveis de ambiente:
LIGUELEAD_API_TOKEN,LIGUELEAD_APP_ID - Comando de build:
npm install && npm run build - Comando de início:
npm start
Segurança de credenciais
| Cenário | Onde as credenciais ficam |
|---|---|
| stdio (local) | Variáveis de ambiente na configuração do cliente |
| HTTP (remoto) | Variáveis de ambiente no servidor |
| Docker | Flags -e ou segredos do orquestrador |
| CI/CD | Segredos do provedor (GitHub Actions, etc.) |
⚠️ As credenciais NUNCA são commitadas no código. O arquivo .env está em .gitignore.
Webhook
Configuração
- Acesse areadocliente.liguelead.app.br
- Navegue até Integrações → API Token → Webhook URL
- Insira a URL do seu endpoint HTTPS público
- Salve
Uma única URL recebe notificações de todos os canais (SMS, SMS Flash, Voz, RCS).
Consultar webhooks recebidos
curl http://localhost:3000/webhooks
Retorna:
{
"total": 42,
"webhooks": [...]
}
⚠️ CRÍTICO: A LigueLead NÃO tenta novamente webhooks com falha. Se o seu endpoint estiver fora do ar, o webhook é perdido permanentemente.
Formato de número de telefone
Números de telefone brasileiros são aceitos em três formatos:
| Formato | Exemplo | Dígitos |
|---|---|---|
| Nacional (recomendado) | 11999999999 | 11 |
| Internacional | +5511999999999 | 14 caracteres |
DDI sem + | 5511999999999 | 13 |
Limites de SMS
| Parte | Caracteres | Créditos |
|---|---|---|
| 1ª parte | até 160 | 1 crédito |
| Partes adicionais | a cada 152 caracteres | 1 crédito cada |
| Máximo total | 1.600 caracteres | ~11 créditos |
🚫 SMS Flash NÃO permite URLs no conteúdo da mensagem.
Limites de chamadas de voz
- Formatos suportados: MP3 e WAV (sem AAC/M4A)
- Tamanho máximo do arquivo: 50 MB (recomendado: 5–10 MB)
- Cobrança: Até 30s = 1 crédito; acima de 30s = 2 créditos
- Janela de discagem: 08:00–21:44 (America/Sao_Paulo). Solicitações após 21:45 são enfileiradas até 08:00.
Templates e limites de RCS
As campanhas RCS são construídas a partir de um template registrado via uma das ferramentas create_rcs_template_*,
e depois enviadas com send_rcs usando o template_id retornado (ou como mensagem livre,
sem template).
| Tipo de template | Ferramenta | Observações |
|---|---|---|
| Texto | create_rcs_template_text | Texto simples, sem mídia/botões |
| Mídia | create_rcs_template_media | Imagem ou vídeo curto (media_url ou media_file, mutuamente exclusivos) |
| Rich card | create_rcs_template_card | Mídia opcional + 1-4 botões (reply, open_url, dial_call) |
| Carrossel | create_rcs_template_carousel | 2-10 rich cards; todos os cards devem declarar o mesmo número/tipo/ordem de botões |
bodymáx. 1.600 caracteres; suporta placeholders de variável{{N}}, substituíveis viadefault_variables(template) outemplate_variables(no envio)media_fileaceita um data URI base64, máx. 5 MB decodificadofallback_message(máx. 306 caracteres) é o SMS enviado se a entrega RCS falharsend_rcslivremessageé limitado a 306 caracteres (mutuamente exclusivo comtemplate_id) — reutilizado como fallback de SMS- Operação assíncrona — retorna 202 quando enfileirado; o status de entrega chega via webhook configurado
Limites de taxa
| Limite | Valor |
|---|---|
| Solicitações por minuto | 600.000 |
| Solicitações simultâneas | 10.000 |
| Destinatários por solicitação | 10.000 |
Estrutura do projeto
liguelead-mcp/
├── src/
│ ├── index.ts # Entry point — HTTP or stdio
│ ├── config.ts # Env var validation (Zod) + .env loader
│ ├── lib/
│ │ ├── api-client.ts # HTTP client for LigueLead API
│ │ ├── validators.ts # Phone/RCS schemas (Zod)
│ │ └── webhook.ts # Webhook handler + GET /webhooks
│ └── tools/
│ ├── sms.ts # Tool: send_sms
│ ├── voice.ts # Tools: voice (list/get/upload/send)
│ └── rcs.ts # Tools: RCS (templates + send_rcs)
├── skill/ # Claude Code Skill
│ └── SKILL.md
├── .env.example
├── Dockerfile
├── LICENSE
├── package.json
├── server.json
├── glama.json
└── README.md
Solução de problemas
| Problema | Solução |
|---|---|
LIGUELEAD_API_TOKEN is required | Configure .env ou variáveis de ambiente |
401 Unauthorized | Verifique api-token e app-id no painel da LigueLead |
429 Too Many Requests | Limite de taxa excedido — aguarde a reinicialização |
| Upload rejeitado | Apenas MP3 e WAV são aceitos (sem AAC/M4A) |
| Build desatualizado | rm -rf dist && npm run build |
Licença
MIT
🇧🇷 Documentação em Português
Servidor MCP LigueLead
Servidor MCP para a API da LigueLead — SMS, SMS Flash, Campanhas de Voz e RCS no Brasil.
Permite que Claude, Cursor, Windsurf e qualquer agente de IA compatível com MCP enviem comunicações reais — sem código, sem configuração complexa.
CPaaS Brasileiro · Preço em BRL · Pagamento via PIX · Suporte em PT-BR
Início rápido
Opção 1: npx (recomendado)
Sem instalação — basta adicionar à configuração do seu cliente MCP:
{
"mcpServers": {
"liguelead": {
"command": "npx",
"args": ["-y", "@liguelead/mcp-server"],
"env": {
"LIGUELEAD_API_TOKEN": "seu-token",
"LIGUELEAD_APP_ID": "seu-app-id",
"TRANSPORT": "stdio"
}
}
}
}
Opção 2: Clonar e compilar
git clone https://github.com/liguelead/mcp.git
cd mcp
npm install
cp .env.example .env # Edite com suas credenciais
npm run build
npm start
Obtendo suas credenciais
- Acesse areadocliente.liguelead.app.br
- Vá em Integrações → API Token
- Crie um App e copie o API Token e o App ID
Ferramentas disponíveis
| Ferramenta | Descrição |
|---|---|
send_sms | Envia campanha de SMS ou SMS Flash para números brasileiros |
list_voice_uploads | Lista todos os áudios enviados |
get_voice_upload | Detalhes de um áudio específico |
upload_voice_audio | Upload de áudio MP3/WAV para campanhas de voz |
send_voice_message | Dispara campanha de voz para lista de telefones |
list_rcs_agents | Lista os agentes de RCS (marcas remetentes) e o status de aprovação |
create_rcs_template_text | Cria um template de RCS somente texto |
create_rcs_template_media | Cria um template de RCS com imagem/vídeo |
create_rcs_template_card | Cria um template de RCS com rich card e botões |
create_rcs_template_carousel | Cria um template de RCS carrossel (2-10 cards) |
send_rcs | Dispara uma campanha de RCS (com template ou texto livre) |
Configuração por cliente MCP
Claude Desktop (stdio)
Edite claude_desktop_config.json:
{
"mcpServers": {
"liguelead": {
"command": "npx",
"args": ["-y", "@liguelead/mcp-server"],
"env": {
"LIGUELEAD_API_TOKEN": "seu-token",
"LIGUELEAD_APP_ID": "seu-app-id",
"TRANSPORT": "stdio"
}
}
}
}
Claude Code
claude mcp add -s user liguelead \
-e LIGUELEAD_API_TOKEN=seu-token \
-e LIGUELEAD_APP_ID=seu-app-id \
-e TRANSPORT=stdio \
-- npx -y @liguelead/mcp-server
Formato de números de telefone
| Formato | Exemplo | Dígitos |
|---|---|---|
| Nacional (recomendado) | 11999999999 | 11 |
| Internacional | +5511999999999 | 14 caracteres |
DDI sem + | 5511999999999 | 13 |
Limites de SMS
| Parte | Caracteres | Créditos |
|---|---|---|
| 1ª parte | até 160 | 1 crédito |
| Partes adicionais | a cada 152 caracteres | 1 crédito cada |
| Máximo total | 1.600 caracteres | ~11 créditos |
🚫 SMS Flash NÃO permite URLs no conteúdo da mensagem.
Limites de voz
- Formatos suportados: MP3 e WAV (AAC e M4A não são suportados)
- Tamanho máximo: 50 MB (recomendado: 5–10 MB)
- Cobrança: Até 30s = 1 crédito; acima de 30s = 2 créditos
- Janela de discagem: 08h00–21h44 (America/Sao_Paulo). Solicitações após 21h45 ficam na fila até as 08h00.
Templates e limites de RCS
Uma campanha de RCS é criada a partir de um template registrado com uma das ferramentas
create_rcs_template_*, e enviada com send_rcs usando o template_id retornado
(ou como mensagem livre, sem template).
| Tipo de template | Ferramenta | Observações |
|---|---|---|
| Texto | create_rcs_template_text | Somente texto, sem mídia/botões |
| Mídia | create_rcs_template_media | Imagem ou vídeo curto (media_url ou media_file, mutuamente exclusivos) |
| Rich card | create_rcs_template_card | Mídia opcional + 1-4 botões (reply, open_url, dial_call) |
| Carrossel | create_rcs_template_carousel | 2-10 rich cards; todos os cards devem declarar o mesmo número/tipo/ordem de botões |
bodyaté 1.600 caracteres; suporta placeholders{{N}}, substituíveis viadefault_variables(template) outemplate_variables(no envio)media_fileaceita um data URI em base64, máximo 5 MB decodificadofallback_message(máx. 306 caracteres) é o SMS enviado caso a entrega via RCS falhe- O
messagelivre dosend_rcsé limitado a 306 caracteres (mutuamente exclusivo comtemplate_id) — reaproveitado como fallback de SMS - Operação assíncrona — retorna 202 ao ser enfileirada; o status chega pelo webhook configurado
Webhook
- Acesse areadocliente.liguelead.app.br
- Vá em Integrações → API Token → Webhook URL
- Insira a URL HTTPS do seu endpoint
- Salve
Uma única URL recebe notificações de todos os canais (SMS, SMS Flash, Voz, RCS).
⚠️ CRÍTICO: A LigueLead NÃO faz retry. Se o endpoint falhar, o webhook é perdido permanentemente.