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
-
Clona este repositorio:
git clone https://github.com/yourusername/slack-webhook-mcp.git cd slack-webhook-mcp -
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)
-
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 enviarwebhook_url(opcional): Sobrescribe la URL de webhook predeterminadaformat(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
.envni 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
- Haz un fork del repositorio
- Crea tu rama de características (
git checkout -b feature/amazing-feature) - Ejecuta las pruebas y asegúrate de que pasen (
deno task test) - Realiza tus cambios (
git commit -m 'Add amazing feature') - Sube la rama (
git push origin feature/amazing-feature) - 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
- Construido usando el SDK de Protocolo de Contexto de Modelo
- Impulsado por Deno
- Se integra con Webhooks Entrantes de Slack