Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Slack MCP connector

OAuth 2.1 CommunicationCollaborationProductivity

Connect to Slack MCP. Send and read messages, search channels and users, manage canvases, and react to messages across your Slack workspace.

Slack MCP connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. 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>
  3. 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.

    1. 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.

      Enable Model Context Protocol in Slack API dashboard

    2. Connect in Scalekit

      In Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find Slack MCP and click Create.

  4. 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.actions
    const connector = 'slackmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { 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 call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'slackmcp_slack_create_conversation',
    toolInput: {},
    })
    console.log(result)

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 history
const result = await actions.executeTool({
connector,
identifier,
toolName: 'slackmcp_slack_read_channel',
toolInput: { channel_id: 'C01234567' },
})
console.log(result)

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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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).

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.

Name Type Required Description
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.