Slack Webhook

Poste mensagens em canais do Slack usando webhooks de entrada.

Documentação

Slack Webhook MCP Server

Um servidor Model Context Protocol (MCP) que permite que aplicações LLM como o Claude Desktop enviem mensagens para canais do Slack via webhooks de entrada.

Recursos

  • Envie mensagens em texto simples ou formatadas em markdown para o Slack
  • Gerenciamento simples e seguro de URLs de webhook
  • Construído com Deno para desenvolvimento moderno em TypeScript
  • Cobertura completa de testes

Instalação

Pré-requisitos

  • Deno instalado no seu sistema
  • Um workspace do Slack com webhooks de entrada habilitados
  • Claude Desktop (ou outro cliente compatível com MCP)

Configuração

  1. Clone este repositório:

    git clone https://github.com/yourusername/slack-webhook-mcp.git
    cd slack-webhook-mcp
    
  2. Crie um webhook de entrada do Slack:

    • Vá para o Diretório de Aplicativos do seu workspace do Slack
    • Pesquise por "Incoming WebHooks" e adicione-o
    • Escolha um canal e crie uma URL de webhook
    • Copie a URL do webhook (ela deve se parecer com https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX)
  3. Configure seu ambiente:

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

Configuração

Claude Desktop

Adicione este servidor ao seu arquivo de configuração do 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 o Binário Compilado

Você também pode compilar o servidor para um executável autônomo:

deno task build

Em seguida, use o binário na sua configuração:

{
  "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

Uma vez configurado, você pode usar a seguinte ferramenta no Claude Desktop:

send_slack_message

Envie uma mensagem para o seu canal do Slack configurado.

Parâmetros:

  • message (obrigatório): O texto da mensagem a ser enviado
  • webhook_url (opcional): Substituir a URL de webhook padrão
  • format (opcional): Formato da mensagem - "text" ou "markdown" (padrão: "markdown")

Exemplos:

  • "Envie uma mensagem no Slack dizendo que a implantação foi bem-sucedida"
  • "Notifique a equipe no Slack que os testes estão passando"
  • "Envie 'Build failed: timeout in test suite' para o Slack com formato de texto simples"

Desenvolvimento

Comandos Disponíveis

# 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

Estrutura do Projeto

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

Segurança

  • Nunca envie seu arquivo .env ou URLs de webhook para o controle de versão
  • As URLs de webhook são validadas para garantir que correspondam ao formato do Slack
  • Todos os erros são tratados de forma elegante, sem expor informações sensíveis

Contribuindo

  1. Faça um fork do repositório
  2. Crie sua branch de recurso (git checkout -b feature/amazing-feature)
  3. Execute os testes e garanta que eles passem (deno task test)
  4. Faça commit das suas alterações (git commit -m 'Add amazing feature')
  5. Envie para a branch (git push origin feature/amazing-feature)
  6. Abra um Pull Request

Licença

Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para obter detalhes.

Agradecimentos