trackmcp
Back to directory
rafabarbosa

webhook_mcp

View on GitHub

MCP server para fazer requisições HTTP para webhooks com parâmetros dinâmicos

0 stars JavaScriptOthers Updated Jun 19, 2025

Documentation

Webhooks MCP

Testes Automatizados

Um servidor MCP (Model Context Protocol) para enviar requisições HTTP para webhooks com parâmetros dinâmicos.

Funcionalidades

  • ✅ Suporte a todos os métodos HTTP: GET, POST, PUT, PATCH, DELETE
  • ✅ Parâmetros dinâmicos de qualquer tipo (nome, email, telefone, etc.)
  • ✅ Headers HTTP personalizados
  • ✅ Timeout configurável
  • ✅ Validação de entrada com Zod
  • ✅ Tratamento de erros detalhado
  • ✅ Logs de requisição e resposta

Instalação

1. As dependências já estão instaladas. Para reinstalar se necessário:

bash
cd webhooks-mcp
npm install

2. Compile o TypeScript:

bash
npm run build

Configuração no Claude Desktop

Adicione a seguinte configuração no arquivo `claude_desktop_config.json`:

json
{
  "mcpServers": {
    "webhooks": {
      "command": "node",
      "args": ["/Users/rafabarbosa/Desktop/scripts/webhooks-mcp/dist/index.js"]
    }
  }
}

