Slack

Um servidor MCP para interagir com a API do Slack, permitindo enviar mensagens, gerenciar canais e outras ações no workspace.

Documentação

slack-mcp

Um servidor Model Context Protocol (MCP) que permite que assistentes de IA interajam com workspaces do Slack. Este servidor fornece uma ponte entre ferramentas de IA e o Slack, permitindo que você leia mensagens, publique conteúdo e gerencie canais do Slack programaticamente por meio de clientes compatíveis com MCP.

Aviso: Esta não é uma ferramenta oficial da Red Hat.

O que é isso e por que devo usar?

Este servidor MCP transforma seu workspace do Slack em um ambiente acessível por IA. Ele fornece 21+ ferramentas para interação abrangente com o Slack:

Operações de Mensagens e Threads

  • Ler histórico de canais com filtro por data e suporte a threads
  • Publicar mensagens e respostas em threads
  • Pesquisar mensagens no workspace ou em canais específicos
  • Executar comandos do Slack

Gerenciamento de Canais

  • Listar, entrar, criar e renomear canais
  • Consultar IDs de canais pelo nome
  • Convidar usuários para canais

Reações e Usuários

  • Adicionar e visualizar reações emoji
  • Enviar mensagens diretas e DMs em grupo
  • Gerenciar grupos de usuários (limpar membros)

Utilidades

  • Verificar status de autenticação
  • Gerenciamento de cache para desempenho

Principais Benefícios

  • Integração Perfeita: Conecte seu assistente de IA diretamente ao Slack sem copiar e colar manualmente
  • Fluxos de Trabalho Automatizados: Crie bots de IA para Slack que podem ler, analisar e responder mensagens
  • Produtividade Aprimorada: Deixe a IA ajudar a gerenciar notificações, resumir conversas ou automatizar tarefas rotineiras do Slack
  • Colaboração em Tempo Real: Permita que assistentes de IA participem de discussões de equipe e forneçam insights instantâneos

Casos de Uso

  • Assistente de Equipe: Tenha uma IA que possa ler atualizações da equipe e fornecer resumos
  • Gerenciador de Notificações: Categorize e responda automaticamente a mensagens recebidas
  • Base de Conhecimento: IA que possa pesquisar no histórico de canais e fornecer contexto
  • Agendador de Reuniões: IA que possa ler solicitações de reunião e ajudar a coordenar agendas

Configuração com Claude Code

Este repositório é fornecido como um plugin do Claude Code com uma habilidade de configuração guiada. O Claude irá orientá-lo em todo o processo — sem necessidade de edição manual de configuração.

Execute o script de configuração. Ele cuida de tudo — venv, Playwright, extração de tokens, script wrapper e registro no Claude Code. A única interação necessária é fazer login no Slack quando o navegador abrir e inserir um ID de canal opcional para logs do servidor, se desejado.

