Claude MCP Slack
Une action GitHub autonome qui fournit la fonctionnalité de serveur Slack MCP (Model Context Protocol) pour l'action Claude Code, permettant des téléchargements d'images Slack sécurisés et des intégrations.
Caractéristiques
- 🔐 Intégration Slack sécurisée: Accès authentifié aux fichiers Slack en utilisant les jetons OAuth de l'utilisateur Bot
- 📁 Gestion flexible des fichiers: Répertoires de téléchargement personnalisables avec validation de sécurité
- 🐳 Prise en charge de Docker: Exécuter localement ou dans des conteneurs avec des contraintes de sécurité appropriées
- 🛡️ Security First: validation des entrées, prévention de la traversée des chemins et traitement sécurisé des jetons
- 🧪 Tests complets: Suites de tests unitaires, d'intégration et de sécurité
- ⚡ Intégration facile: Compatibilité avec claude-code-action
Démarrage rapide
Utilisation de base
name : Example Workflow on : issues : types : [open] 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 }}
Configuration avancée
- 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 }}
Configuration
Entrées
Entrée | Description | Obligatoire | Défaut |
---|---|---|---|
slack_token | Token OAuth de l'utilisateur de Slack Bot (xoxb-*) | ✅ | - |
download_directory | Répertoire pour les fichiers téléchargés | ❌ | "." |
Sorties
Sortie | Description |
---|---|
mcp_config | Configuration JSON pour claude-code-action |
server_executable | Chemin d'accès au serveur Slack MCP |
Variables d'environnement
L'action définit les variables d'environnement suivantes pour le serveur MCP :
SLACK_TOKEN
: Votre jeton OAuth d'utilisateur Slack BotDOWNLOAD_DIRECTORY
: Chemin absolu résolu pour les téléchargements
Configuration du Slack Bot
1. Créer une application Slack
- Allez sur api.slack.com/apps
- Cliquez sur "Create New App" → "From scratch" (Créer une nouvelle application)
- Nommez votre application et sélectionnez votre espace de travail
2. Configurer les champs d'application des tokens de bot
Sous OAuth & Permissions, ajoutez ces scopes de token bot :
files:read # Lire le contenu et les métadonnées des fichiers
3. Installer dans l'espace de travail
- Cliquez sur "Installer dans l'espace de travail"
- Copiez le "Bot User OAuth Token" (commence par
xoxb-
) - Ajoutez-le aux secrets de votre dépôt en tant que
SLACK_TOKEN
4. Exemple d'utilisation du bot
Une fois configuré, Claude peut télécharger les images Slack :
@claude Veuillez analyser cette capture d'écran de notre canal Slack : https://files.slack.com/files-tmb/T05EFSVDCLR-F08TC9CP9B8/screenshot_720.png
Outils MCP disponibles
slack_image_download
Télécharge des images depuis Slack avec authentification.
Paramètres :
url
(obligatoire) : URL du fichier Slack (doit commencer parhttps://files.slack.com/)
filename
(optionnel) : Nom de fichier personnalisé (sera analysé)
Exemple :
{"tool" : "slack_image_download", "arguments" : { "url" : "https://files.slack.com/files-tmb/T05EFSVDCLR-F08TC9CP9B8/screenshot_720.png", "filename" : "screenshot.png" } }
slack_health_check
Vérifie l'état et la configuration du serveur Slack MCP.
Exemple :
{"tool" : "slack_health_check", "arguments" : {} }
Fonctionnalités de sécurité
Validation des entrées
- Validation de l'URL (doit être un domaine de fichiers Slack)
- Vérification du format du jeton
- Prévention de la traversée du chemin
- Assainissement du nom de fichier
Exécution sécurisée
- Exécution dans un conteneur non racine
- Système de fichiers en lecture seule (sauf répertoire de téléchargement)
- Limitation des ressources (taille des fichiers, délai d'attente)
- Pas d'injection de métacaractères dans le shell
Sécurité des jetons
- Isolation des variables d'environnement
- Pas d'enregistrement ou d'exposition des jetons
- Validation sécurisée du format du jeton
Développement
Installation locale
# Cloner le dépôt git clone https://github.com/atlasfutures/claude-mcp-slack.git cd claude-mcp-slack # Installer les dépendances bun install # Exécuter les tests bun test # Vérifier le type bun run typecheck # Formater le code bun run format
Développement Docker
# Construire et exécuter avec docker-compose docker-compose up claude-mcp-slack-dev # Ou construire manuellement docker build -t claude-mcp-slack . docker run -e SLACK_TOKEN=votre-token claude-mcp-slack
Test
# Exécuter tous les tests bun test # Exécuter des suites de tests spécifiques bun run test:unit bun run test:integration bun run test:security # Exécuter avec couverture bun test --coverage
Résolution des problèmes
Problèmes courants
"La variable d'environnement SLACK_TOKEN est requise"
- Assurez-vous que votre jeton Slack est correctement défini dans les secrets du référentiel
- Vérifiez que le jeton commence par
xoxb-
ouxoxp-
"L'URL doit être une URL de fichier Slack"
- Seules les URL commençant par
https://files.slack.com/
sont prises en charge - Assurez-vous que l'URL provient d'un fichier Slack, et non d'un message ordinaire
"Erreurs "Permission refusée
- Vérifiez que votre robot Slack a la portée
files:read
- Vérifiez que le bot est installé dans l'espace de travail où se trouve le fichier
Échecs de téléchargement
- Vérifiez que le fichier n'a pas été supprimé de Slack
- Vérifiez que le fichier est accessible à votre robot
- Vérifiez la connectivité du réseau et les paramètres du pare-feu
Mode débogage
Activez la journalisation de débogage en définissant ACTIONS_STEP_DEBUG=true
dans les secrets de votre dépôt.
Contribuer
- Mettre en place le dépôt
- Créez une branche de fonctionnalités
(git checkout -b feature/amazing-feature
) - Effectuez vos modifications
- Ajouter des tests pour les nouvelles fonctionnalités
- S'assurer que tous les tests sont réussis
(bun test
) - Validez vos modifications
(git commit -m 'Add amazing feature'
) - Pousser vers la branche
(git push origin feature/amazing-feature
) - Ouvrir une demande d'extraction
Directives de développement
- Suivre les meilleures pratiques TypeScript
- Ajouter des tests pour toutes les nouvelles fonctionnalités
- Mettre à jour la documentation pour les changements d'API
- S'assurer que les tests de sécurité sont réussis
- Utiliser des messages de livraison conventionnels
Licence
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Support
Projets apparentés
- claude-code-action - Action GitHub officielle de Claude
- MCP SDK - Modèle Contexte Protocole SDK