Este projeto implementa um servidor MCP (Model Context Protocol) que expõe todas as funcionalidades da Evolution API v2 para modelos de linguagem.
O servidor expõe todas as categorias de funcionalidades da Evolution API:
- Verificação de status da API e instância
- Criação, exclusão e reinicialização de instâncias
- Gestão de presença
- Logout
- Mensagens de texto
- Mensagens com mídia (imagens, documentos, vídeos, áudios)
- Stickers
- Localização
- Contatos
- Enquetes e listas
- Status
- Verificação de números WhatsApp
- Marcação de mensagens como lidas
- Arquivamento de conversas
- Exclusão de mensagens
- Gestão de presença no chat
- Busca de mensagens e contatos
- Busca e atualização de informações de perfil
- Atualização de foto de perfil
- Configuração de privacidade
- Criação e gestão de grupos
- Adição/remoção de participantes
- Configuração de mensagens efêmeras
- Convites de grupo
- Typebot
- Chatwoot
- Node.js 18+
- NPM ou Yarn
- Acesso a um servidor Evolution API v2
# Instalar localmente
git clone https://github.com/IntuitivePhella/mcp-evolution-api.git
cd mcp-evolution-api
npm install
npm run build
# Executar diretamente via npx (quando publicado)
npx mcp-evolution-api
# Construir a imagem
docker build -t mcp-evolution-api .
# Executar o container
docker run -p 3000:3000 --env-file .env mcp-evolution-api
Crie um arquivo .env
na raiz do projeto com as seguintes variáveis:
# URL do servidor Evolution API
EVOLUTION_API_URL=https://seu-servidor-evolution-api.com
# Chave API da Evolution API
EVOLUTION_API_KEY=sua-chave-api
# ID da instância WhatsApp na Evolution API
EVOLUTION_API_INSTANCE=instancia-padrao
# Habilitar servidor WebSocket (opcional)
ENABLE_WEBSOCKET=true
# Porta para o servidor WebSocket (opcional)
PORT=3000
Para iniciar o servidor em modo de desenvolvimento:
npm run dev
Para compilar e executar em produção:
npm run build
npm start
# Usando os scripts do npm
npm run docker:build
npm run docker:run
Este servidor MCP suporta dois métodos de conexão:
Usado principalmente para conexões locais e integração com ferramentas como Claude Desktop.
Ideal para conexões remotas ou quando o servidor está em um contêiner Docker. Para habilitar:
ENABLE_WEBSOCKET=true
PORT=3000 # porta opcional, padrão é 3000
Adicione ao seu arquivo claude_desktop_config.json
:
{
"mcpServers": {
"evolution-api": {
"command": "node",
"args": [
"/caminho/completo/para/mcp-evolution-api/dist/index.js"
],
"env": {
"EVOLUTION_API_URL": "https://seu-servidor-evolution-api.com",
"EVOLUTION_API_KEY": "sua-chave-api",
"EVOLUTION_API_INSTANCE": "sua-instancia"
}
}
}
}
Veja um exemplo completo em examples/claude_desktop_config.json.
Para configurar no n8n, consulte o guia detalhado em examples/n8n_config.md.
O servidor MCP expõe as seguintes ferramentas que podem ser chamadas pelo cliente MCP:
getApiStatus
: Verifica o status da Evolution API
getInstanceStatus
: Verifica o status da conexão do WhatsAppsetPresence
: Define o status de presençalogoutInstance
: Desconecta a instânciarestartInstance
: Reinicia a instância
sendTextMessage
: Envia uma mensagem de textosendMedia
: Envia mídia (imagem, documento, vídeo, áudio)sendAudio
: Envia áudio/mensagem de vozsendSticker
: Envia um stickersendLocation
: Envia uma localizaçãosendContact
: Envia um contatosendPoll
: Envia uma enquete
checkWhatsAppNumber
: Verifica se um número é do WhatsAppmarkMessageAsRead
: Marca mensagem como lidaarchiveChat
: Arquiva/desarquiva um chatdeleteMessageForEveryone
: Exclui mensagem para todos
updateProfileName
: Atualiza o nome do perfilupdateProfileStatus
: Atualiza o status do perfil
createGroup
: Cria um novo grupoaddGroupParticipants
: Adiciona participantes a um grupo
O servidor MCP disponibiliza os seguintes recursos:
contacts://list
: Lista todos os contatos disponíveischats://list
: Lista todas as conversas disponíveisgroups://list
: Lista todos os grupos disponíveisprofile://info
: Exibe informações do perfilprivacy://settings
: Exibe configurações de privacidade
import { McpClient } from "@modelcontextprotocol/sdk/client/mcp.js";
// Conecte-se ao servidor MCP
const client = new McpClient();
await client.connect(mcpServerTransport);
// Verificar status da API
const status = await client.callTool("getApiStatus", {});
console.log(status.content[0].text);
// Enviar uma mensagem
const msgResult = await client.callTool("sendTextMessage", {
number: "5511999999999",
text: "Olá, esta é uma mensagem de teste!"
});
console.log(msgResult.content[0].text);
// Enviar uma mídia
const mediaResult = await client.callTool("sendMedia", {
number: "5511999999999",
url: "https://exemplo.com/imagem.jpg",
caption: "Veja esta imagem!",
mediaType: "image"
});
console.log(mediaResult.content[0].text);
// Carregar recursos
const groups = await client.loadResource("groups://list");
console.log(groups.contents[0].text);
MIT