Slack MCP connector
OAuth 2.1 CommunicationCollaborationProductivityConnect to Slack MCP. Send and read messages, search channels and users, manage canvases, and react to messages across your Slack workspace.
Slack MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret> -
Set up the connector
Section titled “Set up the connector”Register your Slack MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment.
Dashboard setup steps
Before connecting Slack MCP, enable the Model Context Protocol feature in your Slack app settings. This allows your Slack app to share context with LLMs and agents.
-
Enable MCP in your Slack app
- Go to api.slack.com/apps and open your app.
- In the left sidebar, under Features, click Agents & AI Apps.
- Under Model Context Protocol, toggle it on.

-
Connect in Scalekit
In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Slack MCP and click Create.
-
-
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'slackmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Slack MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'slackmcp_slack_create_conversation',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "slackmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Slack MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="slackmcp_slack_create_conversation",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Send messages — post to channels, DMs, and threads across your Slack workspace
- Read conversations — retrieve channel history, thread replies, and direct messages
- Search channels and users — find channels, team members, and public messages by keyword
- Manage canvases — create, read, and update Slack Canvas documents
- React to messages — add and retrieve emoji reactions on any message
- Schedule messages — deliver messages to channels at a specified future time
Proxy API call
import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'
const scalekit = new ScalekitClient( process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actions
const connector = 'slackmcp'const identifier = 'user_123'
// Read a channel's message historyconst result = await actions.executeTool({ connector, identifier, toolName: 'slackmcp_slack_read_channel', toolInput: { channel_id: 'C01234567' },})console.log(result)from scalekit import ScalekitClientimport os
scalekit_client = ScalekitClient( os.environ['SCALEKIT_ENV_URL'], os.environ['SCALEKIT_CLIENT_ID'], os.environ['SCALEKIT_CLIENT_SECRET'],)
connector = 'slackmcp'identifier = 'user_123'
# Read a channel's message historyresult = scalekit_client.actions.execute_tool( connector=connector, identifier=identifier, tool_name='slackmcp_slack_read_channel', tool_input={'channel_id': 'C01234567'},)print(result)Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
slackmcp_slack_add_reaction
#
Add an emoji reaction to a Slack message. Requires the channel ID, message timestamp, and emoji name. 3 params
Add an emoji reaction to a Slack message. Requires the channel ID, message timestamp, and emoji name.
channel_id string required ID of the Slack channel. Get it from slack_search_channels. emoji string required Reaction (emoji) name without colons message_ts string required Timestamp of the message. Get it from slack_read_channel or slack_read_thread. slackmcp_slack_create_canvas
#
Create a Slack Canvas document from Canvas-flavored Markdown content. 2 params
Create a Slack Canvas document from Canvas-flavored Markdown content.
content string required Canvas-flavored Markdown content for the canvas body. title string required Display name shown at the top of the canvas. slackmcp_slack_create_conversation
#
Create a channel, DM, or group DM. Returns a channel ID for sending messages. 3 params
Create a channel, DM, or group DM. Returns a channel ID for sending messages.
channel_name string optional Name for the new channel (lowercase, hyphens, max 80 chars). Omit to create a DM instead. is_private boolean optional If true, creates a private channel. Only used with channel_name. Default: false. user_ids array optional Slack user IDs to invite. 1 ID = DM, 2–8 IDs = group DM, up to 1000 IDs for a channel. slackmcp_slack_get_reactions
#
Retrieve all emoji reactions on a specific Slack message. 2 params
Retrieve all emoji reactions on a specific Slack message.
channel_id string required ID of the Slack channel. Get it from slack_search_channels. message_ts string required Timestamp of the message. Get it from slack_read_channel or slack_read_thread. slackmcp_slack_list_channel_members
#
List members of a Slack channel, group, or group DM with profile details. 6 params
List members of a Slack channel, group, or group DM with profile details.
channel_id string required ID of the Slack channel. Get it from slack_search_channels. cursor string optional Pagination cursor from the previous response to fetch the next page. include_bots boolean optional Include bots and apps in the member list (default: false) include_deleted boolean optional Include deleted/deactivated users in the member list (default: false) limit integer optional Maximum number of results to return per page. response_format string optional Level of detail in the response. Accepted values: detailed, concise, ids_only. slackmcp_slack_read_canvas
#
Retrieve the Markdown content and section ID mapping of a Slack Canvas document. 1 param
Retrieve the Markdown content and section ID mapping of a Slack Canvas document.
canvas_id string required ID of the Slack canvas document. Get it from slack_search_public. slackmcp_slack_read_channel
#
Read messages from a Slack channel in reverse chronological order (newest first). 6 params
Read messages from a Slack channel in reverse chronological order (newest first).
channel_id string required ID of the Slack channel. Get it from slack_search_channels. cursor string optional Pagination cursor from the previous response to fetch the next page. latest string optional Only return messages before this Unix timestamp (e.g. 1640995200.000000). limit integer optional Maximum number of results to return per page. oldest string optional Only return messages after this Unix timestamp (e.g. 1609459200.000000). response_format string optional Level of detail in the response. Accepted values: detailed, concise, ids_only. slackmcp_slack_read_file
#
Read a Slack file's content by file ID. Returns text or base64-encoded content. 1 param
Read a Slack file's content by file ID. Returns text or base64-encoded content.
file_id string required ID of the Slack file. Get it from slack_search_public. slackmcp_slack_read_thread
#
Read all messages in a Slack thread — the parent message and its replies. 7 params
Read all messages in a Slack thread — the parent message and its replies.
channel_id string required ID of the Slack channel. Get it from slack_search_channels. message_ts string required Timestamp of the message. Get it from slack_read_channel or slack_read_thread. cursor string optional Pagination cursor from the previous response to fetch the next page. latest string optional Only return messages before this Unix timestamp (e.g. 1640995200.000000). limit integer optional Maximum number of results to return per page. oldest string optional Only return messages after this Unix timestamp (e.g. 1609459200.000000). response_format string optional Level of detail in the response. Accepted values: detailed, concise, ids_only. slackmcp_slack_read_user_profile
#
Retrieve detailed profile information for a Slack user including status and contact info. 3 params
Retrieve detailed profile information for a Slack user including status and contact info.
include_locale boolean optional Include user's locale information. Default: false response_format string optional Level of detail in the response. Accepted values: detailed, concise, ids_only. user_id string optional ID of the Slack user. Get it from slack_search_users. slackmcp_slack_schedule_message
#
Schedule a message for future delivery to a Slack channel at a specified Unix timestamp. 5 params
Schedule a message for future delivery to a Slack channel at a specified Unix timestamp.
channel_id string required ID of the Slack channel. Get it from slack_search_channels. message string required Message content to schedule post_at integer required Unix timestamp (seconds) for when to send the scheduled message. reply_broadcast boolean optional Broadcast thread reply to channel thread_ts string optional Timestamp of the parent message to reply in a thread. Get it from slack_read_channel. slackmcp_slack_search_channels
#
Search for Slack channels by name or description and return channel IDs and metadata. 6 params
Search for Slack channels by name or description and return channel IDs and metadata.
query string required Search query string. channel_types string optional Comma-separated channel types to filter. Accepted values: public_channel, private_channel, mpim, im. cursor string optional Pagination cursor from the previous response to fetch the next page. include_archived boolean optional Include archived channels in the search results limit integer optional Maximum number of results to return per page. response_format string optional Level of detail in the response. Accepted values: detailed, concise, ids_only. slackmcp_slack_search_emojis
#
Search custom emojis available in this Slack workspace by name. 1 param
Search custom emojis available in this Slack workspace by name.
query string required Search query string. slackmcp_slack_search_public
#
Search messages and files in public Slack channels only. 13 params
Search messages and files in public Slack channels only.
query string required Search query string. after string optional Only messages after this Unix timestamp (inclusive) before string optional Only messages before this Unix timestamp (inclusive) content_types string optional Comma-separated content types to search. Accepted values: messages, files. context_channel_id string optional Channel ID to boost relevance of results from that channel. cursor string optional Pagination cursor from the previous response to fetch the next page. include_bots boolean optional Include bot messages (default: false) include_context boolean optional Include surrounding context messages for each result. Defaults to true. limit integer optional Maximum number of results to return per page. max_context_length integer optional Max character length for each context message. Longer messages are truncated. response_format string optional Level of detail in the response. Accepted values: detailed, concise, ids_only. sort string optional Sort by relevance or date (default: 'score'). Options: 'score', 'timestamp' sort_dir string optional Sort direction (default: 'desc'). Options: 'asc', 'desc' slackmcp_slack_search_public_and_private
#
Search messages and files across all Slack channels including private ones the user has access to. 14 params
Search messages and files across all Slack channels including private ones the user has access to.
query string required Search query string. after string optional Only messages after this Unix timestamp (inclusive) before string optional Only messages before this Unix timestamp (inclusive) channel_types string optional Comma-separated channel types to filter. Accepted values: public_channel, private_channel, mpim, im. content_types string optional Comma-separated content types to search. Accepted values: messages, files. context_channel_id string optional Channel ID to boost relevance of results from that channel. cursor string optional Pagination cursor from the previous response to fetch the next page. include_bots boolean optional Include bot messages (default: false) include_context boolean optional Include surrounding context messages for each result. Defaults to true. limit integer optional Maximum number of results to return per page. max_context_length integer optional Max character length for each context message. Longer messages are truncated. response_format string optional Level of detail in the response. Accepted values: detailed, concise, ids_only. sort string optional Sort by relevance or date (default: 'score'). Options: 'score', 'timestamp' sort_dir string optional Sort direction (default: 'desc'). Options: 'asc', 'desc' slackmcp_slack_search_users
#
Search for Slack users by name, email, or profile attributes. 4 params
Search for Slack users by name, email, or profile attributes.
query string required Search query string. cursor string optional Pagination cursor from the previous response to fetch the next page. limit integer optional Maximum number of results to return per page. response_format string optional Level of detail in the response. Accepted values: detailed, concise, ids_only. slackmcp_slack_send_message
#
Send a message to a Slack channel or user. Use a user ID as channel_id to send a DM. 5 params
Send a message to a Slack channel or user. Use a user ID as channel_id to send a DM.
channel_id string required ID of the Slack channel. Get it from slack_search_channels. message string required Add a message draft_id string optional ID of a previously saved draft to delete after sending. reply_broadcast boolean optional Also send to conversation thread_ts string optional Timestamp of the parent message to reply in a thread. Get it from slack_read_channel. slackmcp_slack_send_message_draft
#
Save a message as a draft in a Slack channel without sending it. 3 params
Save a message as a draft in a Slack channel without sending it.
channel_id string required ID of the Slack channel. Get it from slack_search_channels. message string required The message content in standard markdown thread_ts string optional Timestamp of the parent message to reply in a thread. Get it from slack_read_channel. slackmcp_slack_update_canvas
#
Update an existing Slack Canvas document by appending, replacing, or deleting content. 4 params
Update an existing Slack Canvas document by appending, replacing, or deleting content.
action string required One of "append", "prepend", or "replace". Defaults to "append" canvas_id string required ID of the Slack canvas document. Get it from slack_search_public. content string required Canvas-flavored Markdown content for the canvas body. section_id string optional ID of the canvas section to update. Get it from slack_read_canvas.