View as Markdown

Slack Integration

Send and manage Slack messages and channels

The Slack integration provides access to send and manage Slack messages and channels through the Integrate MCP server.

Installation

The Slack integration is included with the SDK:

import { slackIntegration } from "integrate-sdk/server";

Setup

1. Create a Slack OAuth App

  1. Go to Slack API Apps
  2. Create a new OAuth application
  3. Configure your redirect URI
  4. Note your Client ID and Client Secret

2. Configure the Integration on Your Server

Add the Slack integration to your server configuration. The integration automatically reads SLACK_CLIENT_ID and SLACK_CLIENT_SECRET from your environment variables:

import { createMCPServer, slackIntegration } from "integrate-sdk/server";
 
export const { client: serverClient } = createMCPServer({
  apiKey: process.env.INTEGRATE_API_KEY,
  integrations: [
    slackIntegration({
    }),
  ],
});

You can override the environment variables by passing explicit values:

slackIntegration({
  clientId: process.env.CUSTOM_SLACK_ID,
  clientSecret: process.env.CUSTOM_SLACK_SECRET,
});

3. Client-Side Usage

The default client automatically includes all integrations. You can use it directly:

import { client } from "integrate-sdk";
 
await client.authorize("slack");
const result = await client.slack.sendMessage({
  channel: "value",
});
 
console.log(result);

If you're using a custom client, add the integration to the integrations array:

import { createMCPClient, slackIntegration } from "integrate-sdk";
 
const customClient = createMCPClient({
  integrations: [slackIntegration()],
});

Configuration Options

export interface SlackIntegrationConfig {
  /** Slack OAuth client ID (defaults to SLACK_CLIENT_ID env var) */
  clientId?: string;

Tools

slack_send_message

Send a message to a Slack channel

export interface SlackSendMessageParams {
    /** Channel ID or name */
    channel: string;

slack_list_messages

Get message history from a channel

export interface SlackListMessagesParams {
    /** Channel ID */
    channel: string;

slack_get_thread_replies

Get all replies in a message thread

export interface SlackGetThreadRepliesParams {
    /** Channel ID */
    channel: string;

slack_update_message

Update the text of an existing message

export interface SlackUpdateMessageParams {
    /** Channel ID */
    channel: string;

slack_delete_message

Delete a message

export interface SlackDeleteMessageParams {
    /** Channel ID */
    channel: string;

slack_schedule_message

Schedule a message to be sent at a future time

export interface SlackScheduleMessageParams {
    /** Channel ID */
    channel: string;

Get a permanent URL for a specific message

export interface SlackGetPermalinkParams {
    /** Channel ID */
    channel: string;

slack_search_messages

Search for messages across the workspace

export interface SlackSearchMessagesParams {
    /** Search query string */
    query: string;

slack_list_channels

List channels in the workspace

export interface SlackListChannelsParams {
    /** Exclude archived channels (default: true) */
    exclude_archived?: boolean;

slack_get_channel

Get details about a specific channel

export interface SlackGetChannelParams {
    /** Channel ID */
    channel: string;

slack_create_channel

Create a new channel

export interface SlackCreateChannelParams {
    /** Channel name */
    name: string;

slack_invite_to_channel

Invite one or more users to a channel

export interface SlackInviteToChannelParams {
    /** Channel ID */
    channel: string;

slack_list_channel_members

List all members of a channel

export interface SlackListChannelMembersParams {
    /** Channel ID */
    channel: string;

slack_set_channel_topic

Set the topic of a channel

export interface SlackSetChannelTopicParams {
    /** Channel ID */
    channel: string;

slack_archive_channel

Archive a channel

export interface SlackArchiveChannelParams {
    /** Channel ID */
    channel: string;

slack_list_users

List all users in the workspace

export interface SlackListUsersParams {
    /** Max users to return */
    limit?: number;

slack_get_user

Get detailed profile for a user

export interface SlackGetUserParams {
    /** User ID */
    user: string;

slack_lookup_user_by_email

Find a user by their email address

export interface SlackLookupUserByEmailParams {
    /** Email address */
    email: string;

slack_add_reaction

Add an emoji reaction to a message

export interface SlackAddReactionParams {
    /** Channel ID */
    channel: string;

slack_remove_reaction

Remove an emoji reaction from a message

export interface SlackRemoveReactionParams {
    /** Channel ID */
    channel: string;

slack_get_reactions

Get all reactions on a message

export interface SlackGetReactionsParams {
    /** Channel ID */
    channel: string;

slack_upload_file

Upload a text file to one or more channels

export interface SlackUploadFileParams {
    /** Comma-separated channel IDs */
    channels: string;

slack_pin_message

Pin a message in a channel

export interface SlackPinMessageParams {
    /** Channel ID */
    channel: string;

slack_unpin_message

Unpin a message in a channel

export interface SlackUnpinMessageParams {
    /** Channel ID */
    channel: string;

slack_list_pins

List all pinned items in a channel

export interface SlackListPinsParams {
    /** Channel ID */
    channel: string;

slack_set_channel_purpose

Set the purpose of a channel

export interface SlackSetChannelPurposeParams {
    /** Channel ID */
    channel: string;

slack_rename_channel

Rename a channel

export interface SlackRenameChannelParams {
    /** Channel ID */
    channel: string;

slack_join_channel

Join a channel

export interface SlackJoinChannelParams {
    /** Channel ID or name */
    channel: string;

slack_leave_channel

Leave a channel

export interface SlackLeaveChannelParams {
    /** Channel ID */
    channel: string;

slack_kick_from_channel

Remove a user from a channel

export interface SlackKickFromChannelParams {
    /** Channel ID */
    channel: string;

slack_unarchive_channel

Unarchive a channel

export interface SlackUnarchiveChannelParams {
    /** Channel ID */
    channel: string;

slack_open_dm

Open or resume a direct message conversation with one or more users

export interface SlackOpenDmParams {
    /** Comma-separated user IDs (supports group DMs) */
    users: string;

slack_get_user_presence

Get the presence status of a user

export interface SlackGetUserPresenceParams {
    /** User ID */
    user: string;

slack_get_dnd_info

Get Do Not Disturb status for a user

export interface SlackGetDndInfoParams {
    /** User ID */
    user: string;

slack_list_files

List files in the workspace

export interface SlackListFilesParams {
    /** Filter to files in this channel */
    channel?: string;

slack_get_file

Get info about a file

export interface SlackGetFileParams {
    /** File ID */
    file: string;

slack_delete_file

Delete a file

export interface SlackDeleteFileParams {
    /** File ID */
    file: string;

slack_get_team_info

Get information about the current workspace/team

No parameters.

slack_list_bookmarks

List bookmarks for a channel

export interface SlackListBookmarksParams {
    /** Channel ID */
    channel: string;

slack_add_bookmark

Add a bookmark to a channel

export interface SlackAddBookmarkParams {
    /** Channel ID */
    channel: string;

slack_list_reminders

List reminders for the authenticated user

No parameters.

slack_add_reminder

Create a reminder for the authenticated user

export interface SlackAddReminderParams {
    /** Reminder text */
    text: string;

slack_list_usergroups

List user groups in the workspace

export interface SlackListUsergroupsParams {
    /** Whether to include user lists for each group */
    include_users?: boolean;

Notes

  • Category: Communication
  • Authentication mode: OAuth