Slack Webhook

Publica mensajes en canales de Slack usando webhooks entrantes o tokens de bot.

Documentación

Servidor MCP de Slack Webhook

Un servidor de Model Context Protocol (MCP) para publicar mensajes en Slack mediante webhooks o tokens de bot.

Funciones

  • Dos modos de operación: Webhooks o API de Bot
  • Publicar mensajes en canales de Slack
  • Soporte para anulaciones de canal
  • Nombre de usuario y emoji de bot configurables
  • Soporte de menciones específicas de Slack (<!channel>, <!here>, <@USERID>)
  • Manejo integral de errores y validación

Instalación

bun install

Configuración

Opción 1: Modo Webhook (Sencillo)

  1. Crear una aplicación de Slack y un webhook:

    • Vaya a Slack API Apps
    • Cree una nueva aplicación o seleccione una existente
    • Navegue a "Incoming Webhooks"
    • Habilite los webhooks entrantes
    • Agregue un nuevo webhook a su espacio de trabajo
    • Copie la URL del webhook (formato: https://hooks.slack.com/services/T.../B.../...)
  2. Configure el cliente MCP:

{
  "mcpServers": {
    "slack-webhook": {
      "command": "bun",
      "args": [
        "run", 
        "src/index.ts",
        "--webhook-url",
        "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK",
        "--channel",
        "#general"
      ],
      "cwd": "/path/to/slack-webhook-mcp-server"
    }
  }
}

Opción 2: Modo Token de Bot (Avanzado)

  1. Crear una aplicación de Slack con token de bot:

    • Vaya a Slack API Apps
    • Cree una nueva aplicación o seleccione una existente
    • Vaya a "OAuth & Permissions"
    • Agregue ámbitos de token de bot: chat:write, chat:write.public
    • Instale la aplicación en el espacio de trabajo
    • Copie el "Bot User OAuth Token" (comienza con xoxb-)
  2. Obtener IDs de canal:

    • Haga clic derecho en el canal en Slack → "View channel details" → Copie el ID del canal
    • O use la API de Slack para listar canales
  3. Configure el cliente MCP:

{
  "mcpServers": {
    "slack-bot": {
      "command": "bun",
      "args": [
        "run", 
        "src/index.ts",
        "--bot-token",
        "xoxb-YOUR-BOT-TOKEN",
        "--channel",
                  "CXXXXXXXXXX",
        "--username",
        "MCP Bot"
      ],
      "cwd": "/path/to/slack-webhook-mcp-server"
    }
  }
}

Uso

Argumentos de línea de comandos

Modo Webhook:

  • --webhook-url <url> - URL del webhook de Slack (obligatorio)
  • --channel <channel> - Nombre de canal predeterminado (opcional, p. ej., "#general")

Modo Bot:

  • --bot-token <token> - Token de bot de Slack (obligatorio, comienza con xoxb-)
  • --channel <channel> - ID de canal predeterminado (obligatorio, p. ej., "CXXXXXXXXXX")

Opciones comunes:

  • --username <username> - Nombre de usuario de bot predeterminado (opcional)
  • --icon-emoji <emoji> - Emoji de bot predeterminado (opcional, p. ej., ":robot_face:")
  • --help - Mostrar mensaje de ayuda

Ejemplos

Modo Webhook:

bun run src/index.ts \
  --webhook-url "https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX" \
  --channel "#general" \
  --username "Assistant"

Modo Bot:

bun run src/index.ts \
  --bot-token "xoxb-YOUR-BOT-TOKEN" \
  --channel "CXXXXXXXXXX" \
  --username "Assistant"

Herramientas disponibles

post_slack_message

Publica un mensaje en su integración de Slack configurada.

Parámetros:

  • message (obligatorio): El contenido del mensaje a enviar (máximo 4000 caracteres)
  • channel (opcional): Canal al que publicar (anula el predeterminado)
    • Modo Webhook: Nombre del canal (p. ej., "#random")
    • Modo Bot: ID del canal (p. ej., "CXXXXXXXXXX")
  • username (opcional): Anula el nombre de usuario predeterminado para este mensaje
  • icon_emoji (opcional): Anula el emoji predeterminado para este mensaje

Ejemplo de uso en el cliente MCP:

Please post "Hello from MCP!" to the general channel

Comparación de modos

CaracterísticaModo WebhookModo Bot
ConfiguraciónSencilloRequiere configuración OAuth
Referencia de canalNombres (#general)IDs (CXXXXXXXXXX)
PermisosLimitado al canal del webhookÁmbitos configurables
Límites de velocidadMás altosLímites estándar de la API
FuncionesMensajería básicaAcceso completo a la API
AutenticaciónBasada en URLBasada en token

Funciones específicas de Slack

Menciones

  • Mención de usuario: <@U1234567890>
  • Notificación de canal: <!channel>
  • Notificación "here": <!here>

Referencias de canal

  • Modo Webhook: Use el formato #channel-name
  • Modo Bot: Use IDs de canal como CXXXXXXXXXX

Desarrollo

Scripts

  • bun run start - Iniciar el servidor
  • bun run dev - Iniciar con monitoreo de archivos
  • bun run build - Compilar para producción

Estructura del proyecto

slack-webhook-mcp-server/
├── package.json          # Dependencies and scripts
├── src/
│   └── index.ts         # Main server implementation  
├── types/
│   └── slack.ts         # TypeScript types and schemas
└── README.md            # This file

Manejo de errores

El servidor incluye manejo integral de errores para:

  • URLs de webhook y tokens de bot no válidos
  • Problemas de conectividad de red
  • Errores de la API de Slack (manejo diferente para webhook vs bot)
  • Validación de longitud del mensaje (límite de 4000 caracteres)
  • Validación del ID de canal (modo bot)
  • Solicitudes malformadas

Licencia

MIT