Slack Webhook

Publica mensajes en canales de Slack usando webhooks entrantes.

Documentación

Servidor MCP de Slack Webhook

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a aplicaciones LLM como Claude Desktop enviar mensajes a canales de Slack mediante webhooks entrantes.

Características

  • Enviar mensajes de texto plano o con formato markdown a Slack
  • Gestión de URL de webhook simple y segura
  • Construido con Deno para desarrollo moderno en TypeScript
  • Cobertura completa de pruebas

Instalación

Requisitos previos

  • Deno instalado en tu sistema
  • Un espacio de trabajo de Slack con webhooks entrantes habilitados
  • Claude Desktop (u otro cliente compatible con MCP)

Configuración

  1. Clona este repositorio:

    git clone https://github.com/yourusername/slack-webhook-mcp.git
    cd slack-webhook-mcp
    
  2. Crea un webhook entrante de Slack:

    • Ve al Directorio de Aplicaciones de tu espacio de trabajo de Slack
    • Busca "Incoming WebHooks" y agrégalo
    • Elige un canal y crea una URL de webhook
    • Copia la URL del webhook (debería verse como https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX)
  3. Configura tu entorno:

    cp .env.example .env
    # Edit .env and add your webhook URL
    

Configuración

Claude Desktop

Añade este servidor a tu archivo de configuración de Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "slack-webhook": {
      "command": "deno",
      "args": ["run", "--allow-net", "--allow-env", "--allow-read", "/path/to/slack-webhook-mcp/src/index.ts"],
      "env": {
        "SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
      }
    }
  }
}

Usando el binario compilado

También puedes compilar el servidor a un ejecutable independiente:

deno task build

Luego usa el binario en tu configuración:

{
  "mcpServers": {
    "slack-webhook": {
      "command": "/path/to/slack-webhook-mcp/slack-webhook-server",
      "env": {
        "SLACK_WEBHOOK_URL": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL"
      }
    }
  }
}

Uso

Una vez configurado, puedes usar la siguiente herramienta en Claude Desktop:

send_slack_message

Envía un mensaje a tu canal de Slack configurado.

Parámetros:

  • message (obligatorio): El texto del mensaje a enviar
  • webhook_url (opcional): Sobrescribe la URL de webhook predeterminada
  • format (opcional): Formato del mensaje - "text" o "markdown" (por defecto: "markdown")

Ejemplos:

  • "Envía un mensaje a Slack diciendo que el despliegue fue exitoso"
  • "Notifica al equipo en Slack que las pruebas están pasando"
  • "Envía 'Build fallido: tiempo de espera agotado en la suite de pruebas' a Slack con formato de texto plano"

Desarrollo

Comandos disponibles

# Run in development mode with auto-reload
deno task dev

# Run tests
deno task test

# Run tests with coverage
deno task test:coverage

# Type checking
deno task check

# Linting
deno task lint

# Format code
deno task fmt

# Build standalone executable
deno task build

Estructura del proyecto

slack-webhook-mcp/
├── src/
│   ├── index.ts                # Entry point
│   ├── server.ts               # MCP server implementation
│   ├── tools/
│   │   ├── slack_webhook.ts    # Slack webhook tool
│   │   └── slack_webhook_test.ts # Tool tests
│   ├── types.ts                # TypeScript types
│   └── index_test.ts           # Integration tests
├── deno.json                   # Deno configuration
├── README.md                   # This file
└── .env.example                # Environment variables example

Seguridad

  • Nunca subas tu archivo .env ni las URL de webhook al control de versiones
  • Las URL de webhook se validan para asegurar que coincidan con el formato de Slack
  • Todos los errores se manejan de manera elegante sin exponer información sensible

Contribuciones

  1. Haz un fork del repositorio
  2. Crea tu rama de características (git checkout -b feature/amazing-feature)
  3. Ejecuta las pruebas y asegúrate de que pasen (deno task test)
  4. Realiza tus cambios (git commit -m 'Add amazing feature')
  5. Sube la rama (git push origin feature/amazing-feature)
  6. Abre una Solicitud de Extracción (Pull Request)

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.

Agradecimientos