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:
| Flag | Descrição |
|---|---|
--logs-channel DXXXXXXXXX | ID do canal do Slack para logs do servidor (opcional; logs vão para stderr se omitido) |
--workspace https://myco.slack.com | Workspace específico do Slack para abrir |
--refresh-tokens | Reextrair tokens quando expirarem (pula todas as outras etapas) |
--skip-verify | Pular 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.
| Flag | Descrição |
|---|---|
--validate | Verificar tokens contra a API do Slack após a extração |
--env | Imprimir tokens como variáveis de ambiente no stdout (para redirecionar para outras ferramentas) |
--output FILE | Gravar 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
- Crie um Slack App em api.slack.com/apps
- 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 - Instale no seu workspace e copie o Token OAuth do Usuário Bot (
xoxb-...) - 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_ONLYpara um valor verdadeiro (1,true,yesouon, sem diferenciar maiúsculas de minúsculas). - CLI: passe
--read-onlyao 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.