Claude MCP Slack
Uma ação do GitHub que funciona como um servidor MCP do Slack, permitindo downloads seguros de imagens e integrações com o Slack.
Documentação
Claude MCP Slack
Uma GitHub Action independente que fornece funcionalidade de servidor Slack MCP (Model Context Protocol) para Claude Code Action, permitindo downloads seguros de imagens do Slack e integrações.
Recursos
- 🔐 Integração Segura com Slack: Acesso autenticado a arquivos do Slack usando tokens OAuth de Bot User
- 📁 Gerenciamento Flexível de Arquivos: Diretórios de download personalizáveis com validação de segurança
- 🐳 Suporte a Docker: Execute localmente ou em contêineres com restrições de segurança adequadas
- 🛡️ Segurança em Primeiro Lugar: Validação de entrada, prevenção de path traversal e manipulação segura de tokens
- 🧪 Testes Abrangentes: Suites de testes unitários, de integração e de segurança
- ⚡ Integração Fácil: Compatibilidade plug-and-play com claude-code-action
Início Rápido
Uso Básico
name: Example Workflow
on:
issues:
types: [opened]
issue_comment:
types: [created]
jobs:
claude-response:
runs-on: ubuntu-latest
steps:
- name: Setup Slack MCP
uses: atlasfutures/claude-mcp-slack@v1
with:
slack_token: ${{ secrets.SLACK_TOKEN }}
id: slack-mcp
- name: Claude Code Action
uses: anthropics/claude-code-action@main
with:
mcp_config: ${{ steps.slack-mcp.outputs.mcp_config }}
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Configuração Avançada
- name: Setup Slack MCP
uses: atlasfutures/claude-mcp-slack@v1
with:
slack_token: ${{ secrets.SLACK_TOKEN }}
download_directory: "./slack-assets"
id: slack-mcp
- name: Claude Code Action with Multiple MCP Servers
uses: anthropics/claude-code-action@main
with:
mcp_config: |
{
"mcpServers": {
"slack": ${{ steps.slack-mcp.outputs.mcp_config }}.mcpServers.slack,
"custom": {
"command": "node",
"args": ["custom-server.js"],
"env": {
"API_KEY": "${{ secrets.CUSTOM_API_KEY }}"
}
}
}
}
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Configuração
Entradas
| Entrada | Descrição | Obrigatório | Padrão |
|---|---|---|---|
slack_token | Token OAuth de Bot User do Slack (xoxb-*) | ✅ | - |
download_directory | Diretório para arquivos baixados | ❌ | "." |
Saídas
| Saída | Descrição |
|---|---|
mcp_config | Configuração JSON para claude-code-action |
server_executable | Caminho para o servidor Slack MCP |
Variáveis de Ambiente
A ação configura as seguintes variáveis de ambiente para o servidor MCP:
SLACK_TOKEN: Seu token OAuth de Bot User do SlackDOWNLOAD_DIRECTORY: Caminho absoluto resolvido para downloads
Configuração do Bot do Slack
1. Criar um App do Slack
- Acesse api.slack.com/apps
- Clique em "Create New App" → "From scratch"
- Dê um nome ao seu app e selecione seu workspace
2. Configurar Escopos do Token do Bot
Em OAuth & Permissions, adicione estes escopos de Token do Bot:
files:read # Read file content and metadata
3. Instalar no Workspace
- Clique em "Install to Workspace"
- Copie o "Bot User OAuth Token" (começa com
xoxb-) - Adicione-o aos segredos do seu repositório como
SLACK_TOKEN
4. Exemplo de Uso do Bot
Uma vez configurado, o Claude pode baixar imagens do Slack:
@claude Please analyze this screenshot from our Slack channel: https://files.slack.com/files-tmb/T05EFSVDCLR-F08TC9CP9B8/screenshot_720.png
Ferramentas MCP Disponíveis
slack_image_download
Baixa imagens do Slack com autenticação.
Parâmetros:
url(obrigatório): URL do arquivo do Slack (deve começar comhttps://files.slack.com/)filename(opcional): Nome de arquivo personalizado (será sanitizado)
Exemplo:
{
"tool": "slack_image_download",
"arguments": {
"url": "https://files.slack.com/files-tmb/T05EFSVDCLR-F08TC9CP9B8/screenshot_720.png",
"filename": "screenshot.png"
}
}
slack_health_check
Verifica a saúde e a configuração do servidor Slack MCP.
Exemplo:
{
"tool": "slack_health_check",
"arguments": {}
}
Recursos de Segurança
Validação de Entrada
- Validação de URL (deve ser domínio de arquivos do Slack)
- Verificação do formato do token
- Prevenção de path traversal
- Sanitização de nomes de arquivo
Execução Segura
- Execução em contêiner como usuário não-root
- Sistema de arquivos somente leitura (exceto diretório de download)
- Limites de recursos (tamanho de arquivo, timeout)
- Sem injeção de metacaracteres de shell
Segurança do Token
- Isolamento de variáveis de ambiente
- Sem registro ou exposição de tokens
- Validação segura do formato do token
Desenvolvimento
Configuração Local
# Clone repository
git clone https://github.com/atlasfutures/claude-mcp-slack.git
cd claude-mcp-slack
# Install dependencies
bun install
# Run tests
bun test
# Type check
bun run typecheck
# Format code
bun run format
Desenvolvimento com Docker
# Build and run with docker-compose
docker-compose up claude-mcp-slack-dev
# Or build manually
docker build -t claude-mcp-slack .
docker run -e SLACK_TOKEN=your-token claude-mcp-slack
Testes
# Run all tests
bun test
# Run specific test suites
bun run test:unit
bun run test:integration
bun run test:security
# Run with coverage
bun test --coverage
Solução de Problemas
Problemas Comuns
"SLACK_TOKEN environment variable is required"
- Certifique-se de que seu token do Slack está configurado corretamente nos segredos do repositório
- Verifique se o token começa com
xoxb-ouxoxp-
"URL must be a Slack file URL"
- Apenas URLs que começam com
https://files.slack.com/são suportadas - Certifique-se de que a URL é de um arquivo do Slack, não de uma mensagem comum
Erros de "Permission denied"
- Verifique se seu bot do Slack tem o escopo
files:read - Confirme que o bot está instalado no workspace onde o arquivo está localizado
Falhas no download
- Certifique-se de que o arquivo não foi excluído do Slack
- Verifique se o arquivo está acessível ao seu bot
- Verifique a conectividade de rede e as configurações de firewall
Modo de Depuração
Ative o registro de depuração definindo ACTIONS_STEP_DEBUG=true nos segredos do seu repositório.
Contribuindo
- Faça um fork do repositório
- Crie um branch de funcionalidade (
git checkout -b feature/amazing-feature) - Faça suas alterações
- Adicione testes para novas funcionalidades
- Certifique-se de que todos os testes passem (
bun test) - Faça commit das suas alterações (
git commit -m 'Add amazing feature') - Envie para o branch (
git push origin feature/amazing-feature) - Abra um Pull Request
Diretrizes de Desenvolvimento
- Siga as melhores práticas de TypeScript
- Adicione testes para todos os novos recursos
- Atualize a documentação para mudanças na API
- Certifique-se de que os testes de segurança passem
- Use mensagens de commit convencionais
Licença
Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Suporte
Projetos Relacionados
- claude-code-action - GitHub Action oficial do Claude
- MCP SDK - SDK do Model Context Protocol