CCM
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Claude Code Marketplaces

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Skill index
  • MCP index
  • Marketplace index
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by mertbuilds.com

Independent project, not affiliated with Anthropic
jtalk22 avatar

Slack MCP Server

jtalk22/slack-mcp-server
2780 toolsauthSTDIO, HTTPregistry active
Summary

Gives your AI assistant direct Slack access using browser session tokens instead of OAuth, sidestepping app registration and admin approval entirely. Exposes 21 tools including conversation history, search, thread retrieval, message sending, reactions, and mark-as-read. Newer workflow primitives let you save profiles that bind channels to structured output formats like incident summaries or support triage queues, with a hosted brain service that returns parseable JSON for downstream automation. Works with Claude Desktop, Cursor, Windsurf, and Gemini CLI out of the box. The session token approach means no bot user appears in workspace admin panels. Setup takes two minutes via npx, and the token refresh tool pulls fresh credentials directly from Chrome's local database.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

Tools

Public tool metadata for what this MCP can expose to an agent.

80 tools
SLACK_ACTIVATE_OR_MODIFY_DO_NOT_DISTURB_DURATIONDEPRECATED: Turns on Do Not Disturb mode for the current user, or changes its duration. Use `set_dnd_duration` instead.1 params

DEPRECATED: Turns on Do Not Disturb mode for the current user, or changes its duration. Use `set_dnd_duration` instead.

Parameters* required
num_minutesstring
Number of minutes, from now, to snooze until. Example: "60"
SLACK_ADD_A_CUSTOM_EMOJI_TO_A_SLACK_TEAMDEPRECATED: Adds a custom emoji to a Slack workspace given a unique name and an image URL. Use `add_emoji` instead.3 params

DEPRECATED: Adds a custom emoji to a Slack workspace given a unique name and an image URL. Use `add_emoji` instead.

