Slack
Interaja com workspaces do Slack usando a API do Slack.
Documentação
Slack MCP Server
Um servidor Model Context Protocol (MCP) que permite que LLMs interajam com workspaces do Slack por meio de autenticação OAuth 2.0.
Recursos
- 🔐 Autenticação OAuth 2.0: Fluxo OAuth seguro do Slack com gerenciamento automático de tokens
- 🚀 Framework FastMCP: Construído com o framework FastMCP do SDK oficial do MCP
- 💾 Persistência de Tokens: Tokens são salvos localmente ou no DynamoDB para implantações em nuvem
- 📱 Integração com Slack: Enviar mensagens e listar canais em workspaces do Slack
- 🔄 Registro Dinâmico de Clientes: Suporta a extensão MCP do VSCode e outros clientes
- ☁️ GitHub + App Runner: Implante diretamente do GitHub com AWS App Runner
Pré-requisitos
- Python 3.11+
- App do Slack com OAuth 2.0 configurado
- uv (gerenciador de pacotes Python)
Início Rápido
1. Configuração do App do Slack
- Crie um novo App do Slack em https://api.slack.com/apps
- Adicione os escopos OAuth em "OAuth & Permissions":
chat:write- Enviar mensagenschannels:read- Listar canais
- Adicione URLs de redirecionamento:
- Local:
http://localhost:8080/slack/callback - Produção:
https://your-domain.com/slack/callback
- Local:
- Copie o Client ID e o Client Secret
2. Instalação
# Clone the repository
git clone https://github.com/miyatsuki/study-slack-remote-mcp.git
cd study-slack-remote-mcp
# Install dependencies using uv
uv sync
3. Configuração
Crie um arquivo .env:
# Required: Slack OAuth credentials
SLACK_CLIENT_ID=your_client_id
SLACK_CLIENT_SECRET=your_client_secret
# Optional: Service base URL (for production deployments)
# SERVICE_BASE_URL=https://your-apprunner-url.awsapprunner.com
4. Execute o Servidor
# Start the server
uv run python server.py
# Or run in background
nohup uv run python server.py > server.log 2>&1 &
Uso
Com a Extensão MCP do VSCode
- Instale a extensão MCP para VSCode
- Conecte-se à URL do servidor:
http://localhost:8080/mcp/ - O fluxo OAuth será iniciado automaticamente quando você usar uma ferramenta pela primeira vez
Com o Claude Desktop
Adicione à configuração do seu Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"slack": {
"command": "uv",
"args": [
"--directory",
"/path/to/slack-mcp-server",
"run",
"python",
"server.py"
]
}
}
}
Ferramentas Disponíveis
-
list_channels: Obtenha uma lista de canais do Slack
Returns: Dictionary mapping channel names to IDs -
post_message: Envie uma mensagem para um canal do Slack
Args: - channel_id: Channel ID (required) - text: Message text (required) Returns: Success/failure message -
get_auth_status: Verifique o status da autenticação
Returns: Current authentication state and session info
Fluxo de Autenticação
- Quando uma ferramenta é usada pela primeira vez, o fluxo OAuth é iniciado automaticamente
- Uma janela do navegador é aberta para autorização do Slack
- Após a autorização, o token é salvo para uso futuro
- Solicitações subsequentes usam o token em cache
Autenticação
O servidor usa o suporte OAuth 2.0 integrado do FastMCP com registro dinâmico de clientes. Isso permite compatibilidade com vários clientes MCP, incluindo a extensão MCP do VSCode.
Gerenciamento de Tokens
- Tokens OAuth são mapeados entre tokens MCP e tokens do Slack internamente
- Tokens são persistidos localmente em memória (ou DynamoDB na nuvem)
- O fluxo OAuth é iniciado automaticamente quando as ferramentas são usadas pela primeira vez
- Registro dinâmico de clientes suportado para VSCode e outros clientes
Configuração de Porta
O servidor usa uma única porta:
- 8080: endpoint do servidor MCP (inclui health check e rotas de callback OAuth)
Implantação no AWS App Runner (baseada em ECR)
O projeto usa implantação baseada em ECR com AWS App Runner para produção:
# First, set up AWS Systems Manager parameters:
aws ssm put-parameter --name "/slack-mcp/dev/client-id" --value "your-client-id" --type "String"
aws ssm put-parameter --name "/slack-mcp/dev/client-secret" --value "your-secret" --type "SecureString"
aws ssm put-parameter --name "/slack-mcp/dev/service-base-url" --value "https://your-apprunner-url.awsapprunner.com" --type "String"
# Build and push Docker image to ECR:
./build-and-push.sh
# Create App Runner service (if not exists) or update existing service
aws apprunner update-service --service-arn <your-service-arn> --source-configuration '...'
O App Runner oferece:
- Implantação a partir do ECR com imagens Docker pré-construídas
- HTTPS integrado com certificados automáticos
- Controle manual de implantação (auto-implantação desabilitada por padrão)
- Escalonamento automático e gerenciamento simplificado
- Evita problemas de build do Python 3.11 com a implantação de código-fonte do App Runner
Estrutura do Projeto
study-slack-remote-mcp/
├── server.py # Main MCP server using FastMCP framework
├── slack_oauth_provider.py # Slack OAuth provider implementation
├── storage_interface.py # Storage abstraction (local/cloud)
├── storage_dynamodb.py # DynamoDB storage for AWS
├── token_storage.py # Local file-based token storage
├── Dockerfile # Docker container configuration
├── build-and-push.sh # ECR deployment script
├── requirements.txt # Python dependencies for Docker
├── pyproject.toml # Project dependencies
├── uv.lock # Locked dependencies
├── tests/ # Unit tests
├── infrastructure/ # AWS CDK deployment code
├── CLAUDE.md # Development guidelines
└── .env # Environment variables (create from .env.example)
Desenvolvimento
Testes
# Check server health
curl http://localhost:8080/health
# Test with MCP client
mcp run uv --directory /path/to/study-slack-remote-mcp run python server.py
Depuração
Ative o registro de depuração marcando server.log:
tail -f server.log
Solução de Problemas
Porta Já em Uso
# Check what's using port 8080
lsof -i :8080
# Kill process using port 8080 if needed
kill -9 $(lsof -ti:8080)
Erros de OAuth
-
bad_redirect_uri: Certifique-se de que a URL de redirecionamento no app do Slack corresponda exatamente:
- Deve incluir o caminho completo:
http://localhost:8080/slack/callback - A porta deve ser 8080 (porta do servidor MCP)
- Deve incluir o caminho completo:
-
invalid_client_id: Verifique SLACK_CLIENT_ID no .env
-
Token não encontrado: Complete o OAuth autorizando no navegador
Considerações de Segurança
- Tokens OAuth são mapeados entre tokens MCP e tokens do Slack
- Tokens armazenados em memória localmente, DynamoDB em produção
- Registro dinâmico de clientes suporta vários clientes MCP
- Callbacks OAuth usam HTTPS em produção (App Runner)
Contribuição
- Faça um fork do repositório
- Crie um branch de funcionalidade
- Siga as diretrizes no CLAUDE.md
- Envie um pull request
Licença
Licença MIT - consulte o arquivo LICENSE para obter detalhes