lbeatu/slack-mcp
If you are the rightful owner of slack-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server that provides Slack integration capabilities, following clean architecture principles with proper separation of concerns.
Slack MCP Server
A Model Context Protocol (MCP) server that provides Slack integration capabilities. This server follows clean architecture principles with proper separation of concerns.
Features
- List Channels: Get all public channels in your workspace with pagination support
- Post Messages: Send messages to specific channels
- Reply to Threads: Reply to existing message threads
- Add Reactions: Add emoji reactions to messages
- Get Channel History: Retrieve recent messages from channels
- Get Thread Replies: Get all replies in a message thread
- Parse Slack URLs: Automatically extract thread details from Slack URLs
Architecture
This project follows clean architecture principles:
src/
āāā core/ # Domain layer
ā āāā interfaces/ # Interfaces and contracts
ā āāā types/ # Type definitions
āāā application/ # Application layer
ā āāā services/ # Business logic services
ā āāā usecases/ # Use case implementations
āāā infrastructure/ # Infrastructure layer
ā āāā server/ # Mcp server configuration
ā āāā clients/ # External API clients
ā āāā storage/ # Storage implementations
āāā presentation/ # Presentation layer
ā āāā routes/ # API routes (if needed)
āāā config/ # Configuration and dependency injection
Setup
1. Slack App Configuration
First, create a Slack App and configure the required permissions:
-
Create a new app or select existing one
-
Navigate to OAuth & Permissions ā Bot Token Scopes
-
Add the following permissions:
channels:read - List channels channels:history - Read public channel messages groups:history - Read private channel/group messages chat:write - Send messages reactions:write - Add emoji reactions
-
Click Install App to Workspace
-
Copy the Bot User OAuth Token (starts with
xoxb-
)
2. Project Setup
-
Install dependencies:
npm install
-
Build the project:
npm run build
-
Run the server:
npm start
3. MCP Configuration
Add to your MCP client configuration (e.g., Cursor):
{
"slack-mcp": {
"url": "http://localhost:3001/sse",
"env": {
"SLACK_TOKEN": "xoxb-your-bot-token-here"
}
}
}
Development
- Development mode:
npm run dev
- Inspector mode:
npm run inspector
- Clean build:
npm run clean && npm run build
Token Management
All tools require a token
parameter (Slack Bot Token). The token is passed directly to each tool call, ensuring secure and flexible authentication.
Example usage:
await slack_list_channels({
limit: 50,
token: "xoxb-your-bot-token-here",
});
Available Tools
slack_list_channels
List public channels in the workspace with pagination.
Parameters:
limit
(optional): Maximum number of channels to return (default 100, max 200)cursor
(optional): Pagination cursor for next page of resultstoken
: Slack bot token (required)
slack_post_message
Post a new message to a Slack channel.
Parameters:
channel_id
: The ID of the channel to post totext
: The message text to posttoken
: Slack bot token (required)
slack_reply_to_thread
Reply to a specific message thread in Slack.
Parameters:
channel_id
: The ID of the channel containing the threadthread_ts
: The timestamp of the parent messagetext
: The reply texttoken
: Slack bot token (required)
slack_add_reaction
Add a reaction emoji to a message.
Parameters:
channel_id
: The ID of the channel containing the messagetimestamp
: The timestamp of the message to react toreaction
: The name of the emoji reaction (without ::)token
: Slack bot token (required)
slack_get_channel_history
Get recent messages from a channel.
Parameters:
channel_id
: The ID of the channellimit
(optional): Number of messages to retrieve (default 10)token
: Slack bot token (required)
slack_get_thread_replies
Get all replies in a message thread.
Parameters:
channel_id
: The ID of the channel containing the threadthread_ts
: The timestamp of the parent messagetoken
: Slack bot token (required)
slack_parse_url
Parse a Slack URL and automatically extract thread/message details.
Parameters:
url
: Slack URL (e.g., https://workspace.slack.com/archives/CHANNEL_ID/pTIMESTAMP)token
: Slack bot token (required)
Example:
await slack_parse_url({
url: "https://workspace.slack.com/archives/CHANNEL_ID/pTIMESTAMP",
token: "xoxb-your-bot-token-here",
});
This tool automatically:
- Parses the URL to extract workspace, channel ID, and message timestamp
- Fetches channel history
- Retrieves thread replies if available
- Returns formatted message details
License
MIT