Parameters* required
namestring
The desired name for the new custom emoji. This name will be used to invoke the emoji (e.g., if name is 'partyparrot', it's used as ':partyparrot:'). Colons around the name are not required when pr...
tokenstring
Authentication token used to authorize the request to add a custom emoji to the Slack workspace.
urlstring
The URL of the image file to be used as the custom emoji. The image should be accessible via HTTP/HTTPS and meet Slack's emoji requirements (e.g., size, format). Supported formats typically include...
SLACK_ADD_AN_EMOJI_ALIAS_IN_SLACKAdds an alias for an existing custom emoji in a Slack Enterprise Grid organization.3 params

Adds an alias for an existing custom emoji in a Slack Enterprise Grid organization.

Parameters* required
alias_forstring
The canonical name of the existing custom emoji (e.g., `original_emoji`). Examples: "party_parrot" "approved_stamp"
namestring
The new alias to be created for the emoji specified in `alias_for` (e.g., `new_emoji_alias`). Colons around the name (e.g., `:my_alias:`) are optional and will be automatically trimmed, along with...
tokenstring
Authentication token. Requires the `admin.teams:write` scope.
SLACK_ADD_A_REMOTE_FILE_FROM_A_SERVICEAdds a reference to an external file (e.g., Google Drive, Dropbox) to Slack for discovery and sharing, requiring a unique `external_id` and an `external_url` accessible by Slack.7 params

Adds a reference to an external file (e.g., Google Drive, Dropbox) to Slack for discovery and sharing, requiring a unique `external_id` and an `external_url` accessible by Slack.

Parameters* required
external_idstring
Unique identifier for the file, defined by the calling application, used for future API references (e.g., updating, deleting). Examples: "file-abc-123-xyz-789" "guid-document-42"
external_urlstring
Publicly accessible or permissioned URL of the remote file, used by Slack to access its content or metadata. Examples: "https://example.com/path/to/your/file.pdf" "https://your-service.com/file...
filetypestring
File type (e.g., 'pdf', 'docx', 'png') to help Slack display appropriate icons or previews. Examples: "pdf" "docx" "gdoc" "png" "txt" "gsheet"
indexable_file_contentsstring
Plain text content of the file, indexed by Slack for search. Examples: "This document contains project plans for Q4, focusing on market expansion and new product development." "Meeting notes fr...
preview_imagestring
Base64-encoded image (e.g., PNG, JPEG) used as the file's preview in Slack. Examples: "(base64 encoded PNG data of a chart)" "(base64 encoded JPEG data of a document cover)"
titlestring
Title of the remote file to be displayed in Slack. Examples: "Project Proposal Q3.docx" "Client Onboarding Checklist.pdf"
tokenstring
Slack authentication token, required to authorize adding the remote file. Example: "xoxp-123456789012-123456789012-1234567890123-abcdefghijklmnopqrstuvwxyz123456"
SLACK_ADD_A_STAR_TO_AN_ITEMStars a channel, file, file comment, or a specific message in Slack.4 params

Stars a channel, file, file comment, or a specific message in Slack.

Parameters* required
channelstring
ID of the channel to star. If starring a specific message, this is the ID of the channel containing the message, and `timestamp` must also be provided. Examples: "C1234567890" "G0123456789"
filestring
ID of the file to add a star to. Examples: "F1234567890" "F0987654321"
file_commentstring
ID of the file comment to add a star to. Examples: "Fc1234567890" "Fc0987654321"
timestampstring
Timestamp of the message to add a star to. This uniquely identifies the message within the specified `channel`. Requires `channel` to also be provided. Examples: "1234567890.123456" "1678886400...
SLACK_ADD_CALL_PARTICIPANTSRegisters new participants added to a Slack call.2 params

Registers new participants added to a Slack call.

Parameters* required
idstring
ID of the call returned by the add method. Example: "R0123456789"
usersstring
The list of users to add as participants in the call. users is a JSON array (formatted as a string) containing information for each user. Each element should include both a `slack_id` and optionall...
SLACK_ADD_EMOJIAdds a custom emoji to a Slack workspace given a unique name and an image URL; subject to workspace emoji limits.3 params

Adds a custom emoji to a Slack workspace given a unique name and an image URL; subject to workspace emoji limits.

Parameters* required
namestring
The desired name for the new custom emoji. This name will be used to invoke the emoji (e.g., if name is 'partyparrot', it's used as ':partyparrot:'). Colons around the name are not required when pr...
tokenstring
Authentication token used to authorize the request to add a custom emoji to the Slack workspace.
urlstring
The URL of the image file to be used as the custom emoji. The image should be accessible via HTTP/HTTPS and meet Slack's emoji requirements (e.g., size, format). Supported formats typically include...
SLACK_ADD_REACTION_TO_AN_ITEMAdds a specified emoji reaction to an existing message in a Slack channel, identified by its timestamp; does not remove or retrieve reactions.3 params

Adds a specified emoji reaction to an existing message in a Slack channel, identified by its timestamp; does not remove or retrieve reactions.

Parameters* required
channelstring
ID of the channel where the message to add the reaction to was posted. Examples: "C1234567890" "G0987654321"
namestring
Name of the emoji to add as a reaction (e.g., 'thumbsup'). This is the emoji name without colons. For emojis with skin tone modifiers, append '::skin-tone-X' where X is a number from 2 to 6 (e.g.,...
timestampstring
Timestamp of the message to which the reaction will be added. This is a unique identifier for the message, typically a string representing a float value like '1234567890.123456'. Examples: "12345...
SLACK_ARCHIVE_A_PUBLIC_OR_PRIVATE_CHANNELArchives a Slack public or private channel, making it read-only; the primary 'general' channel cannot be archived.1 params

Archives a Slack public or private channel, making it read-only; the primary 'general' channel cannot be archived.

Parameters* required
channel_idstring
ID of the public or private Slack channel to archive. Example: "C1234567890"
SLACK_ARCHIVE_A_SLACK_CONVERSATIONArchives a Slack conversation by its ID, rendering it read-only and hidden while retaining history, ideal for cleaning up inactive channels; be aware that some channels (like #general or certain DMs) cannot be archived and this may impact connected integrations.1 params

Archives a Slack conversation by its ID, rendering it read-only and hidden while retaining history, ideal for cleaning up inactive channels; be aware that some channels (like #general or certain DMs) cannot be archived and this may impact connected integrations.

Parameters* required
channelstring
ID of the Slack conversation to archive. This ID uniquely identifies a channel (e.g., public, private). Example: "C1234567890"
SLACK_CHAT_POST_MESSAGEDEPRECATED: Posts a message to a Slack channel, direct message, or private channel. Use `send_message` instead.16 params

DEPRECATED: Posts a message to a Slack channel, direct message, or private channel. Use `send_message` instead.

Parameters* required
as_userboolean
Post as the authenticated user instead of as a bot. Defaults to `false`. If `true`, `username`, `icon_emoji`, and `icon_url` are ignored. If `false`, the message is posted as a bot, allowing appear...
attachmentsstring
URL-encoded JSON array of message attachments, a legacy method for rich content. See Slack API documentation for structure. Example: "%5B%7B%22fallback%22%3A%20%22Required%20plain-text%20summary%20...
blocksstring
DEPRECATED: Use `markdown_text` field instead. URL-encoded JSON array of layout blocks for rich/interactive messages. See Slack API Block Kit docs for structure. Example: "%5B%7B%22type%22%3A%20%22...
channelstring
ID or name of the channel, private group, or IM channel to send the message to. Examples: "C1234567890" "general"
icon_emojistring
Emoji for bot's icon (e.g., ':robot_face:'). Overrides `icon_url`. Applies if `as_user` is `false`. Examples: ":tada:" ":slack:"
icon_urlstring
Image URL for bot's icon (must be HTTPS). Applies if `as_user` is `false`. Example: "https://slack.com/img/icons/appDir_2019_01/Tonito64.png"
link_namesboolean
Automatically hyperlink channel names (e.g., #channel) and usernames (e.g., @user) in message text. Defaults to `false` for bot messages.
markdown_textstring
PREFERRED: Write your message in markdown for nicely formatted display. Supports: headers (# ## ###), bold (**text** or __text__), italic (*text* or _text_), strikethrough (~~text~~), inline code (...
mrkdwnboolean
Disable Slack's markdown for `text` field if `false`. Default `true` (allows *bold*, _italic_, etc.).
parsestring
Message text parsing behavior. Default `none` (no special parsing). `full` parses as user-typed (links @mentions, #channels). See Slack API docs for details. Examples: "none" "full"
reply_broadcastboolean
If `true` for a threaded reply, also posts to main channel. Defaults to `false`.
textstring
DEPRECATED: This sends raw text only, use markdown_text field. Primary textual content. Recommended fallback if using `blocks` or `attachments`. Supports mrkdwn unless `mrkdwn` is `false`. Examples...
thread_tsstring
Timestamp (`ts`) of an existing message to make this a threaded reply. Use `ts` of the parent message, not another reply. Example: '1476746824.000004'. Example: "1618033790.001500"
unfurl_linksboolean
Enable unfurling of text-based URLs. Defaults `false` for bots, `true` if `as_user` is `true`.
unfurl_mediaboolean
Disable unfurling of media content from URLs if `false`. Defaults to `true`.
usernamestring
Bot's name in Slack (max 80 chars). Applies if `as_user` is `false`. Examples: "MyBot" "AlertBot"
SLACK_CLEAR_STATUSClears the Slack status for the authenticated user, removing any custom text and emoji.

Clears the Slack status for the authenticated user, removing any custom text and emoji.

No parameter schema in public metadata yet.

SLACK_CLOSE_DM_OR_MULTI_PERSON_DMCloses a Slack direct message (DM) or multi-person direct message (MPDM) channel, removing it from the user's sidebar without deleting history; this action affects only the calling user's view.1 params

Closes a Slack direct message (DM) or multi-person direct message (MPDM) channel, removing it from the user's sidebar without deleting history; this action affects only the calling user's view.

Parameters* required
channelstring
The ID of the direct message or multi-person direct message channel to close. Example: D1234567890 or G0123456789. Examples: "D1234567890" "G0123456789"
SLACK_CREATE_A_REMINDERCreates a Slack reminder with specified text and time; time accepts Unix timestamps, seconds from now, or natural language (e.g., 'in 15 minutes', 'every Thursday at 2pm').3 params

Creates a Slack reminder with specified text and time; time accepts Unix timestamps, seconds from now, or natural language (e.g., 'in 15 minutes', 'every Thursday at 2pm').

Parameters* required
textstring
The textual content of the reminder message. Examples: "Submit weekly report" "Follow up with Jane Doe"
timestring
Specifies when the reminder should occur. This can be a Unix timestamp (integer, up to five years from now), the number of seconds until the reminder (integer, if within 24 hours, e.g., '300' for 5...
userstring
The ID of the user who will receive the reminder (e.g., 'U012AB3CD4E'). If not specified, the reminder will be sent to the user who created it. Examples: "U012AB3CD4E" "W1234567890"
SLACK_CREATE_A_SLACK_USER_GROUPCreates a new User Group (often referred to as a subteam) in a Slack workspace.5 params

Creates a new User Group (often referred to as a subteam) in a Slack workspace.

Parameters* required
channelsstring
Comma-separated encoded channel IDs for default channels, suggested when mentioning or inviting the group. Examples: "C012AB3CD,C023BC4DE" "C034CD5EF"
descriptionstring
Short description for the User Group. Examples: "Manages all customer support inquiries." "Core engineering team members."
handlestring
Unique mention handle. Must be unique across channels, users, and other User Groups. Max 21 chars; lowercase letters, numbers, hyphens, underscores only. Examples: "support-team" "devs" "proj...
include_countboolean
Include the User Group's user count in the response. Server defaults to `false` if omitted.
namestring
Unique name for the User Group. Must be unique among all User Groups in the workspace. Examples: "Customer Support" "Core Engineering" "Project Phoenix Leads"
SLACK_CREATE_CANVASCreates a new Slack Canvas with the specified title and optional content.3 params

Creates a new Slack Canvas with the specified title and optional content.

Parameters* required
channel_idstring
Optional channel ID (e.g., 'C1234567890'). If provided, the canvas will be automatically added as a tab in this channel with write permissions. Example: "C1234567890"
document_contentvalue
Optional canvas content in Slack's document format. If not provided, creates an empty canvas. Example: {"markdown":"# Welcome\n\nThis is a new canvas","type":"markdown"}
titlestring
The title of the canvas to create Examples: "Project Planning" "Team Meeting Notes" "Sprint Retrospective"
SLACK_CREATE_CHANNELInitiates a public or private channel-based conversation3 params

Initiates a public or private channel-based conversation

Parameters* required
is_privateboolean
Create a private channel instead of a public one Example: true
namestring
Name of the public or private channel to create Example: "mychannel"
team_idstring
encoded team id to create the channel in, required if org token is used Example: "T1234567890"
SLACK_CREATE_CHANNEL_BASED_CONVERSATIONCreates a new public or private Slack channel with a unique name; the channel can be org-wide, or team-specific if `team_id` is given (required if `org_wide` is false or not provided).5 params

Creates a new public or private Slack channel with a unique name; the channel can be org-wide, or team-specific if `team_id` is given (required if `org_wide` is false or not provided).

Parameters* required
descriptionstring
Optional description for the channel (e.g., 'Discussion about Q4 marketing strategies').
is_privateboolean
Set to `true` to make the channel private, or `false` for public.
namestring
Name for the new channel. Must be unique, 80 characters or fewer, lowercase, without spaces or periods, and may contain letters, numbers, and hyphens. Examples: "project-alpha" "marketing-campa...
org_wideboolean
Set to `true` to make the channel available org-wide. If `false` or not set, `team_id` is required.
team_idstring
Workspace (team) ID for channel creation (e.g., T123ABCDEFG). Required if `org_wide` is `false` or not set. Example: "T123ABCDEFG"
SLACK_CUSTOMIZE_URL_UNFURLCustomizes URL previews (unfurling) in a specific Slack message using a URL-encoded JSON in `unfurls` to define custom content or remove existing previews.6 params

Customizes URL previews (unfurling) in a specific Slack message using a URL-encoded JSON in `unfurls` to define custom content or remove existing previews.

Parameters* required
channelstring
Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. Examples: "C1234567890" "general"
tsstring
Timestamp of the message to customize URL unfurling for. Example: "1234567890.123456"
unfurlsstring
URL-encoded JSON mapping message URLs to custom unfurl content (Slack attachment format or unfurl blocks). To remove an existing unfurl, provide an empty unfurl block for its URL. Example: "%7B%22h...
user_auth_messagestring
Ephemeral message text prompting user authentication with your app for domain-specific unfurling. Used when `user_auth_required` is true and authorization is pending. Example: "Please authenticate...
user_auth_requiredboolean
Set to `true` if user authentication is required to unfurl links for a domain, enabling an authentication flow using `user_auth_url` and `user_auth_message`. Examples: true false
user_auth_urlstring
URL-encoded custom URL for user authentication with your app to enable unfurling. Used when `user_auth_required` is true. Example: "https://yourapp.com/slack/auth?user_id=U123&channel_id=C123"
SLACK_CUSTOMIZE_URL_UNFURLING_IN_MESSAGESDEPRECATED: Customizes URL previews (unfurling) in a specific Slack message. Use `customize_url_unfurl` instead.6 params

DEPRECATED: Customizes URL previews (unfurling) in a specific Slack message. Use `customize_url_unfurl` instead.

Parameters* required
channelstring
Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. Examples: "C1234567890" "general"
tsstring
Timestamp of the message to customize URL unfurling for. Example: "1234567890.123456"
unfurlsstring
URL-encoded JSON mapping message URLs to custom unfurl content (Slack attachment format or unfurl blocks). To remove an existing unfurl, provide an empty unfurl block for its URL. Example: "%7B%22h...
user_auth_messagestring
Ephemeral message text prompting user authentication with your app for domain-specific unfurling. Used when `user_auth_required` is true and authorization is pending. Example: "Please authenticate...
user_auth_requiredboolean
Set to `true` if user authentication is required to unfurl links for a domain, enabling an authentication flow using `user_auth_url` and `user_auth_message`. Examples: true false
user_auth_urlstring
URL-encoded custom URL for user authentication with your app to enable unfurling. Used when `user_auth_required` is true. Example: "https://yourapp.com/slack/auth?user_id=U123&channel_id=C123"
SLACK_DELETE_A_COMMENT_ON_A_FILEDeletes a specific comment from a file in Slack; this action is irreversible.2 params

Deletes a specific comment from a file in Slack; this action is irreversible.

Parameters* required
filestring
ID of the file to delete a comment from. The file ID can be obtained using the `files.info` method or when a file is shared. Example: "F1234567890"
idstring
ID of the comment to delete. This can be obtained when the comment is created or by listing file comments. Example: "Fc1234567890"
SLACK_DELETE_A_FILE_BY_IDPermanently deletes an existing file from a Slack workspace using its unique file ID; this action is irreversible and also removes any associated comments or shares.1 params

Permanently deletes an existing file from a Slack workspace using its unique file ID; this action is irreversible and also removes any associated comments or shares.

Parameters* required
filestring
ID of the file to delete. Typically obtained when a file is uploaded or listed. Examples: "F2147483002" "F012345AB67"
SLACK_DELETE_A_PUBLIC_OR_PRIVATE_CHANNELPermanently and irreversibly deletes a specified public or private channel, including all its messages and files, within a Slack Enterprise Grid organization.1 params

Permanently and irreversibly deletes a specified public or private channel, including all its messages and files, within a Slack Enterprise Grid organization.

Parameters* required
channel_idstring
ID of the channel to be permanently deleted. This channel can be public or private. Example: "C0123456789"
SLACK_DELETE_A_SCHEDULED_MESSAGE_IN_A_CHATDeletes a pending, unsent scheduled message from the specified Slack channel, identified by its `scheduled_message_id`.3 params

Deletes a pending, unsent scheduled message from the specified Slack channel, identified by its `scheduled_message_id`.

Parameters* required
as_userboolean
Pass `true` to delete the message as the authenticated user (bots are considered authed users here, uses `chat:write:user` scope); if `false` or omitted, deletes as a bot (uses `chat:write:bot` sco...
channelstring
ID of the channel, private group, or DM conversation where the message is scheduled. Examples: "C1234567890" "G0123456789" "D0123456789"
scheduled_message_idstring
Unique ID (`scheduled_message_id`) of the message to be deleted; obtained from `chat.scheduleMessage` response. Examples: "Q123ABCDEF456" "SM0123456789"
SLACK_DELETE_A_SLACK_REMINDERDeletes an existing Slack reminder, typically when it is no longer relevant or a task is completed; this operation is irreversible.1 params

Deletes an existing Slack reminder, typically when it is no longer relevant or a task is completed; this operation is irreversible.

Parameters* required
reminderstring
The unique identifier of the reminder to be deleted. This ID is obtained when a reminder is created or listed. Example: "Rm1234567890"
SLACK_DELETE_CANVASDeletes a Slack Canvas permanently.1 params

Deletes a Slack Canvas permanently.

Parameters* required
canvas_idstring
The unique identifier of the canvas to delete Example: "F01234ABCDE"
SLACK_DELETES_A_MESSAGE_FROM_A_CHATDeletes a message, identified by its channel ID and timestamp, from a Slack channel, private group, or direct message conversation; the authenticated user or bot must be the original poster.3 params

Deletes a message, identified by its channel ID and timestamp, from a Slack channel, private group, or direct message conversation; the authenticated user or bot must be the original poster.

Parameters* required
as_userboolean
If `True`, deletes the message as the authenticated user using the `chat:write:user` scope. Bot users are considered authenticated users. If `False` or omitted, the message is deleted using the `ch...
channelstring
The ID of the channel, private group, or direct message conversation containing the message to be deleted. Examples: "C1234567890" "G0987654321" "D060123ABC"
tsstring
Timestamp of the message to be deleted. Must be the exact Slack message timestamp string with fractional precision, e.g., '1234567890.123456'. Examples: "1234567890.123456" "1609459200.000000"
SLACK_DELETE_USER_PROFILE_PHOTODeletes the Slack profile photo for the user identified by the token, reverting them to the default avatar; this action is irreversible and succeeds even if no custom photo was set.1 params

Deletes the Slack profile photo for the user identified by the token, reverting them to the default avatar; this action is irreversible and succeeds even if no custom photo was set.

Parameters* required
tokenstring
Authentication token identifying the user whose profile photo will be deleted. Example: "xoxp-YOUR_SLACK_LEGACY_TOKEN"
SLACK_DISABLE_AN_EXISTING_SLACK_USER_GROUPDisables a specified, currently enabled Slack User Group by its unique ID, effectively archiving it by setting its 'date_delete' timestamp; the group is not permanently deleted and can be re-enabled.2 params

Disables a specified, currently enabled Slack User Group by its unique ID, effectively archiving it by setting its 'date_delete' timestamp; the group is not permanently deleted and can be re-enabled.

Parameters* required
include_countboolean
If true, include the number of users in the User Group in the response. Examples: "true" "false"
usergroupstring
Unique encoded ID of the User Group to disable. Examples: "S0123ABCDEF" "S0604QSJC"
SLACK_EDIT_CANVASEdits a Slack Canvas with granular control over content placement. Supports replace, insert (before/after/start/end) operations for flexible content management.4 params

Edits a Slack Canvas with granular control over content placement. Supports replace, insert (before/after/start/end) operations for flexible content management.

Parameters* required
canvas_idstring
The unique identifier of the canvas to edit Example: "F01234ABCDE"
document_contentvalue
The content to add/replace in Slack's document format. Required for all operations except 'delete'. Use canvases.sections.lookup to find section IDs for targeted operations. Example: {"markdown":"#...
operationstring
Type of edit operation: 'replace' (replaces entire canvas or specific section if section_id provided), 'insert_after' (inserts content after section_id), 'insert_before' (inserts content before sec...one of replace · insert_after · insert_before · insert_at_start · insert_at_end · deletedefault: replace
section_idstring
Section ID for targeted operations. Required for: 'insert_after', 'insert_before', 'delete'. Optional for: 'replace' (if omitted, replaces entire canvas). Not used for: 'insert_at_start', 'insert_a...
SLACK_ENABLE_A_SPECIFIED_USER_GROUPEnables a disabled User Group in Slack using its ID, reactivating it for mentions and permissions; this action only changes the enabled status and cannot create new groups or modify other properties.2 params

Enables a disabled User Group in Slack using its ID, reactivating it for mentions and permissions; this action only changes the enabled status and cannot create new groups or modify other properties.

Parameters* required
include_countboolean
If true, includes the count of users in the User Group in the response. Examples: "true" "false"
usergroupstring
The unique encoded ID of the User Group to enable. This ID typically starts with 'S'. Example: "S0604QSJC"
SLACK_ENABLE_PUBLIC_SHARING_OF_A_FILEEnables public sharing for an existing Slack file by generating a publicly accessible URL; this action does not create new files.1 params

Enables public sharing for an existing Slack file by generating a publicly accessible URL; this action does not create new files.

Parameters* required
filestring
The ID of the file to be shared publicly. Example: "F0123456789"
SLACK_END_A_CALL_WITH_DURATION_AND_IDEnds an ongoing Slack call, identified by its ID (obtained from `calls.add`), optionally specifying the call's duration.2 params

Ends an ongoing Slack call, identified by its ID (obtained from `calls.add`), optionally specifying the call's duration.

Parameters* required
durationinteger
Duration of the call in seconds. Examples: "600" "3600"
idstring
Unique identifier of the call to be ended, obtained from the `calls.add` method. Example: "R0123456789"
SLACK_END_SNOOZEEnds the current user's snooze mode immediately.

Ends the current user's snooze mode immediately.

No parameter schema in public metadata yet.

SLACK_END_USER_DO_NOT_DISTURB_SESSIONEnds the authenticated user's current Do Not Disturb (DND) session in Slack, affecting only DND status and making them available; if DND is not active, Slack acknowledges the request without changing status.

Ends the authenticated user's current Do Not Disturb (DND) session in Slack, affecting only DND status and making them available; if DND is not active, Slack acknowledges the request without changing status.

No parameter schema in public metadata yet.

SLACK_END_USER_SNOOZE_MODE_IMMEDIATELYDEPRECATED: Ends the current user's snooze mode immediately. Use `end_snooze` instead.

DEPRECATED: Ends the current user's snooze mode immediately. Use `end_snooze` instead.

No parameter schema in public metadata yet.

SLACK_FETCH_BOT_USER_INFORMATIONFetches information for a specified, existing Slack bot user; will not work for regular user accounts or other integration types.1 params

Fetches information for a specified, existing Slack bot user; will not work for regular user accounts or other integration types.

Parameters* required
botstring
The ID of the bot user to retrieve information for. This typically starts with 'B'. Example: "B0123456789"
SLACK_FETCH_CONVERSATION_HISTORYFetches a chronological list of messages and events from a specified Slack conversation, accessible by the authenticated user/bot, with options for pagination and time range filtering.6 params

Fetches a chronological list of messages and events from a specified Slack conversation, accessible by the authenticated user/bot, with options for pagination and time range filtering.

Parameters* required
channelstring
The ID of the public channel, private channel, direct message, or multi-person direct message to fetch history from. Examples: "C1234567890" "G0123456789" "D0123456789"
cursorstring
Pagination cursor from `next_cursor` of a previous response to fetch subsequent pages. See Slack's pagination documentation for details. Example: "dXNlcjpVMDYxTkZUVDA="
inclusiveboolean
Include messages with `latest` or `oldest` timestamps in the results; applies only when `latest` or `oldest` is specified. Examples: "true" "false"
lateststring
End of the time range of messages to include in results. Accepts a Unix timestamp or a Slack timestamp (e.g., '1234567890.000000'). Example: "1609459200.000000"
limitinteger
Maximum number of messages to return per page (1-1000). Fewer may be returned if at the end of history or channel has fewer messages. Examples: "100" "200"
oldeststring
Start of the time range of messages to include in results. Accepts a Unix timestamp or a Slack timestamp (e.g., '1234567890.000000'). Example: "1609372800.000000"
SLACK_FETCH_CURRENT_TEAM_INFO_WITH_OPTIONAL_TEAM_SCOPEDEPRECATED: Fetches comprehensive metadata about the current Slack team. Use `fetch_team_info` instead.1 params

DEPRECATED: Fetches comprehensive metadata about the current Slack team. Use `fetch_team_info` instead.

Parameters* required
teamstring
The ID of the team to retrieve information for. If omitted, information for the current team (associated with the authentication token) is returned. The token must have permissions to view the spec...
SLACK_FETCH_DND_STATUS_FOR_MULTIPLE_TEAM_MEMBERSDEPRECATED: Retrieves a user's current Do Not Disturb status. Use `get_team_dnd_status` instead.1 params

DEPRECATED: Retrieves a user's current Do Not Disturb status. Use `get_team_dnd_status` instead.

Parameters* required
usersstring
Comma-separated list of users to fetch Do Not Disturb status for Example: "U1234,U5678"
SLACK_FETCH_ITEM_REACTIONSFetches reactions for a Slack message, file, or file comment, requiring one of: channel and timestamp; file ID; or file comment ID.5 params

Fetches reactions for a Slack message, file, or file comment, requiring one of: channel and timestamp; file ID; or file comment ID.

Parameters* required
channelstring
Channel ID. Required if `timestamp` is provided and no file or file comment ID is given. Examples: "C1234567890" "C061F7XAZ"
filestring
File ID. Use instead of channel/timestamp or file comment ID. Examples: "F1234567890" "F2147483002"
file_commentstring
File comment ID. Use instead of channel/timestamp or file ID. Examples: "Fc1234567890" "Fc789123456"
fullboolean
If true, returns the complete list of users for each reaction.
timestampstring
Message timestamp (e.g., '1234567890.123456'). Required if `channel` is provided and no file or file comment ID is given. Examples: "1234567890.123456" "1629876543.000100"
SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATIONRetrieves replies to a specific parent message in a Slack conversation, using the channel ID and the parent message's timestamp (`ts`).7 params

Retrieves replies to a specific parent message in a Slack conversation, using the channel ID and the parent message's timestamp (`ts`).

Parameters* required
channelstring
ID of the conversation (channel, direct message, etc.) to fetch the thread from. Example: "C0123456789"
cursorstring
Pagination cursor from `response_metadata.next_cursor` of a previous response to get subsequent pages. If omitted, fetches the first page. Example: "dXNlcjpVMEc5V0ZYTlo="
inclusiveboolean
Whether to include messages with `latest` or `oldest` timestamps in results. Effective only if `latest` or `oldest` is specified. Example: true
lateststring
Latest message timestamp in the time range to include results. Example: "1678886400.000000"
limitinteger
Maximum number of messages to return. Fewer may be returned even if more are available. Example: 100
oldeststring
Oldest message timestamp in the time range to include results. Example: "1678836000.000000"
tsstring
Timestamp of the parent message in the thread. Must be an existing message. If no replies, only the parent message itself is returned. Example: "1234567890.123456"
SLACK_FETCH_TEAM_INFOFetches comprehensive metadata about the current Slack team, or a specified team if the provided ID is accessible.1 params

Fetches comprehensive metadata about the current Slack team, or a specified team if the provided ID is accessible.

Parameters* required
teamstring
The ID of the team to retrieve information for. If omitted, information for the current team (associated with the authentication token) is returned. The token must have permissions to view the spec...
SLACK_FETCH_WORKSPACE_SETTINGS_INFORMATIONRetrieves detailed settings for a specific Slack workspace, primarily for administrators in an Enterprise Grid organization to view or audit workspace configurations.1 params

Retrieves detailed settings for a specific Slack workspace, primarily for administrators in an Enterprise Grid organization to view or audit workspace configurations.

Parameters* required
team_idstring
The unique identifier of the Slack team (workspace) for which to fetch settings. This ID typically starts with 'T'. Example: "T12345ABCDE"
SLACK_FIND_CHANNELSFind channels in a Slack workspace by any criteria - name, topic, purpose, or description.6 params

Find channels in a Slack workspace by any criteria - name, topic, purpose, or description.

Parameters* required
exact_matchboolean
Use exact matching instead of partial matching. Defaults to false. Examples: true falsedefault: false
exclude_archivedboolean
Exclude archived channels from search results. Defaults to true. Examples: true falsedefault: true
limitinteger
Maximum number of channels to return (1 to 200). Defaults to 50. Examples: 10 25 100default: 50
member_onlyboolean
Only return channels the user is a member of. Defaults to false. Examples: true falsedefault: false
search_querystring
Search query to find channels. Searches across channel name, topic, purpose, and description (case-insensitive partial matching). Examples: "general" "marketing" "dev" "announcements" "pr...
typesstring
Comma-separated list of channel types to include: `public_channel`, `private_channel`, `mpim` (multi-person direct message), `im` (direct message). Defaults to public and private channels. Examples...default: public_channel,private_channel
SLACK_FIND_USER_BY_EMAIL_ADDRESSRetrieves the Slack user object for an active user by their registered email address; fails with 'users_not_found' if the email is unregistered or the user is inactive.1 params

Retrieves the Slack user object for an active user by their registered email address; fails with 'users_not_found' if the email is unregistered or the user is inactive.

Parameters* required
emailstring
The email address of the user to look up. Examples: "sally.doe@example.com" "johndoe@workplace.org"
SLACK_FIND_USERSFind users in a Slack workspace by any criteria - email, name, display name, or other text. Includes optimized email lookup for exact email matches.6 params

Find users in a Slack workspace by any criteria - email, name, display name, or other text. Includes optimized email lookup for exact email matches.

Parameters* required
exact_matchboolean
Use exact matching instead of partial matching. Defaults to false. Examples: true falsedefault: false
include_botsboolean
Include bot users in search results. Defaults to false. Examples: true falsedefault: false
include_deletedboolean
Include deleted/deactivated users in search results. Defaults to false. Examples: true falsedefault: false
include_restrictedboolean
Include restricted (guest) users in search results. Defaults to true. Examples: true falsedefault: true
limitinteger
Maximum number of users to return (1 to 200). Defaults to 50. Examples: 10 25 100default: 50
search_querystring
Search query to find users. Searches across name, display name, real name, email address, first name, last name, and status text (case-insensitive partial matching). For exact email matches with ex...
SLACK_GET_CANVASRetrieves a specific Slack Canvas by its ID, including its content and metadata.1 params

Retrieves a specific Slack Canvas by its ID, including its content and metadata.

Parameters* required
canvas_idstring
The unique identifier of the canvas to retrieve Example: "F01234ABCDE"
SLACK_GET_CHANNEL_CONVERSATION_PREFERENCESRetrieves conversation preferences (e.g., who can post, who can thread) for a specified channel, primarily for use within Slack Enterprise Grid environments.1 params

Retrieves conversation preferences (e.g., who can post, who can thread) for a specified channel, primarily for use within Slack Enterprise Grid environments.

Parameters* required
channel_idstring
Identifier of the channel for which to retrieve conversation preferences. Example: "C0123456789"
SLACK_GET_REMINDER_INFORMATIONRetrieves detailed information for an existing Slack reminder specified by its ID; this is a read-only operation.1 params

Retrieves detailed information for an existing Slack reminder specified by its ID; this is a read-only operation.

Parameters* required
reminderstring
The unique identifier of the reminder to retrieve information for. This ID typically starts with 'Rm'. Example: "Rm12345678"
SLACK_GET_REMOTE_FILERetrieve information about a remote file added to Slack.2 params

Retrieve information about a remote file added to Slack.

Parameters* required
external_idstring
Creator defined GUID for the file. Example: "123456"
filestring
Specify a file by providing its ID. Example: "F2147483862"
SLACK_GET_TEAM_DND_STATUSRetrieves a user's current Do Not Disturb status.1 params

Retrieves a user's current Do Not Disturb status.

Parameters* required
usersstring
Comma-separated list of users to fetch Do Not Disturb status for Example: "U1234,U5678"
SLACK_GET_USER_PRESENCE_INFORetrieves a Slack user's current real-time presence (e.g., 'active', 'away') to determine their availability, noting this action does not provide historical data or status reasons.1 params

Retrieves a Slack user's current real-time presence (e.g., 'active', 'away') to determine their availability, noting this action does not provide historical data or status reasons.

Parameters* required
userstring
The ID of the user to query for presence information. This is a string identifier, typically starting with 'U' or 'W' (e.g., 'U123ABC456'). If not provided, presence information for the authenticat...
SLACK_INITIATES_CHANNEL_BASED_CONVERSATIONSDEPRECATED: Initiates a public or private channel-based conversation. Use `create_channel` instead.3 params

DEPRECATED: Initiates a public or private channel-based conversation. Use `create_channel` instead.

Parameters* required
is_privateboolean
Create a private channel instead of a public one Example: true
namestring
Name of the public or private channel to create Example: "mychannel"
team_idstring
encoded team id to create the channel in, required if org token is used Example: "T1234567890"
SLACK_INVITE_USERS_TO_A_SLACK_CHANNELInvites users to an existing Slack channel using their valid Slack User IDs.2 params

Invites users to an existing Slack channel using their valid Slack User IDs.

Parameters* required
channelstring
ID of the public or private Slack channel to invite users to; must be an existing channel. Typically starts with 'C' (public) or 'G' (private/group). Examples: "C1234567890" "G0987654321"
usersstring
Comma-separated string of valid Slack User IDs to invite. Up to 1000 user IDs can be included. Example: "U1234567890,U2345678901,U3456789012"
SLACK_INVITE_USER_TO_CHANNELInvites users to a specified Slack channel; this action is restricted to Enterprise Grid workspaces and requires the authenticated user to be a member of the target channel.2 params

Invites users to a specified Slack channel; this action is restricted to Enterprise Grid workspaces and requires the authenticated user to be a member of the target channel.

Parameters* required
channel_idstring
The ID of the public or private Slack channel to which users will be invited. Examples: "C1234567890" "C061X2Z7W9S"
user_idsstring
A comma-separated string of Slack User IDs to invite to the channel. Up to 1000 users can be specified. Examples: "U012A3CDE,U023B4DEF" "W12345678,W87654321"
SLACK_INVITE_USER_TO_WORKSPACEInvites a user to a Slack workspace and specified channels by email; use `resend=True` to re-process an existing invitation for a user not yet signed up.9 params

Invites a user to a Slack workspace and specified channels by email; use `resend=True` to re-process an existing invitation for a user not yet signed up.

Parameters* required
channel_idsstring
A comma-separated list of channel IDs (e.g., C1234567890,C0987654321) for the user to join. At least one channel ID must be provided. Examples: "C1234567890,C9876543210" "C0123456789"
custom_messagestring
Custom message to include in the invitation email. Example: "Welcome to the team! Looking forward to working with you."
emailstring
The email address of the person to be invited to the workspace. Example: "new.user@example.com"
guest_expiration_tsstring
Unix timestamp for guest account expiration; provide only if inviting a guest user and an expiration date is desired. Example: "1678886400"
is_restrictedboolean
Specifies if the invited user should be a multi-channel guest. Defaults to false. Multi-channel guests can access only the channels they are invited to, plus any public channels. Examples: "false...
is_ultra_restrictedboolean
Specifies if the invited user should be a single-channel guest (also known as an ultra-restricted guest). Defaults to false. Single-channel guests can only access one channel (plus DMs and Huddles)...
real_namestring
The full name of the user being invited. Example: "Jane Doe"
resendboolean
If true, allows this invitation to be resent if the user hasn't signed up. Defaults to false. Examples: "false" "true"
team_idstring
The ID of the Slack workspace (e.g., T123ABCDEFG) where the user will be invited. Example: "T123ABCDEFG"
SLACK_INVITE_USER_TO_WORKSPACE_WITH_OPTIONAL_CHANNEL_INVITESDEPRECATED: Invites a user to a Slack workspace and specified channels by email. Use `invite_user_to_workspace` instead.9 params

DEPRECATED: Invites a user to a Slack workspace and specified channels by email. Use `invite_user_to_workspace` instead.

Parameters* required
channel_idsstring
A comma-separated list of channel IDs (e.g., C1234567890,C0987654321) for the user to join. At least one channel ID must be provided. Examples: "C1234567890,C9876543210" "C0123456789"
custom_messagestring
Custom message to include in the invitation email. Example: "Welcome to the team! Looking forward to working with you."
emailstring
The email address of the person to be invited to the workspace. Example: "new.user@example.com"
guest_expiration_tsstring
Unix timestamp for guest account expiration; provide only if inviting a guest user and an expiration date is desired. Example: "1678886400"
is_restrictedboolean
Specifies if the invited user should be a multi-channel guest. Defaults to false. Multi-channel guests can access only the channels they are invited to, plus any public channels. Examples: "false...
is_ultra_restrictedboolean
Specifies if the invited user should be a single-channel guest (also known as an ultra-restricted guest). Defaults to false. Single-channel guests can only access one channel (plus DMs and Huddles)...
real_namestring
The full name of the user being invited. Example: "Jane Doe"
resendboolean
If true, allows this invitation to be resent if the user hasn't signed up. Defaults to false. Examples: "false" "true"
team_idstring
The ID of the Slack workspace (e.g., T123ABCDEFG) where the user will be invited. Example: "T123ABCDEFG"
SLACK_JOIN_AN_EXISTING_CONVERSATIONJoins an existing Slack conversation (public channel, private channel, or multi-person direct message) by its ID, if the authenticated user has permission.1 params

Joins an existing Slack conversation (public channel, private channel, or multi-person direct message) by its ID, if the authenticated user has permission.

Parameters* required
channelstring
ID of the Slack conversation (public channel, private channel, or multi-person direct message) to join. Examples: "C1234567890" "G0987654321" "D123ABCDEF0"
SLACK_LEAVE_A_CONVERSATIONLeaves a Slack conversation given its channel ID; fails if leaving as the last member of a private channel or if used on a Slack Connect channel.1 params

Leaves a Slack conversation given its channel ID; fails if leaving as the last member of a private channel or if used on a Slack Connect channel.

Parameters* required
channelstring
ID of the conversation to leave (e.g., C1234567890). Despite `default=None` in the schema, this ID is functionally required by the Slack API. Examples: "C1234567890" "D9876543210" "G12345ABCDE"
SLACK_LIST_ACCESSIBLE_CONVERSATIONS_FOR_A_USERDEPRECATED: Retrieves conversations accessible to a specified user. Use `list_conversations` instead.5 params

DEPRECATED: Retrieves conversations accessible to a specified user. Use `list_conversations` instead.

Parameters* required
cursorstring
Pagination cursor for retrieving the next set of results. Obtain this from the `next_cursor` field in a previous response's `response_metadata`. If omitted, the first page is fetched. Examples: "...
exclude_archivedboolean
Set to `true` to exclude archived channels from the list. If `false` or omitted, archived channels are typically included (the API's default behavior for omission will apply, usually including them...
limitinteger
The maximum number of items to return per page. Must be an integer, typically between 1 and 1000 (e.g., 100). If omitted, the API's default limit (often 100) applies. Fewer items than the limit may...
typesstring
A comma-separated list of conversation types to include. Valid types are `public_channel`, `private_channel`, `mpim` (multi-person direct message), and `im` (direct message). If omitted, all types...
userstring
The ID of the user whose conversations will be listed. If not provided, conversations for the authenticated user are returned. Non-public channels are restricted to those where the calling user (au...
SLACK_LIST_ALL_CHANNELSLists conversations available to the user with various filters and search options.5 params

Lists conversations available to the user with various filters and search options.

Parameters* required
channel_namestring
Filter channels by name (case-insensitive substring match). This is a client-side filter applied after fetching from the API. Examples: "general" "announcements"
cursorstring
Pagination cursor (from a previous response's `next_cursor`) for the next page of results. Omit for the first page. Examples: "dXNlcjpVMDYxTkZUVDI=" "bmV4dF90czoxNTEyMDg1ODYxMDAwNTQ5"
exclude_archivedboolean
Excludes archived channels if true. The API defaults to false (archived channels are included). Examples: true false
limitinteger
Maximum number of channels to return per page (1 to 1000). Fewer channels may be returned than requested. This schema defaults to 1 if omitted. Examples: 100 500 1000default: 1
typesstring
Comma-separated list of channel types to include: `public_channel`, `private_channel`, `mpim` (multi-person direct message), `im` (direct message). The API defaults to `public_channel` if this para...
SLACK_LIST_ALL_SLACK_TEAM_CHANNELS_WITH_VARIOUS_FILTERSDEPRECATED: Lists conversations available to the user with various filters and search options. Use `list_channels` instead.5 params

DEPRECATED: Lists conversations available to the user with various filters and search options. Use `list_channels` instead.

Parameters* required
channel_namestring
Filter channels by name (case-insensitive substring match). This is a client-side filter applied after fetching from the API. Examples: "general" "announcements"
cursorstring
Pagination cursor (from a previous response's `next_cursor`) for the next page of results. Omit for the first page. Examples: "dXNlcjpVMDYxTkZUVDI=" "bmV4dF90czoxNTEyMDg1ODYxMDAwNTQ5"
exclude_archivedboolean
Excludes archived channels if true. The API defaults to false (archived channels are included). Examples: true false
limitinteger
Maximum number of channels to return per page (1 to 1000). Fewer channels may be returned than requested. This schema defaults to 1 if omitted. Examples: 100 500 1000default: 1
typesstring
Comma-separated list of channel types to include: `public_channel`, `private_channel`, `mpim` (multi-person direct message), `im` (direct message). The API defaults to `public_channel` if this para...
SLACK_LIST_ALL_SLACK_TEAM_USERS_WITH_PAGINATIONDEPRECATED: Retrieves a paginated list of all users in a Slack workspace. Use `list_all_users` instead.3 params

DEPRECATED: Retrieves a paginated list of all users in a Slack workspace. Use `list_all_users` instead.

Parameters* required
cursorstring
Pagination cursor for fetching subsequent pages. Set to `next_cursor` from a previous response's `response_metadata`. Omit for the first page. Examples: "dXNlcjpVMDYxREk0STM=" "dXNlcjpVMDYxREk0...
include_localeboolean
Include the `locale` field for each user. Defaults to `false`. Examples: "true" "false"
limitinteger
Maximum number of items to return per page; fewer may be returned if the end of the list is reached. Recommended to set a value (e.g., 100) as Slack may error for large workspaces if omitted. Examp...default: 1
SLACK_LIST_ALL_USERSRetrieves a paginated list of all users, including comprehensive details, profile information, status, and team memberships, in a Slack workspace; data may not be real-time.3 params

Retrieves a paginated list of all users, including comprehensive details, profile information, status, and team memberships, in a Slack workspace; data may not be real-time.

Parameters* required
cursorstring
Pagination cursor for fetching subsequent pages. Set to `next_cursor` from a previous response's `response_metadata`. Omit for the first page. Examples: "dXNlcjpVMDYxREk0STM=" "dXNlcjpVMDYxREk0...
include_localeboolean
Include the `locale` field for each user. Defaults to `false`. Examples: "true" "false"
limitinteger
Maximum number of items to return per page; fewer may be returned if the end of the list is reached. Recommended to set a value (e.g., 100) as Slack may error for large workspaces if omitted. Examp...default: 1
SLACK_LIST_ALL_USERS_IN_A_USER_GROUPRetrieves a list of all user IDs within a specified Slack user group, with an option to include users from disabled groups.2 params

Retrieves a list of all user IDs within a specified Slack user group, with an option to include users from disabled groups.

Parameters* required
include_disabledboolean
Set to `true` to include users from disabled user groups. If omitted, the default Slack API behavior for handling disabled groups (typically excluding them) will apply.
usergroupstring
The encoded ID of the User Group to list users from. This ID is an alphanumeric string. Examples: "S0604QSJC" "S123ABC456"
SLACK_LIST_CANVASESLists Slack Canvases with filtering by channel, user, timestamp, and page-based pagination. Uses Slack's files.list API with types=canvas filter.6 params

Lists Slack Canvases with filtering by channel, user, timestamp, and page-based pagination. Uses Slack's files.list API with types=canvas filter.

Parameters* required
channelstring
Optional channel ID (e.g., 'C1234567890') to filter canvases. Must be a channel ID, not name. Examples: "C1234567890" "C9876543210"
countinteger
Maximum number of canvases to return per page (1-1000)default: 100
pageinteger
Page number for pagination (1-based)default: 1
ts_fromstring
Filter canvases created after this timestamp (inclusive). Unix timestamp as string. Example: "123456789"
ts_tostring
Filter canvases created before this timestamp (inclusive). Unix timestamp as string. Example: "123456789"
userstring
Optional user ID to filter canvases created by a specific user. Example: "U1234567890"
SLACK_LIST_CONVERSATIONSList conversations (channels/DMs) accessible to a specified user (or the authenticated user if no user ID is provided), respecting shared membership for non-public channels.5 params

List conversations (channels/DMs) accessible to a specified user (or the authenticated user if no user ID is provided), respecting shared membership for non-public channels.

Parameters* required
cursorstring
Pagination cursor for retrieving the next set of results. Obtain this from the `next_cursor` field in a previous response's `response_metadata`. If omitted, the first page is fetched. Examples: "...
exclude_archivedboolean
Set to `true` to exclude archived channels from the list. If `false` or omitted, archived channels are typically included (the API's default behavior for omission will apply, usually including them...
limitinteger
The maximum number of items to return per page. Must be an integer, typically between 1 and 1000 (e.g., 100). If omitted, the API's default limit (often 100) applies. Fewer items than the limit may...
typesstring
A comma-separated list of conversation types to include. Valid types are `public_channel`, `private_channel`, `mpim` (multi-person direct message), and `im` (direct message). If omitted, all types...
userstring
The ID of the user whose conversations will be listed. If not provided, conversations for the authenticated user are returned. Non-public channels are restricted to those where the calling user (au...
SLACK_LIST_FILES_WITH_FILTERS_IN_SLACKLists files and their metadata within a Slack workspace, filterable by user, channel, timestamp, or type; this action returns metadata only, not file content.8 params

Lists files and their metadata within a Slack workspace, filterable by user, channel, timestamp, or type; this action returns metadata only, not file content.

Parameters* required
channelstring
Filter files appearing in a specific channel, indicated by its Slack Channel ID. Examples: "C1234567890" "G0abcdef0"
countstring
Specifies the number of files to return per page. Default is 100, maximum is 1000. Examples: "100" "50" "1000"
pagestring
Specifies the page number of the results to retrieve when paginating. Default is 1. Examples: "1" "2"
show_files_hidden_by_limitboolean
Show truncated file info for files hidden due to being too old or if the team owning the file is over the storage limit. Examples: true false
ts_frominteger
Filter files created after this Unix timestamp (inclusive). Example: "1678886400"
ts_tointeger
Filter files created before this Unix timestamp (inclusive). Example: "1678972800"
typesstring
Filter files by types (comma-separated: 'images,pdfs'). Default 'all' for all types. Common: `all`, `spaces` (posts), `snippets`, `images`, `gdocs`, `zips`, `pdfs`. Examples: "images" "pdfs"...
userstring
Filter files created by a single user. Provide the Slack User ID. Examples: "W1234567890" "U0abcdef0"
SLACK_LIST_REMINDERSLists all reminders with their details for the authenticated Slack user; returns an empty list if no reminders exist.

Lists all reminders with their details for the authenticated Slack user; returns an empty list if no reminders exist.

No parameter schema in public metadata yet.

SLACK_LIST_REMOTE_FILESRetrieve information about a team's remote files.5 params

Retrieve information about a team's remote files.

Parameters* required
channelstring
Filter files appearing in a specific channel, indicated by its ID. Example: "C1234567890"
cursorstring
Paginate through collections of data by setting the cursor parameter to a next_cursor attribute returned by a previous request's response_metadata. Default value fetches the first 'page' of the col...
limitinteger
The maximum number of items to return. Example: 20
ts_fromnumber
Filter files created after this timestamp (inclusive). Example: 123456789.012345
ts_tonumber
Filter files created before this timestamp (inclusive). Example: 123456789.012345
SLACK_LIST_SCHEDULED_MESSAGESRetrieves a list of pending (not yet delivered) messages scheduled in a specific Slack channel, or across all accessible channels if no channel ID is provided, optionally filtered by time and paginated.5 params

Retrieves a list of pending (not yet delivered) messages scheduled in a specific Slack channel, or across all accessible channels if no channel ID is provided, optionally filtered by time and paginated.

Parameters* required
channelstring
ID or name of the channel (public, private, or DM) to list messages for. If omitted, lists for all accessible channels in the workspace. Examples: "C1234567890" "general"
cursorstring
Pagination cursor from `response_metadata.next_cursor` of a previous response. Omit for the first page. Examples: "dXNlcjpVMDYxREk0STM=" "bmV4dF9wYWdlX2N1cnNvcg=="
lateststring
Latest UNIX timestamp (exclusive) for messages. Defaults to the current time if omitted. Examples: "1678886400.000000" "1678972800.000000"
limitinteger
Maximum messages per page (1-1000). Defaults to 100. Examples: "100" "50"
oldeststring
Earliest UNIX timestamp (inclusive) for messages. Defaults to 0 if omitted. Examples: "1678800000.000000" "1678880000.000000"
SLACK_LIST_SCHEDULED_MESSAGES_IN_A_CHANNELDEPRECATED: Retrieves a list of pending (not yet delivered) messages scheduled in a specific Slack channel. Use `list_scheduled_messages` instead.5 params

DEPRECATED: Retrieves a list of pending (not yet delivered) messages scheduled in a specific Slack channel. Use `list_scheduled_messages` instead.

Parameters* required
channelstring
ID or name of the channel (public, private, or DM) to list messages for. If omitted, lists for all accessible channels in the workspace. Examples: "C1234567890" "general"
cursorstring
Pagination cursor from `response_metadata.next_cursor` of a previous response. Omit for the first page. Examples: "dXNlcjpVMDYxREk0STM=" "bmV4dF9wYWdlX2N1cnNvcg=="
lateststring
Latest UNIX timestamp (exclusive) for messages. Defaults to the current time if omitted. Examples: "1678886400.000000" "1678972800.000000"
limitinteger
Maximum messages per page (1-1000). Defaults to 100. Examples: "100" "50"
oldeststring
Earliest UNIX timestamp (inclusive) for messages. Defaults to 0 if omitted. Examples: "1678800000.000000" "1678880000.000000"
SLACK_LIST_SLACK_S_REMOTE_FILES_WITH_FILTERSDEPRECATED: Retrieve information about a team's remote files. Use `list_remote_files` instead.5 params

DEPRECATED: Retrieve information about a team's remote files. Use `list_remote_files` instead.

Parameters* required
channelstring
Filter files appearing in a specific channel, indicated by its ID. Example: "C1234567890"
cursorstring
Paginate through collections of data by setting the cursor parameter to a next_cursor attribute returned by a previous request's response_metadata. Default value fetches the first 'page' of the col...
limitinteger
The maximum number of items to return. Example: 20
ts_fromnumber
Filter files created after this timestamp (inclusive). Example: 123456789.012345
ts_tonumber
Filter files created before this timestamp (inclusive). Example: 123456789.012345
SLACK_LISTS_PINNED_ITEMS_IN_A_CHANNELRetrieves all messages and files pinned to a specified channel; the caller must have access to this channel.1 params

Retrieves all messages and files pinned to a specified channel; the caller must have access to this channel.

Parameters* required
channelstring
The ID of the channel to retrieve pinned items from. This can be a public channel ID, private group ID, or direct message channel ID. Examples: "C1234567890" "G0123456789" "D0123456789"
SLACK_LIST_STARRED_ITEMSLists items starred by a user.4 params

Lists items starred by a user.

Parameters* required
countvalue
Number of items to return per page. Example: 20
cursorstring
Parameter for pagination. Set cursor to the next_cursor attribute returned by the previous request's response_metadata. Example: "dXNlcjpVMDYxTkZUVDI="
limitvalue
The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Example: 20
pagevalue
Page number of results to return. Example: 2
SLACK_LISTS_USER_S_STARRED_ITEMS_WITH_PAGINATIONDEPRECATED: Lists items starred by a user. Use `list_starred_items` instead.4 params

DEPRECATED: Lists items starred by a user. Use `list_starred_items` instead.

Parameters* required
countvalue
Number of items to return per page. Example: 20
cursorstring
Parameter for pagination. Set cursor to the next_cursor attribute returned by the previous request's response_metadata. Example: "dXNlcjpVMDYxTkZUVDI="
limitvalue
The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Example: 20
pagevalue
Page number of results to return. Example: 2
SLACK_LIST_TEAM_CUSTOM_EMOJISRetrieves all custom emojis for the Slack workspace (image URLs or aliases), not standard Unicode emojis; does not include usage statistics or creation dates.

Retrieves all custom emojis for the Slack workspace (image URLs or aliases), not standard Unicode emojis; does not include usage statistics or creation dates.

No parameter schema in public metadata yet.

SLACK_LIST_USER_GROUPS_FOR_TEAM_WITH_OPTIONSLists user groups in a Slack workspace, including user-created and default groups; results for large workspaces may be paginated.3 params

Lists user groups in a Slack workspace, including user-created and default groups; results for large workspaces may be paginated.

Parameters* required
include_countboolean
Include the number of users in each user group. Defaults to false. Examples: "true" "false"
include_disabledboolean
Include disabled user groups in the results. Defaults to false. Examples: "true" "false"
include_usersboolean
Include the list of user IDs for each user group. Defaults to false. Examples: "true" "false"
SLACK_LIST_USER_REACTIONSLists all reactions added by a specific user to messages, files, or file comments in Slack, useful for engagement analysis when the item content itself is not required.6 params

Lists all reactions added by a specific user to messages, files, or file comments in Slack, useful for engagement analysis when the item content itself is not required.

Parameters* required
countinteger
Number of items to return per page. Example: "20"
cursorstring
Pagination cursor. Set to `next_cursor` from a previous response's `response_metadata`. See Slack API pagination documentation for details. Example: "dXNlcjpVMDYxTkZ0NUI="
fullboolean
If true, return the complete reaction list, which may include reactions to deleted items.
limitinteger
Maximum number of items to return; fewer items may be returned. Use with cursor-based pagination. Example: "100"
pageinteger
Page number of results to return. Example: "1"
userstring
Reactions made by this user. Defaults to the authed user. Example: "U012A3CDEFG"

npm version npm weekly downloads CI npm provenance signed MCP Registry

Slack MCP channel mark

Slack MCP Server

Catch up on Slack without reading it.

Unreads, threads, and search — in your agent’s context, from the session you already have.

npx -y @jtalk22/slack-mcp --setup

Claude Code Claude Desktop Cursor Copilot Windsurf Gemini CLI Codex CLI any stdio MCP client

47 unread Slack messages across four conversations become one prioritized morning briefing

▶ It’s Monday, 9:07—watch what blew up overnight · interactive walkthrough · setup guide

How it works · Why session auth · Grid & credentials · Install · 19 tools · Workflows · Local vs hosted


It’s Monday, 9:07. Slack has already formed opinions.

You ask “what blew up overnight?” and the agent reads the workspace instead of you. It reconstructs the 2 AM P1 from #incidents—owner, resolution, and the runbook step that is still wrong. It finds the printer PIN that has been waiting in #facilities for five months. Then it closes the handled loops—replies, reactions, read-state changes—only where you approve.

This is not screenshot automation. The agent calls Slack through a real MCP tool surface and receives typed results it can search, summarize, export, or act on.


Built past the demo

The difficult part is not another chat tool. It is the operating layer underneath: browser-session extraction that names its failure stages, a credential lifecycle built for rotation, full-fidelity reads, guarded writes, and typed workflow output. The code is plain JavaScript in this repository—audit it before trusting it with a session.

The engineering underneath — extraction, credential lifecycle, reads, guarded writes, typed output

1. The browser-session engine

--setup turns the Slack identity Chrome already holds into a local MCP server:

  • finds the newest xoxc- token in Chrome's on-disk LevelDB;
  • snapshots the cookie SQLite database with its WAL sidecars;
  • retrieves Chrome Safe Storage from the macOS Keychain;
  • runs Chrome-compatible PBKDF2 + AES-128-CBC decryption locally;
  • requires no DevTools, clipboard step, browser flag, or live Slack tab;
  • names the failed extraction stage—keychain_timeout, no_slack_cookie_row, cookie_decrypt_failed, and more—instead of returning one opaque error.

2. Credential lifecycle, not credential paste

Session credentials rotate. The server is built around that reality:

  • auto, keychain-only, and file storage backends;
  • owner-only token files and a Keychain-only path with no plaintext credentials on disk;
  • atomic file writes, verified Keychain migration, cross-process locks, and refresh mutexes;
  • proactive health checks and automatic macOS refresh;
  • last-known-good in-memory credentials when persistence is temporarily unavailable;
  • isolated profiles for work and personal Slack;
  • fail-closed handling for invalid storage or profile configuration.

3. Full-fidelity Slack reads

Read DMs and channels, search the workspace, export complete histories with threads, inspect unread state, and resolve users. Opt into blocks, attachments, files, reactions, metadata, and bot/app markers when text alone is not the real message.

4. The agent can finish the job

Send a reply, add or remove a reaction, and mark a conversation read. Every workspace write path carries an MCP destructive annotation so compatible clients can put approval where it belongs.

5. Slack in, typed JSON out

Save workflow profiles for incident rooms, executive briefs, support inboxes, launch watches, and custom operations. The OSS primitives are local JSON; the optional hosted brain renders them into contract-shaped briefs.


Two ways into Slack

Slack already knows who you are. The official path is a Slack-managed remote integration governed by workspace policy—a strong fit for organization-sanctioned deployments, documented by Slack with integration settings under admin control. This project is the direct local path: session-based auth from the browser session already in Chrome, local stdio, any stdio MCP client, and no Slack app or admin request. Same Slack identity. Same underlying permissions. A radically shorter path from your workspace to your agent.

Side by side: the managed integration path vs. the local session path
Slack official MCPSlack MCP Server — local
Starting pointA Slack-managed remote integrationThe Slack session already in Chrome
Workspace controlGoverned by workspace integration settingsNo Slack app or admin request for the local path
TransportStreamable HTTPLocal stdio
Client surfaceSlack's supported partner integrationsAny stdio MCP client
AuthenticationOAuthExisting browser session
Credential lifetimeManaged OAuthRotating session with health checks and refresh
Product surfaceBroad Slack-native capabilities19 focused tools across read, act, and automate
ProtocolSlack-managedMCP 2026-07-28 and every 2025 revision, from the same binary
RuntimeSlack-managedMIT code on your machine
Is the local path against Slack's terms?

Treat browser-session automation as an acceptable-use decision for you and your workspace. The server acts as your signed-in Slack identity and cannot read a channel you cannot read or act as another user. It does not evade server-side retention, DLP, compliance exports, or audit controls.

"No admin request" means there is no Slack app installation to approve. It does not mean workspace activity disappears from Slack's systems. If your policy requires a sanctioned OAuth integration, use the official MCP or the optional hosted OAuth path.


Grid, credentials, and caching

Enterprise Grid. Grid runs aggressive session-anomaly detection. Browser-session automation can trip it, which flags the session and kills it, regardless of which tool drives the traffic. Outbound calls are paced by default to stay under burst thresholds (SLACK_MCP_MIN_REQUEST_INTERVAL_MS, default 350; SLACK_MCP_MAX_CONCURRENCY, default 3). Pacing lowers that risk; it does not remove it. On Grid, use the hosted OAuth tier or Slack's official MCP instead.

Credential extraction. --setup reads the newest xoxc- token from Chrome's on-disk LevelDB, snapshots the cookie SQLite database, retrieves Chrome Safe Storage from the macOS Keychain, and runs PBKDF2 + AES-128-CBC decryption locally. It writes the token file, Keychain entries, and non-secret metadata. It transmits nothing — the server talks to Slack and nowhere else.

This is the same access pattern credential stealers use. Chrome App-Bound Encryption exists to make this class of read harder, and infostealer families (Lumma, Vidar, Meduza) bypass it to lift live sessions. The mechanism here is comparable. What differs is that you run it, on your own machine, against your own session, and nothing leaves the host. The source is plain JavaScript in this repository; audit it before handing it a live session.

User cache. One cache exists: user-name lookups, populated on demand, 500 entries maximum, one-hour TTL. No message content, no channel history, and no persistent copy of the workspace is stored.


Install

Node 22 or 24 recommended. Node 20 remains supported for the v4 line.

npx -y @jtalk22/slack-mcp --setup

Prefer a persistent CLI: npm install -g @jtalk22/slack-mcp then slack-mcp --setup.

Then:

  1. Pick your client in the setup guide.
  2. Register the generated stdio command.
  3. Fully restart the client.
  4. Ask the agent to run slack_health_check.
  5. A workspace name in the response means the connection is live.

Use the same server command everywhere:

{
  "command": "npx",
  "args": ["-y", "@jtalk22/slack-mcp"]
}

On macOS, setup can extract from Chrome and persist the selected storage backend. On other platforms, provide SLACK_TOKEN and SLACK_COOKIE through the client's environment configuration. Docker, HTTP, and detailed client examples live in docs/SETUP.md and docs/DEPLOYMENT-MODES.md.

Client configuration matrix
ClientConfiguration surfaceStatus
Claude Codeclaude mcp add or ~/.claude.jsonDocumented
Claude DesktopDesktop MCP configurationVerified
Cursor.cursor/mcp.jsonDocumented
GitHub Copilot.vscode/mcp.jsonDocumented
Windsurf~/.codeium/windsurf/mcp_config.jsonDocumented
Gemini CLI~/.gemini/settings.jsonDocumented
Codex CLIcodex mcp add or ~/.codex/config.tomlDocumented
Other clientsAny stdio MCP configurationProtocol-compatible

19 tools: read, act, automate

The local surface ships 19 tools today: 12 read-only Slack operations, 4 write-path tools that each carry an MCP destructive annotation so clients can gate workspace writes, and 3 local workflow tools including the catch-up itself. Every tool does its work here — reads Slack or local state — and none is a placeholder for something you would have to pay for. Four read tools accept include_rich_message_fields: true to surface attachments, blocks, files, reactions, and metadata—complete inputs and response contracts live in docs/API.md.

Speaks MCP 2026-07-28 and every 2025 revision from the same binary — era-negotiated over stdio, stateless per request over HTTP (no Mcp-Session-Id; GET/DELETE answer 405). The claim is a test, not a sentence: test/mcp-era.test.js drives the real SDK client at both eras against the real entry points.

Advertising fewer tools. A client pays for the tool schema on every turn that carries it. SLACK_MCP_TOOLS=essentials advertises six tools — unread, history, search, thread, user lookup, send — costing roughly 985 estimated tokens of schema per turn against about 3,134 for all 19. SLACK_MCP_TOOLS=read advertises the 12 read-only Slack operations listed below, near 1,690. --tools=slack_x,slack_y takes an explicit set. The default stays all 19. Filtering changes what is advertised, not what is callable. Reproduce the numbers with node scripts/measure-tool-schema.js (a ~4-chars-per-token estimate).

The full tool inventory

12 read-only Slack operations

ToolPurpose
slack_health_checkVerify credentials and workspace identity
slack_token_statusInspect credential age, health, cache, profile, and storage state
slack_refresh_tokensRefresh local credentials from the browser session on macOS—reads Slack, writes only local state
slack_list_conversationsList channels and DMs
slack_conversations_historyRead channel or DM history with optional rich fields
slack_get_full_conversationExport complete history and threads
slack_search_messagesSearch across the workspace
slack_get_threadRead all replies in a thread
slack_users_infoResolve a user
slack_list_usersPage through large workspace directories
slack_users_searchSearch users by name, display name, or email
slack_conversations_unreadsPrioritize conversations with unread messages

Act in the workspace — 4 write-path tools

ToolPurposeMCP safety
slack_send_messageSend to a channel or DMdestructive
slack_add_reactionAdd an emoji reactiondestructive
slack_remove_reactionRemove an emoji reactiondestructive
slack_conversations_markMark a conversation readdestructive

Automate locally — 3 workflow tools

ToolPurpose
slack_workflow_saveSave a typed workflow profile to ~/.slack-mcp-workflows.json
slack_workflowsList saved workflow profiles
slack_catch_me_upRead a profile's channels since its cadence window and return structured catch-up evidence

slack_refresh_tokens reads Slack and writes only local credential state.


Typed workflows: Slack in, JSON out

Bind a workflow kind to channels, priority people, retention, and cadence. slack_catch_me_up then reads that scope locally and hands your agent the evidence: which threads went unanswered and for how long, what your priority people said or were pinned on, which conversations actually moved. It does the gathering; your agent writes the summary against the contract below.

There is no server-side model in that path, because there does not need to be one — the client calling this server is already a language model. Hosted adds what genuinely needs infrastructure: running the same catch-up on a schedule while your laptop is shut, on an OAuth token that does not rotate.

npx -y @jtalk22/slack-mcp --apply-template oncall-handoff --channels C012345,C067890
Workflow contracts and shipped templates
Workflow kindContract
incident_room{incident_summary, timeline, open_risks, owner_gaps, next_actions}
exec_brief{summary, decisions, risks, asks, action_items}
support_inbox{open_threads, ack_lag, owner_gaps, escalations, next_actions}
product_launch_watch{launch_signals, feedback_themes, blockers, metrics, next_actions}
custom{summary, highlights, open_questions, next_actions}

Six editable templates ship in the package: oncall-handoff, support-triage, exec-monday, sprint-tracker, customer-feedback, and incident-room.


Where credentials live

Resolution is deterministic; first hit wins:

  1. SLACK_TOKEN + SLACK_COOKIE
  2. token file (chmod 600)
  3. macOS Keychain
  4. Chrome extraction on macOS

Session credentials commonly rotate after one or two weeks. When Slack returns invalid_auth, not_authed, token_expired, token_revoked, account_inactive, or HTTP 401, run npx -y @jtalk22/slack-mcp --setup to recover locally. On macOS, slack_refresh_tokens or --refresh-tokens refreshes without leaving the client; the optional LaunchAgent in docs/SETUP.md keeps long-idle installations healthy.

Storage modes and multi-workspace profiles
ModeBehavior
autoToken file plus Keychain backup
keychain-onlyKeychain only; verified writes and no plaintext credential file
fileOwner-only token file; Keychain is never touched

The selected backend is remembered in non-secret metadata and used by the server, CLI, and optional refresh job. An unrecognized mode fails at startup instead of silently downgrading storage.

{
  "mcpServers": {
    "slack-work": {
      "command": "npx",
      "args": ["-y", "@jtalk22/slack-mcp"],
      "env": { "SLACK_MCP_PROFILE": "work" }
    },
    "slack-personal": {
      "command": "npx",
      "args": ["-y", "@jtalk22/slack-mcp"],
      "env": { "SLACK_MCP_PROFILE": "personal" }
    }
  }
}

Each profile gets its own token file, Keychain entries, metadata, and lock. Add SLACK_MCP_CHROME_PROFILE when the workspaces live in different Chrome profiles.


Free local when you’re driving. Hosted when it must drive itself.

When local control is enough, stop here—everything above is MIT-licensed and runs on your machine. The local product is complete, not a crippled trial: hosted earns the upgrade through continuity, intelligence, and collaboration, not by holding ordinary Slack access hostage. Hosted exists for work that must survive a rotating browser session:

  • permanent OAuth;
  • scheduled catch-up;
  • contract-validated workflow briefs;
  • shared profiles and managed workspace continuity.

Local mode never contacts us; it runs on your machine and talks only to Slack. Hosted never receives a browser cookie; it runs on permanent OAuth, for work that has to survive a rotating session — unattended schedules, Enterprise Grid. Everything above is MIT-licensed and complete on its own.

See live hosted pricing →


Security and provenance

  • Credential files are owner-only; Keychain-only mode keeps plaintext credentials off disk.
  • Configuration fails closed for unknown storage modes and invalid profiles.
  • Writes are atomic and shared credential state is process-locked.
  • The local web server binds to localhost; workspace write tools carry destructive annotations.
  • Every release publishes from CI with npm provenance.

Provenance: don't take my word for it

npm audit signatures

A clean result verifies that the package signatures and attestations trace back through the published release chain. Inspect the package before handing it a live Slack session. Full policy: SECURITY.md.

Slack MCP Server security, license, and quality rating on Glama


Documentation

Setup · API · Architecture · Compatibility · Deployment modes · Recipes · Troubleshooting · Roadmap

Contributing

PRs are welcome. Read CONTRIBUTING.md and run node --check on touched JavaScript before submitting.

License

MIT — see LICENSE.

Disclaimer

Not affiliated with Slack Technologies, Inc. This server uses browser-session credentials. Review your workspace's acceptable-use policy before running it.


Your Slack. Your agent. One command.

npx -y @jtalk22/slack-mcp --setup

If this removes a Slack tab from your day, star the repository. Stars are how the next admin-blocked developer finds the local path.

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
inference shell
inference shell
create and run specialised agents in minutes
build now →
MCP-ready Email SendingMCP-ready Email Sending
MCP-ready Email Sending
Plug Mailtrap into your AI workflow and let it handle the email.
Connect Mailtrap MCP →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Capacitor - Shared memory for your team’s coding agents.
Capacitor - Shared memory for your team’s coding agents.
Make coding agent sessions - Searchable, Shareable, Vendor-neutral & Scored.
Try For Free →
CodeScene MCP ServerCodeScene MCP Server
CodeScene MCP Server
Your agent targets a perfect 10 Code Health score. Deterministic. Every commit.
Try For Free →
Give your AI the whole web as clean markdownGive your AI the whole web as clean markdown
Give your AI the whole web as clean markdown
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
belt - the only tool your agent needs
belt - the only tool your agent needs
belt cli automatically finds the best tools and skills for your agent. image, video, music, tts...
one prompt install →

Configuration

SLACK_TOKENsecret

Slack xoxc- token from browser session

SLACK_COOKIEsecret

Slack xoxd- cookie from browser session

Categories
AI & LLM ToolsCommunication & Messaging
Registryactive
Package@jtalk22/slack-mcp
TransportSTDIO, HTTP
AuthRequired
UpdatedMar 12, 2026
View on GitHub

Related AI & LLM Tools MCP Servers

View all →
vikrantsingh01 avatar
Adaptive Cards Mcp

vikrantsingh01/adaptive-cards-mcp

Generate, validate, and optimize Adaptive Cards for Teams, Outlook, and Copilot.
27
mcparmory avatar
Browserbase

com.mcparmory/browserbase

Create and control browser sessions for web automation, testing, and AI agent tasks
25
mcparmory avatar
E2b

com.mcparmory/e2b

Create and manage secure sandboxes for running AI agent code
25
mcparmory avatar
Ragie

com.mcparmory/ragie

Ingest, manage, and retrieve documents for RAG-powered AI applications
25
kael-bit avatar
Engram

io.github.kael-bit/engram

Hierarchical memory for AI agents. Three-layer (buffer/working/core) with decay and promotion.
25
nirholas avatar
AI Tool Discovery Agent

io.github.nirholas/tool-discovery-mcp

AI agent discovers MCP servers from GitHub npm - analyzes APIs configs
25