Webhooks MCP
Envía solicitudes HTTP a webhooks con parámetros dinámicos.
Documentación
Webhooks MCP
Un servidor MCP (Model Context Protocol) para enviar solicitudes HTTP a webhooks con parámetros dinámicos.
Funcionalidades
- ✅ Soporte para todos los métodos HTTP: GET, POST, PUT, PATCH, DELETE
- ✅ Parámetros dinámicos de cualquier tipo (nombre, correo electrónico, teléfono, etc.)
- ✅ Headers HTTP personalizados
- ✅ Timeout configurable
- ✅ Validación de entrada con Zod
- ✅ Manejo de errores detallado
- ✅ Registros de solicitud y respuesta
Instalación
- Las dependencias ya están instaladas. Para reinstalarlas si es necesario:
cd webhooks-mcp
npm install
- Compile el TypeScript:
npm run build
Configuración en Claude Desktop
Agregue la siguiente configuración en el archivo claude_desktop_config.json:
{
"mcpServers": {
"webhooks": {
"command": "node",
"args": ["/Users/rafabarbosa/Desktop/scripts/webhooks-mcp/dist/index.js"]
}
}
}
Ubicación del archivo de configuración:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Uso
Herramienta Disponible
send_webhook
Envía una solicitud HTTP a un webhook con parámetros personalizados.
Parámetros:
url(obligatorio): URL del webhook (ej: https://meuwebhook.com.br)method(obligatorio): Método HTTP (GET, POST, PUT, PATCH, DELETE)parameters(opcional): Objeto con parámetros de cualquier tipoheaders(opcional): Headers HTTP adicionalestimeout(opcional): Timeout en milisegundos (predeterminado: 30000)
Ejemplos de Uso
1. POST con datos de usuario
{
"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 con parámetros de consulta
{
"url": "https://api.exemplo.com/dados",
"method": "GET",
"parameters": {
"filtro": "ativo",
"limite": 10,
"pagina": 1
}
}
3. PUT con headers personalizados
{
"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 simple
{
"url": "https://api.exemplo.com/deletar/123",
"method": "DELETE"
}
Comportamiento por Método HTTP
- GET/DELETE: Los parámetros se envían como parámetros de consulta en la URL
- POST/PUT/PATCH: Los parámetros se envían en el cuerpo de la solicitud como JSON
Manejo de Errores
El MCP maneja diferentes tipos de errores:
- Errores de validación: Cuando los parámetros no tienen el formato correcto
- Errores HTTP: Cuando el webhook devuelve un estado de error (4xx, 5xx)
- Errores de red: Timeout, conexión rechazada, etc.
Desarrollo
Scripts disponibles
npm run build: Compila el TypeScriptnpm run dev: Compila en modo watchnpm start: Ejecuta el servidor compilado
Estructura del proyecto
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
Probando el Servidor
Para probar si el servidor está funcionando:
# 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.
Registros
El servidor genera registros detallados:
- Solicitudes enviadas (método, URL, parámetros)
- Respuestas recibidas (estado, tiempo de respuesta)
- Errores detallados con contexto
Seguridad
- Validación rigurosa de entrada con Zod
- Headers de User-Agent que identifican el MCP
- Timeout configurable para evitar solicitudes infinitas
- Manejo seguro de errores sin exposición de datos sensibles
- Lista blanca de URLs/dominios: configure la variable de entorno
WHITELIST_URLS(separada por comas) para restringir los destinos permitidos. Ejemplo:
export WHITELIST_URLS="api.exemplo.com,https://hooks.slack.com"
Si no se configura, se permitirá cualquier URL.
- Niveles de registro configurables: defina la variable de entorno
LOG_LEVELpara controlar la verbosidad de los registros (debug,info,warn,error). Ejemplo:
export LOG_LEVEL="debug"
- Reintentos automáticos: defina las variables de entorno
RETRY_ATTEMPTS(número de intentos, predeterminado 1) yRETRY_BASE_DELAY_MS(retraso inicial en ms, predeterminado 500) para habilitar reintentos automáticos con retroceso exponencial en fallos temporales.
export RETRY_ATTEMPTS=3
export RETRY_BASE_DELAY_MS=1000
- Internacionalización (i18n): defina la variable de entorno
LANGcomopt(predeterminado) oenpara recibir mensajes en portugués o inglés.
export LANG=en
Ejemplos de Respuestas de Error
- Error de validación de parámetros:
{
"content": [
{
"type": "text",
"text": "❌ Erro ao enviar webhook!\n\n**Erro:** Erro de validação dos parâmetros\n\n**Detalhes:**\n{...}"
}
],
"isError": true
}
- Error HTTP (ejemplo 500):
{
"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 no permitida (lista blanca):
{
"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
}
Validación de Headers HTTP
Algunos headers se validan automáticamente:
Authorization: debe tener el formatoBearer <token>Content-Type: debe serapplication/json,application/x-www-form-urlencodedoapplication/xml
Ejemplo de header válido:
{
"headers": {
"Authorization": "Bearer token123",
"Content-Type": "application/json"
}
}
Ejemplo de header inválido:
{
"headers": {
"Authorization": "Token 123",
"Content-Type": "text/plain"
}
}
Preguntas Frecuentes
¿Cómo configuro dominios permitidos?
Defina la variable de entorno WHITELIST_URLS con una lista separada por comas de los dominios o URLs permitidos.
¿Cómo habilito registros más detallados?
Defina LOG_LEVEL=debug para ver registros detallados.
¿Cómo habilito reintentos automáticos?
Defina RETRY_ATTEMPTS y RETRY_BASE_DELAY_MS según lo deseado.
¿Cómo ejecuto las pruebas automatizadas?
Simplemente ejecute npm test en la raíz del proyecto.
¿Cómo reporto un error o sugiero una mejora?
Abra un issue en el repositorio de GitHub.
Próximos Pasos
- Configure Claude Desktop: Agregue la configuración en el archivo
claude_desktop_config.json - Reinicie Claude Desktop: Para cargar la nueva configuración
- Pruebe el MCP: Use Claude para enviar webhooks con diferentes parámetros
Ejemplos Prácticos
Consulte el archivo examples.json para ver ejemplos detallados de cómo usar el MCP en diferentes escenarios:
- Registro de usuarios
- Integraciones con CRM
- Notificaciones de Slack
- Procesamiento de pagos
- ¡Y mucho más!
Despliegue con Docker
Puede ejecutar el MCP fácilmente usando Docker:
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 las variables de entorno según sea necesario.
CLI Interactiva
Puede probar webhooks manualmente desde la terminal:
npx ts-node src/cli.ts
Siga las indicaciones para proporcionar URL, método, parámetros y headers.