python3 <(curl -fsSL https://raw.githubusercontent.com/redhat-community-ai-tools/slack-mcp/main/scripts/setup-slack-mcp.py)

Ou clone o repositório primeiro e execute localmente:

git clone https://github.com/redhat-community-ai-tools/slack-mcp
python3 slack-mcp/scripts/setup-slack-mcp.py

Opções:

FlagDescrição
--logs-channel DXXXXXXXXXID do canal do Slack para logs do servidor (opcional; logs vão para stderr se omitido)
--workspace https://myco.slack.comWorkspace específico do Slack para abrir
--refresh-tokensReextrair tokens quando expirarem (pula todas as outras etapas)
--skip-verifyPular o teste de fumaça pós-configuração

Quando os tokens expirarem, basta executar:

python3 slack-mcp/scripts/setup-slack-mcp.py --refresh-tokens

Atualização de Token do Aplicativo Desktop (Linux)

Se você tiver o aplicativo desktop do Slack instalado, pode atualizar os tokens sem abrir um navegador:

slack-mcp/scripts/slack-refresh-tokens --validate

Isso lê os tokens diretamente do armazenamento local do aplicativo desktop no disco — sem DevTools, sem Playwright, sem etapas manuais. Requer que o aplicativo do Slack esteja conectado.

FlagDescrição
--validateVerificar tokens contra a API do Slack após a extração
--envImprimir tokens como variáveis de ambiente no stdout (para redirecionar para outras ferramentas)
--output FILEGravar tokens em um caminho personalizado (padrão: ~/.local/share/slack-mcp/tokens.env)

Requisitos: python3, python3-cryptography, secret-tool (libsecret/gnome-keyring), curl, jq

Isso é útil para hooks de CI ou scripts de inicialização de sessão que precisam atualizar tokens silenciosamente antes de iniciar o servidor MCP.


Autenticação com token de bot (recomendado)

Para melhor segurança, use um token de bot do Slack App (xoxb-) em vez de tokens de sessão do navegador. Tokens de bot fornecem:

  • Acesso com escopo — apenas as permissões OAuth que você concede, não acesso total de usuário
  • Identidade distinta — as ações aparecem como o bot, não como sua conta de usuário
  • Gerenciamento central — a TI pode auditar e revogar pelo painel administrativo do Slack
  • Sem DevTools no navegador — os tokens são gerados uma vez nas configurações do Slack App

Configuração

  1. Crie um Slack App em api.slack.com/apps
  2. Adicione escopos OAuth: channels:read, channels:history, channels:manage, groups:read, groups:history, groups:write, chat:write, reactions:read, reactions:write, search:read, users:read, commands, mpim:write
  3. Instale no seu workspace e copie o Token OAuth do Usuário Bot (xoxb-...)
  4. Convide o bot para os canais aos quais ele precisa acessar

Executando com token de bot

Defina SLACK_BOT_TOKEN em vez de SLACK_XOXC_TOKEN/SLACK_XOXD_TOKEN:

{
  "mcpServers": {
    "slack": {
      "command": "podman",
      "args": [
        "run", "-i", "--rm",
        "-e", "SLACK_BOT_TOKEN",
        "-e", "LOGS_CHANNEL_ID",
        "quay.io/redhat-ai-tools/slack-mcp"
      ],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-...",
        "LOGS_CHANNEL_ID": "C7000000"
      }
    }
  }
}

LOGS_CHANNEL_ID é opcional. Quando omitido, a atividade da ferramenta é gravada em stderr em vez de ser publicada no Slack.

Se ambos SLACK_BOT_TOKEN e SLACK_XOXC_TOKEN/SLACK_XOXD_TOKEN estiverem definidos, o token de bot tem precedência.

Modo somente leitura

Para agentes ou automação que devem navegar e pesquisar no Slack sem publicar, reagir, executar comandos ou entrar em canais, ative o modo somente leitura.

  • Variável de ambiente: defina SLACK_MCP_READ_ONLY para um valor verdadeiro (1, true, yes ou on, sem diferenciar maiúsculas de minúsculas).
  • CLI: passe --read-only ao iniciar o servidor (por exemplo, slack-mcp --read-only, equivalente a definir a variável).

No modo somente leitura, as ferramentas que alteram o estado do Slack (post_message, send_dm, post_command, add_reaction, join_channel) geram um erro claro. As ferramentas de leitura (histórico, pesquisa, threads, whoami, listagem de canais, auxiliares de atualização de cache e assim por diante) se comportam normalmente. A atividade da ferramenta que normalmente seria espelhada em LOGS_CHANNEL_ID é gravada em stderr em vez disso.

Na inicialização, o servidor registra uma linha no stderr quando o modo somente leitura está ativo.

Para Podman ou Docker, adicione -e SLACK_MCP_READ_ONLY=true (e a chave correspondente em env) quando quiser que o contêiner execute em modo somente leitura.

Executando como ferramenta uv (local, sem contêiner)

Prefere não executar um contêiner? Instale slack-mcp como uma ferramenta uv. Isso coloca um comando slack-mcp no seu PATH que executa o servidor diretamente.

Requer uv e Python ≥ 3.10.

# from a clone of this repo
uv tool install .

# or straight from git
uv tool install git+https://github.com/redhat-community-ai-tools/slack-mcp

Execute slack-mcp --help para um resumo de flags e variáveis de ambiente.

Tokens de tokens.env (recomendado)