Localização do arquivo de configuração:

  • macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`

Uso

Ferramenta Disponível

`send_webhook`

Envia uma requisição HTTP para um webhook com parâmetros personalizados.

Parâmetros:

  • `url` (obrigatório): URL do webhook (ex: https://meuwebhook.com.br)
  • `method` (obrigatório): Método HTTP (GET, POST, PUT, PATCH, DELETE)
  • `parameters` (opcional): Objeto com parâmetros de qualquer tipo
  • `headers` (opcional): Headers HTTP adicionais
  • `timeout` (opcional): Timeout em milissegundos (padrão: 30000)

Exemplos de Uso

1. POST com dados de usuário

json
{
  "url": "https://meuwebhook.com.br/usuarios",
  "method": "POST",
  "parameters": {
    "nome": "João Silva",
    "email": "joao@email.com",
    "telefone": "11999999999",
    "idade": 30,
    "ativo": true
  }
}

2. GET com query parameters

json
{
  "url": "https://api.exemplo.com/dados",
  "method": "GET",
  "parameters": {
    "filtro": "ativo",
    "limite": 10,
    "pagina": 1
  }
}

3. PUT com headers personalizados

json
{
  "url": "https://api.exemplo.com/atualizar/123",
  "method": "PUT",
  "parameters": {
    "nome": "João Santos",
    "status": "atualizado"
  },
  "headers": {
    "Authorization": "Bearer token123",
    "X-Custom-Header": "valor"
  }
}

4. DELETE simples

json
{
  "url": "https://api.exemplo.com/deletar/123",
  "method": "DELETE"
}

Comportamento por Método HTTP

  • GET/DELETE: Parâmetros são enviados como query parameters na URL
  • POST/PUT/PATCH: Parâmetros são enviados no body da requisição como JSON

Tratamento de Erros

O MCP trata diferentes tipos de erro:

  • Erros de validação: Quando os parâmetros não estão no formato correto
  • Erros HTTP: Quando o webhook retorna status de erro (4xx, 5xx)
  • Erros de rede: Timeout, conexão recusada, etc.

Desenvolvimento

Scripts disponíveis

  • `npm run build`: Compila o TypeScript
  • `npm run dev`: Compila em modo watch
  • `npm start`: Executa o servidor compilado

Estrutura do projeto

code
webhooks-mcp/
├── src/
│   └── index.ts          # Servidor MCP principal
├── dist/                 # Arquivos compilados
├── examples.json         # Exemplos de uso
├── claude_desktop_config.json  # Configuração de exemplo
├── package.json
├── tsconfig.json
└── README.md

Testando o Servidor

Para testar se o servidor está funcionando:

bash
# Compilar
npm run build

# Testar execução (pressione Ctrl+C para sair)
node dist/index.js

# Rodar testes automatizados
npm test

# Os exemplos do arquivo examples.json são validados automaticamente por testes automatizados.

Logs

O servidor gera logs detalhados:

  • Requisições enviadas (método, URL, parâmetros)
  • Respostas recebidas (status, tempo de resposta)
  • Erros detalhados com contexto

Segurança

  • Validação rigorosa de entrada com Zod
  • Headers de User-Agent identificando o MCP
  • Timeout configurável para evitar requisições infinitas
  • Tratamento seguro de erros sem exposição de dados sensíveis
  • Whitelist de URLs/domínios: configure a variável de ambiente `WHITELIST_URLS` (separada por vírgula) para restringir os destinos permitidos. Exemplo:
bash
export WHITELIST_URLS="api.exemplo.com,https://hooks.slack.com"

Se não configurada, qualquer URL será permitida.

  • Níveis de log configuráveis: defina a variável de ambiente `LOG_LEVEL` para controlar a verbosidade dos logs (`debug`, `info`, `warn`, `error`). Exemplo:
bash
export LOG_LEVEL="debug"
  • Retentativas automáticas: defina as variáveis de ambiente `RETRY_ATTEMPTS` (número de tentativas, padrão 1) e `RETRY_BASE_DELAY_MS` (delay inicial em ms, padrão 500) para habilitar retentativas automáticas com backoff exponencial em falhas temporárias.
bash
export RETRY_ATTEMPTS=3
export RETRY_BASE_DELAY_MS=1000
  • Internacionalização (i18n): defina a variável de ambiente `LANG` como `pt` (padrão) ou `en` para receber mensagens em português ou inglês.
bash
export LANG=en

Exemplos de Respostas de Erro

  • Erro de validação de parâmetros:
code
{
  "content": [
    {
      "type": "text",
      "text": "❌ Erro ao enviar webhook!\n\n**Erro:** Erro de validação dos parâmetros\n\n**Detalhes:**\n{...}"
    }
  ],
  "isError": true
}
  • Erro HTTP (exemplo 500):
code
{
  "content": [
    {
      "type": "text",
      "text": "❌ Erro ao enviar webhook!\n\n**Erro:** Erro HTTP: Request failed with status code 500\n\n**Detalhes:**\n{...}"
    }
  ],
  "isError": true
}
  • URL não permitida (whitelist):
code
{
  "content": [
    {
      "type": "text",
      "text": "❌ URL não permitida pelo servidor (whitelist).\n\nConsulte o administrador para liberar o domínio ou URL desejada."
    }
  ],
  "isError": true
}

Validação de Headers HTTP

Alguns headers são validados automaticamente:

  • `Authorization`: deve ser no formato `Bearer `
  • `Content-Type`: deve ser `application/json`, `application/x-www-form-urlencoded` ou `application/xml`

Exemplo de header válido:

json
{
  "headers": {
    "Authorization": "Bearer token123",
    "Content-Type": "application/json"
  }
}

Exemplo de header inválido:

json
{
  "headers": {
    "Authorization": "Token 123",
    "Content-Type": "text/plain"
  }
}

FAQ

Como configuro domínios permitidos?

Defina a variável de ambiente `WHITELIST_URLS` com uma lista separada por vírgula dos domínios ou URLs permitidos.

Como habilito logs mais detalhados?

Defina `LOG_LEVEL=debug` para ver logs detalhados.

Como habilito retentativas automáticas?

Defina `RETRY_ATTEMPTS` e `RETRY_BASE_DELAY_MS` conforme desejado.

Como executo os testes automatizados?

Basta rodar `npm test` na raiz do projeto.

Como reportar um bug ou sugerir melhoria?

Abra uma issue no repositório do GitHub.

Próximos Passos

1. Configure o Claude Desktop: Adicione a configuração no arquivo `claude_desktop_config.json`

2. Reinicie o Claude Desktop: Para carregar a nova configuração

3. Teste o MCP: Use o Claude para enviar webhooks com diferentes parâmetros

Exemplos Práticos

Veja o arquivo `examples.json` para exemplos detalhados de como usar o MCP em diferentes cenários:

  • Cadastro de usuários
  • Integrações com CRM
  • Notificações Slack
  • Processamento de pagamentos
  • E muito mais!

Deploy com Docker

Você pode rodar o MCP facilmente usando Docker:

bash
docker build -t webhook-mcp .
docker run --rm -p 3000:3000 \
  -e WHITELIST_URLS="api.exemplo.com" \
  -e LOG_LEVEL=info \
  -e RETRY_ATTEMPTS=3 \
  webhook-mcp

Adapte as variáveis de ambiente conforme necessário.

CLI Interativa

Você pode testar webhooks manualmente pelo terminal:

bash
npx ts-node src/cli.ts

Siga os prompts para informar URL, método, parâmetros e headers.

Frequently asked questions

What is webhook_mcp?

webhook_mcp is MCP server para fazer requisições HTTP para webhooks com parâmetros dinâmicos

How do I install webhook_mcp?

Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.

Is webhook_mcp open source?

Yes — it is hosted on GitHub at https://github.com/rafabarbosa/webhook_mcp.

Related MCP tools

Run your own MCP server? See who uses it and what to fix.

Measure it with TrackMCP