Enables secure downloading of images and files from Slack workspaces using authenticated Bot User OAuth tokens, with tools for file retrieval and health checking.
Claude MCP Slack
A standalone GitHub Action that provides Slack MCP (Model Context Protocol) server functionality for Claude Code Action, enabling secure Slack image downloads and integrations.
Features
๐ Secure Slack Integration: Authenticated access to Slack files using Bot User OAuth tokens
๐ Flexible File Management: Customizable download directories with security validation
๐ณ Docker Support: Run locally or in containers with proper security constraints
๐ก๏ธ Security First: Input validation, path traversal prevention, and secure token handling
๐งช Comprehensive Testing: Unit, integration, and security test suites
โก Easy Integration: Drop-in compatibility with claude-code-action
Quick Start
Basic Usage
Advanced Configuration
Configuration
Inputs
Input | Description | Required | Default |
| Slack Bot User OAuth Token (xoxb-*) | โ | - |
| Directory for downloaded files | โ |
|
Outputs
Output | Description |
| JSON configuration for claude-code-action |
| Path to the Slack MCP server |
Environment Variables
The action sets up the following environment variables for the MCP server:
SLACK_TOKEN: Your Slack Bot User OAuth TokenDOWNLOAD_DIRECTORY: Resolved absolute path for downloads
Slack Bot Setup
1. Create a Slack App
Go to api.slack.com/apps
Click "Create New App" โ "From scratch"
Name your app and select your workspace
2. Configure Bot Token Scopes
Under OAuth & Permissions, add these Bot Token Scopes:
3. Install to Workspace
Click "Install to Workspace"
Copy the "Bot User OAuth Token" (starts with
xoxb-)Add it to your repository secrets as
SLACK_TOKEN
4. Example Bot Usage
Once configured, Claude can download Slack images:
Available MCP Tools
slack_image_download
Downloads images from Slack with authentication.
Parameters:
url(required): Slack file URL (must start withhttps://files.slack.com/)filename(optional): Custom filename (will be sanitized)
Example:
slack_health_check
Checks the health and configuration of the Slack MCP server.
Example:
Security Features
Input Validation
URL validation (must be Slack files domain)
Token format verification
Path traversal prevention
Filename sanitization
Secure Execution
Non-root container execution
Read-only filesystem (except download directory)
Resource limits (file size, timeout)
No shell metacharacter injection
Token Security
Environment variable isolation
No token logging or exposure
Secure token format validation
Development
Local Setup
Docker Development
Testing
Troubleshooting
Common Issues
"SLACK_TOKEN environment variable is required"
Ensure your Slack token is properly set in repository secrets
Verify the token starts with
xoxb-orxoxp-
"URL must be a Slack file URL"
Only URLs starting with
https://files.slack.com/are supportedEnsure the URL is from a Slack file, not a regular message
"Permission denied" errors
Check that your Slack bot has
files:readscopeVerify the bot is installed in the workspace where the file is located
Download failures
Ensure the file hasn't been deleted from Slack
Check that the file is accessible to your bot
Verify network connectivity and firewall settings
Debug Mode
Enable debug logging by setting ACTIONS_STEP_DEBUG=true in your repository secrets.
Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Make your changes
Add tests for new functionality
Ensure all tests pass (
bun test)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Development Guidelines
Follow TypeScript best practices
Add tests for all new features
Update documentation for API changes
Ensure security tests pass
Use conventional commit messages
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
๐ Documentation
๐ Bug Reports
๐ฌ Discussions
Related Projects
claude-code-action - Official Claude GitHub Action
MCP SDK - Model Context Protocol SDK