slack-mcp lê tokens de sessão do Slack de ~/.local/share/slack-mcp/tokens.env quando eles ainda não estão definidos no ambiente — o mesmo arquivo que a ferramenta de tokens grava:

scripts/slack-refresh-tokens          # or: python3 scripts/setup-slack-mcp.py

Então a configuração do cliente MCP não precisa de bloco env — apenas o comando:

{
  "mcpServers": {
    "slack": {
      "command": "slack-mcp"
    }
  }
}

O arquivo usa SLACK_MCP_XOXC_TOKEN / SLACK_MCP_XOXD_TOKEN; o servidor mapeia esses para SLACK_XOXC_TOKEN / SLACK_XOXD_TOKEN que ele usa. Substitua o caminho com SLACK_MCP_TOKENS_FILE. Variáveis de ambiente reais sempre têm precedência sobre o arquivo, então você ainda pode substituir por cliente.

Tokens da configuração do cliente (alternativa)

Para manter os tokens na configuração do MCP em vez de um arquivo, passe-os em env:

{
  "mcpServers": {
    "slack": {
      "command": "slack-mcp",
      "env": {
        "SLACK_XOXC_TOKEN": "xoxc-...",
        "SLACK_XOXD_TOKEN": "xoxd-...",
        "LOGS_CHANNEL_ID": "C7000000"
      }
    }
  }
}

Um token de bot funciona da mesma forma — defina SLACK_BOT_TOKEN em env em vez do par xoxc/xoxd. Se o cliente não herdar seu PATH, use o caminho absoluto (~/.local/bin/slack-mcp após uv tool install), ou inicie via uv run --directory /path/to/slack-mcp slack-mcp.

O cache do usuário e o tokens.env padrão ficam em ~/.local/share/slack-mcp/ (substitua com SLACK_MCP_DATA).

Claude Code (token de bot):

claude mcp add slack -e SLACK_BOT_TOKEN=xoxb-... -- slack-mcp

Ou, com tokens.env já em vigor, sem necessidade de env:

claude mcp add slack -- slack-mcp

Executando com Podman ou Docker

Você pode executar o servidor slack-mcp em um contêiner usando Podman ou Docker:

Exemplo de configuração para executar com Podman:

{
  "mcpServers": {
    "slack": {
      "command": "podman",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e", "SLACK_XOXC_TOKEN",
        "-e", "SLACK_XOXD_TOKEN",
        "-e", "MCP_TRANSPORT",
        "-e", "LOGS_CHANNEL_ID",
        "quay.io/redhat-ai-tools/slack-mcp"
      ],
      "env": {
        "SLACK_XOXC_TOKEN": "xoxc-...",
        "SLACK_XOXD_TOKEN": "xoxd-...",
        "MCP_TRANSPORT": "stdio",
        "LOGS_CHANNEL_ID": "C7000000"
      }
    }
  }
}

LOGS_CHANNEL_ID é opcional. Quando omitido, a atividade da ferramenta é gravada em stderr em vez de ser publicada no Slack.

Registro de atividade

Por padrão, a atividade da ferramenta é gravada em stderr (visível no seu terminal ou nos logs do processo). Para espelhar a atividade em um canal do Slack, defina LOGS_CHANNEL_ID para qualquer canal ao qual o bot ou usuário da sessão tenha acesso — um auto-DM ou um DM com o Slackbot funciona bem para uso pessoal.

LOGS_CHANNEL_ID=C7000000

No modo somente leitura, LOGS_CHANNEL_ID é ignorado e toda a atividade é sempre gravada no stderr.

Executando com transporte não-stdio

Para executar o servidor com um transporte não-stdio (como SSE), defina a variável de ambiente MCP_TRANSPORT para um valor diferente de stdio (por exemplo, sse).

Exemplo de configuração para conectar a um servidor MCP não-stdio:

{
  "mcpServers": {
    "slack": {
      "url": "https://slack-mcp.example.com/sse",
      "headers": {
        "X-Slack-Web-Token": "xoxc-...",
        "X-Slack-Cookie-Token": "xoxd-..."
      }
    }
  }
}

Extraia seus tokens XOXC e XOXD do Slack facilmente usando extensões de navegador ou automação Selenium: https://github.com/maorfr/slack-token-extractor.