CAT
/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

Cross AI Tools

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
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Slack Mcp Server

stevenvo/slack-mcp-server
180 toolsauthSTDIOregistry active
Summary

Connects Claude to your Slack workspace through the Model Context Protocol, giving you programmatic access to messages, threads, and metadata. You can read channel histories with time-based filtering, pull complete conversation threads, search messages, list channels, and fetch user profiles. Works with both user tokens (reads anything you can access) and bot tokens (requires channel invites). Includes seven tools covering everything from read_channel_messages and read_thread_messages to get_user_info and search operations. Useful when you want Claude to analyze team discussions, summarize threads, or pull context from Slack without manual copy-pasting. Available on PyPI as slack-mcp-server-v2 or installable from source.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

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
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 PNG, GIF, and JPEG. Examples: "https://example.com/emoji/partyparrot.gif" "https://cdn.example.com/images/approved_stamp.png"
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 providing this field. Examples: "partyparrot" "approved_stamp" "team_logo_small"
tokenstring
Authentication token used to authorize the request to add a custom emoji to the Slack workspace.
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
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 any leading/trailing whitespace. Examples: "parrot_alias" ":approved_alias:"
tokenstring
Authentication token. Requires the `admin.teams:write` scope.
alias_forstring
The canonical name of the existing custom emoji (e.g., `original_emoji`). Examples: "party_parrot" "approved_stamp"
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
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"
filetypestring
File type (e.g., 'pdf', 'docx', 'png') to help Slack display appropriate icons or previews. Examples: "pdf" "docx" "gdoc" "png" "txt" "gsheet"
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/files/unique-id-123"
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)"
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 from Q1 review: Key discussion points included budget allocation, resource management, and upcoming deadlines."
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
filestring
ID of the file to add a star to. Examples: "F1234567890" "F0987654321"
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"
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.000100"
file_commentstring
ID of the file comment to add a star to. Examples: "Fc1234567890" "Fc0987654321"
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 optionally an `external_id`. For example: `[{"slack_id": "U1H77", "external_id": "ext-id"}]`. Examples: "[{\"slack_id\": \"U1H77\", \"external_id\": \"ext-id\"}]" "[{\"slack_id\": \"U2ABC123\"}]"
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
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 PNG, GIF, and JPEG. Examples: "https://example.com/emoji/partyparrot.gif" "https://cdn.example.com/images/approved_stamp.png"
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 providing this field. Examples: "partyparrot" "approved_stamp" "team_logo_small"
tokenstring
Authentication token used to authorize the request to add a custom emoji to the Slack workspace.
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
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., 'wave::skin-tone-3'). Examples: "thumbsup" "grinning" "robot_face" "wave::skin-tone-3"
channelstring
ID of the channel where the message to add the reaction to was posted. Examples: "C1234567890" "G0987654321"
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: "1234567890.123456" "1609459200.000200"
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
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: "Hello from your friendly bot!" "Reminder: Team meeting at 3 PM today."
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"
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%22section%22%2C%20%22text%22%3A%20%7B%22type%22%3A%20%22mrkdwn%22%2C%20%22text%22%3A%20%22Hello%2C%20world%21%22%7D%7D%5D"
mrkdwnboolean
Disable Slack's markdown for `text` field if `false`. Default `true` (allows *bold*, _italic_, etc.).
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 appearance customization.
channelstring
ID or name of the channel, private group, or IM channel to send the message to. Examples: "C1234567890" "general"
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"
usernamestring
Bot's name in Slack (max 80 chars). Applies if `as_user` is `false`. Examples: "MyBot" "AlertBot"
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"
icon_emojistring
Emoji for bot's icon (e.g., ':robot_face:'). Overrides `icon_url`. Applies if `as_user` is `false`. Examples: ":tada:" ":slack:"
link_namesboolean
Automatically hyperlink channel names (e.g., #channel) and usernames (e.g., @user) in message text. Defaults to `false` for bot messages.
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%20of%20the%20attachment.%22%2C%20%22color%22%3A%20%22%2336a64f%22%2C%20%22pretext%22%3A%20%22Optional%20text%20that%20appears%20above%20the%20attachment%20block%22%2C%20%22author_name%22%3A%20%22Bobby%20Tables%22%2C%20%22title%22%3A%20%22Slack%20API%20Documentation%22%2C%20%22title_link%22%3A%20%22https%3A%2F%2Fapi.slack.com%2F%22%2C%20%22text%22%3A%20%22Optional%20text%20that%20appears%20within%20the%20attachment%22%7D%5D"
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`.
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 (`code`), code blocks (```), links ([text](url)), block quotes (>), lists (- item, 1. item), dividers (--- or ***), context blocks (:::context with images), and section buttons (:::section-button). IMPORTANT: Use \n for line breaks (e.g., 'Line 1\nLine 2'), not actual newlines. USER MENTIONS: To tag users, use their user ID with <@USER_ID> format (e.g., <@U1234567890>), not username. Examples: "# Status Update\n\nSystem is **running smoothly** with *excellent* performance.\n\n```bash\nkubectl get pods\n```\n\n> All services operational ✅" "## Daily Report\n\n- **Deployments**: 5 successful\n- *Issues*: 0 critical\n- ~~Maintenance~~: **Completed**\n\n---\n\n**Next**: Monitor for 24h"
reply_broadcastboolean
If `true` for a threaded reply, also posts to main channel. Defaults to `false`.
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 minutes), or a natural language description (string, e.g., "in 15 minutes," or "every Thursday at 2pm", "daily"). Examples: "1735689600" "900" "in 20 minutes" "every Monday at 10am"
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
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"
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" "project-phoenix-leads"
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."
include_countboolean
Include the User Group's user count in the response. Server defaults to `false` if omitted.
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
titlestring
The title of the canvas to create Examples: "Project Planning" "Team Meeting Notes" "Sprint Retrospective"
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"}
SLACK_CREATE_CHANNELInitiates a public or private channel-based conversation3 params

Initiates a public or private channel-based conversation

Parameters* required
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"
is_privateboolean
Create a private channel instead of a public one Example: true
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
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-campaign-q3" "team-devs-internal"
team_idstring
Workspace (team) ID for channel creation (e.g., T123ABCDEFG). Required if `org_wide` is `false` or not set. Example: "T123ABCDEFG"
org_wideboolean
Set to `true` to make the channel available org-wide. If `false` or not set, `team_id` is required.
is_privateboolean
Set to `true` to make the channel private, or `false` for public.
descriptionstring
Optional description for the channel (e.g., 'Discussion about Q4 marketing strategies').
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
tsstring
Timestamp of the message to customize URL unfurling for. Example: "1234567890.123456"
channelstring
Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. Examples: "C1234567890" "general"
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%22https%3A%2F%2Fexample.com%2Farticle%22%3A%7B%22text%22%3A%22Article%20Preview%22%7D%7D"
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"
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 with MyApp to see rich previews for example.com."
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
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
tsstring
Timestamp of the message to customize URL unfurling for. Example: "1234567890.123456"
channelstring
Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. Examples: "C1234567890" "general"
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%22https%3A%2F%2Fexample.com%2Farticle%22%3A%7B%22text%22%3A%22Article%20Preview%22%7D%7D"
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"
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 with MyApp to see rich previews for example.com."
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
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
idstring
ID of the comment to delete. This can be obtained when the comment is created or by listing file comments. Example: "Fc1234567890"
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"
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` scope). Examples: "true" "false"
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
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"
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 `chat:write:bot` scope.
channelstring
The ID of the channel, private group, or direct message conversation containing the message to be deleted. Examples: "C1234567890" "G0987654321" "D060123ABC"
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
usergroupstring
Unique encoded ID of the User Group to disable. Examples: "S0123ABCDEF" "S0604QSJC"
include_countboolean
If true, include the number of users in the User Group in the response. Examples: "true" "false"
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"
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 section_id), 'insert_at_start' (prepends content to beginning), 'insert_at_end' (appends content to end), 'delete' (deletes specific section by section_id)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_at_end'. Use canvases.sections.lookup method to get section IDs from existing canvas. Examples: "temp:C:VXX8e648e6984e441c6aa8c61173" "section-abc-123"
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":"# New Content\n\nContent here","type":"markdown"}
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
usergroupstring
The unique encoded ID of the User Group to enable. This ID typically starts with 'S'. Example: "S0604QSJC"
include_countboolean
If true, includes the count of users in the User Group in the response. Examples: "true" "false"
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
idstring
Unique identifier of the call to be ended, obtained from the `calls.add` method. Example: "R0123456789"
durationinteger
Duration of the call in seconds. Examples: "600" "3600"
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
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"
cursorstring
Pagination cursor from `next_cursor` of a previous response to fetch subsequent pages. See Slack's pagination documentation for details. Example: "dXNlcjpVMDYxTkZUVDA="
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"
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"
channelstring
The ID of the public channel, private channel, direct message, or multi-person direct message to fetch history from. Examples: "C1234567890" "G0123456789" "D0123456789"
inclusiveboolean
Include messages with `latest` or `oldest` timestamps in the results; applies only when `latest` or `oldest` is specified. Examples: "true" "false"
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 specified team, especially for teams accessible via external shared channels. Examples: "T12345678" "E87654321"
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
filestring
File ID. Use instead of channel/timestamp or file comment ID. Examples: "F1234567890" "F2147483002"
fullboolean
If true, returns the complete list of users for each reaction.
channelstring
Channel ID. Required if `timestamp` is provided and no file or file comment ID is given. Examples: "C1234567890" "C061F7XAZ"
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"
file_commentstring
File comment ID. Use instead of channel/timestamp or file ID. Examples: "Fc1234567890" "Fc789123456"
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
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"
limitinteger
Maximum number of messages to return. Fewer may be returned even if more are available. Example: 100
cursorstring
Pagination cursor from `response_metadata.next_cursor` of a previous response to get subsequent pages. If omitted, fetches the first page. Example: "dXNlcjpVMEc5V0ZYTlo="
lateststring
Latest message timestamp in the time range to include results. Example: "1678886400.000000"
oldeststring
Oldest message timestamp in the time range to include results. Example: "1678836000.000000"
channelstring
ID of the conversation (channel, direct message, etc.) to fetch the thread from. Example: "C0123456789"
inclusiveboolean
Whether to include messages with `latest` or `oldest` timestamps in results. Effective only if `latest` or `oldest` is specified. Example: true
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 specified team, especially for teams accessible via external shared channels. Examples: "T12345678" "E87654321"
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
limitinteger
Maximum number of channels to return (1 to 200). Defaults to 50. Examples: 10 25 100default: 50
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: "public_channel" "private_channel" "public_channel,private_channel"default: public_channel,private_channel
exact_matchboolean
Use exact matching instead of partial matching. Defaults to false. Examples: true falsedefault: false
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" "project"
exclude_archivedboolean
Exclude archived channels from search results. Defaults to true. Examples: true falsedefault: true
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
limitinteger
Maximum number of users to return (1 to 200). Defaults to 50. Examples: 10 25 100default: 50
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
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 exact_match=true, uses Slack's efficient email lookup endpoint. Examples: "john" "john.doe@company.com" "john doe" "smith" "@company.com"
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
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
filestring
Specify a file by providing its ID. Example: "F2147483862"
external_idstring
Creator defined GUID for the file. Example: "123456"
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 authenticated user will be returned. Examples: "U012A3CDE" "W012A3CDE"
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
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"
is_privateboolean
Create a private channel instead of a public one Example: true
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
usersstring
Comma-separated string of valid Slack User IDs to invite. Up to 1000 user IDs can be included. Example: "U1234567890,U2345678901,U3456789012"
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"
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
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"
channel_idstring
The ID of the public or private Slack channel to which users will be invited. Examples: "C1234567890" "C061X2Z7W9S"
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
emailstring
The email address of the person to be invited to the workspace. Example: "new.user@example.com"
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"
real_namestring
The full name of the user being invited. Example: "Jane Doe"
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"
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" "true"
custom_messagestring
Custom message to include in the invitation email. Example: "Welcome to the team! Looking forward to working with you."
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_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). Examples: "false" "true"
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
emailstring
The email address of the person to be invited to the workspace. Example: "new.user@example.com"
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"
real_namestring
The full name of the user being invited. Example: "Jane Doe"
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"
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" "true"
custom_messagestring
Custom message to include in the invitation email. Example: "Welcome to the team! Looking forward to working with you."
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_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). Examples: "false" "true"
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
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 (authenticating user) shares membership. Examples: "U123ABC456" "W012A3BCD"
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 be returned. Examples: "100" "500" "1000"
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 are included. Examples: "public_channel,private_channel" "im,mpim" "public_channel"
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: "dXNlcjpVMDYxREk0Nlc=" "bmV4dF90czoxNTEyMDg1ODYxMDAwNTQz"
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). Examples: "true" "false"
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
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 parameter is omitted. Examples: "public_channel,private_channel" "im,mpim"
cursorstring
Pagination cursor (from a previous response's `next_cursor`) for the next page of results. Omit for the first page. Examples: "dXNlcjpVMDYxTkZUVDI=" "bmV4dF90czoxNTEyMDg1ODYxMDAwNTQ5"
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"
exclude_archivedboolean
Excludes archived channels if true. The API defaults to false (archived channels are included). Examples: true false
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
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 parameter is omitted. Examples: "public_channel,private_channel" "im,mpim"
cursorstring
Pagination cursor (from a previous response's `next_cursor`) for the next page of results. Omit for the first page. Examples: "dXNlcjpVMDYxTkZUVDI=" "bmV4dF90czoxNTEyMDg1ODYxMDAwNTQ5"
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"
exclude_archivedboolean
Excludes archived channels if true. The API defaults to false (archived channels are included). Examples: true false
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
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. Examples: "20" "100" "200"default: 1
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=" "dXNlcjpVMDYxREk0STQ="
include_localeboolean
Include the `locale` field for each user. Defaults to `false`. Examples: "true" "false"
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
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. Examples: "20" "100" "200"default: 1
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=" "dXNlcjpVMDYxREk0STQ="
include_localeboolean
Include the `locale` field for each user. Defaults to `false`. Examples: "true" "false"
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
usergroupstring
The encoded ID of the User Group to list users from. This ID is an alphanumeric string. Examples: "S0604QSJC" "S123ABC456"
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.
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
pageinteger
Page number for pagination (1-based)default: 1
userstring
Optional user ID to filter canvases created by a specific user. Example: "U1234567890"
countinteger
Maximum number of canvases to return per page (1-1000)default: 100
ts_tostring
Filter canvases created before this timestamp (inclusive). Unix timestamp as string. Example: "123456789"
channelstring
Optional channel ID (e.g., 'C1234567890') to filter canvases. Must be a channel ID, not name. Examples: "C1234567890" "C9876543210"
ts_fromstring
Filter canvases created after this timestamp (inclusive). Unix timestamp as string. Example: "123456789"
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
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 (authenticating user) shares membership. Examples: "U123ABC456" "W012A3BCD"
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 be returned. Examples: "100" "500" "1000"
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 are included. Examples: "public_channel,private_channel" "im,mpim" "public_channel"
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: "dXNlcjpVMDYxREk0Nlc=" "bmV4dF90czoxNTEyMDg1ODYxMDAwNTQz"
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). Examples: "true" "false"
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
pagestring
Specifies the page number of the results to retrieve when paginating. Default is 1. Examples: "1" "2"
userstring
Filter files created by a single user. Provide the Slack User ID. Examples: "W1234567890" "U0abcdef0"
countstring
Specifies the number of files to return per page. Default is 100, maximum is 1000. Examples: "100" "50" "1000"
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" "images,pdfs" "all" "spaces,snippets"
channelstring
Filter files appearing in a specific channel, indicated by its Slack Channel ID. Examples: "C1234567890" "G0abcdef0"
ts_frominteger
Filter files created after this Unix timestamp (inclusive). Example: "1678886400"
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
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
limitinteger
The maximum number of items to return. Example: 20
ts_tonumber
Filter files created before this timestamp (inclusive). Example: 123456789.012345
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 collection. See pagination for more detail. Example: "dXNlcjpVMDYxTkZUVDI="
channelstring
Filter files appearing in a specific channel, indicated by its ID. Example: "C1234567890"
ts_fromnumber
Filter files created after 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
limitinteger
Maximum messages per page (1-1000). Defaults to 100. Examples: "100" "50"
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"
oldeststring
Earliest UNIX timestamp (inclusive) for messages. Defaults to 0 if omitted. Examples: "1678800000.000000" "1678880000.000000"
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"
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
limitinteger
Maximum messages per page (1-1000). Defaults to 100. Examples: "100" "50"
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"
oldeststring
Earliest UNIX timestamp (inclusive) for messages. Defaults to 0 if omitted. Examples: "1678800000.000000" "1678880000.000000"
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"
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
limitinteger
The maximum number of items to return. Example: 20
ts_tonumber
Filter files created before this timestamp (inclusive). Example: 123456789.012345
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 collection. See pagination for more detail. Example: "dXNlcjpVMDYxTkZUVDI="
channelstring
Filter files appearing in a specific channel, indicated by its ID. Example: "C1234567890"
ts_fromnumber
Filter files created after 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
pagevalue
Page number of results to return. Example: 2
countvalue
Number of items to return per page. Example: 20
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
cursorstring
Parameter for pagination. Set cursor to the next_cursor attribute returned by the previous request's response_metadata. Example: "dXNlcjpVMDYxTkZUVDI="
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
pagevalue
Page number of results to return. Example: 2
countvalue
Number of items to return per page. Example: 20
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
cursorstring
Parameter for pagination. Set cursor to the next_cursor attribute returned by the previous request's response_metadata. Example: "dXNlcjpVMDYxTkZUVDI="
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_usersboolean
Include the list of user IDs for each user group. Defaults to false. Examples: "true" "false"
include_disabledboolean
Include disabled user groups in the results. 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
fullboolean
If true, return the complete reaction list, which may include reactions to deleted items.
pageinteger
Page number of results to return. Example: "1"
userstring
Reactions made by this user. Defaults to the authed user. Example: "U012A3CDEFG"
countinteger
Number of items to return per page. Example: "20"
limitinteger
Maximum number of items to return; fewer items may be returned. Use with cursor-based pagination. Example: "100"
cursorstring
Pagination cursor. Set to `next_cursor` from a previous response's `response_metadata`. See Slack API pagination documentation for details. Example: "dXNlcjpVMDYxTkZ0NUI="

Slack MCP Server

PyPI Python Version License: MIT

A Model Context Protocol (MCP) server that provides programmatic access to Slack conversations, threads, and workspace information. Designed for AI assistants like Claude to interact with your Slack workspace through a standardized interface.

What is MCP?

The Model Context Protocol is an open standard that enables AI assistants to securely access external data sources and tools. This server implements MCP to give Claude direct access to your Slack workspace.

Features

📨 Message Operations

  • Read Channel Messages: Fetch recent messages from any channel with flexible time-based filtering
  • Read Thread Messages: Access complete conversation threads including all replies
  • Get Message Permalinks: Generate permanent, shareable links to specific messages

🔍 Discovery & Search

  • List Your Channels: Enumerate all channels you're a member of (public, private, DMs, group DMs)
  • Search Conversations: Find messages where you're mentioned or involved using Slack's search

📊 Metadata & Context

  • Get Channel Info: View channel details, topics, purposes, member counts, and settings
  • Get User Info: Look up user profiles, emails, titles, timezones, and status information

Quick Start

Option 1: Install from PyPI (Recommended)

The easiest way to use this MCP server is to install it directly from PyPI:

# Install via pip
pip install slack-mcp-server-v2

# Or install via uvx (recommended for MCP servers)
uvx slack-mcp-server-v2

Option 2: Install from Source

# Clone the repository
git clone https://github.com/stevenvo/slack-mcp-server.git
cd slack-mcp-server

# Install dependencies
pip install -r requirements.txt

After installation, you'll need to set up authentication (see below).

Authentication

Option 1: User Token (Recommended)

A User Token uses your personal Slack permissions and can access all channels you're a member of.

  1. Go to https://api.slack.com/apps
  2. Create a new app (or use existing)
  3. Navigate to "OAuth & Permissions"
  4. Add the following User Token Scopes:
    • channels:history - View messages in public channels
    • channels:read - View basic channel info
    • groups:history - View messages in private channels
    • groups:read - View basic private channel info
    • im:history - View messages in direct messages
    • im:read - View basic DM info
    • mpim:history - View messages in group DMs
    • mpim:read - View basic group DM info
    • users:read - View user information
    • search:read - Search messages
  5. Install the app to your workspace
  6. Copy the "User OAuth Token" (starts with xoxp-)

Option 2: Bot Token

A Bot Token is more limited but easier to set up for team-wide access.

  1. Follow steps 1-2 above
  2. Add Bot Token Scopes instead (same list but in bot section)
  3. Install the app
  4. Copy the "Bot User OAuth Token" (starts with xoxb-)
  5. Invite the bot to channels you want to read: /invite @YourBotName

Configure Environment

Create a .env file:

cp .env.example .env

Edit .env and add your token:

# Use one of these:
SLACK_USER_TOKEN=xoxp-your-user-token-here
# OR
SLACK_BOT_TOKEN=xoxb-your-bot-token-here

Configuration for Claude Code

Add this server to Claude Code by editing your ~/.claude.json file:

Using PyPI Package (Recommended)

{
  "mcpServers": {
    "slack": {
      "command": "uvx",
      "args": ["slack-mcp-server-v2"],
      "env": {
        "SLACK_USER_TOKEN": "xoxp-your-user-token-here",
        "SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
      }
    }
  }
}

Using Local Installation

If you installed from source:

{
  "mcpServers": {
    "slack": {
      "command": "python",
      "args": ["/path/to/slack-mcp-server/server.py"],
      "env": {
        "SLACK_USER_TOKEN": "xoxp-your-user-token-here",
        "SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
      }
    }
  }
}

Using Bot Token

If you prefer to use a bot token instead of a user token:

{
  "mcpServers": {
    "slack": {
      "command": "uvx",
      "args": ["slack-mcp-server-v2"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token-here",
        "SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
      }
    }
  }
}

Note: Remember to invite your bot to channels: /invite @YourBotName

Verify Installation

Restart Claude Code and verify the server is running:

claude mcp list

You should see slack in the list of active MCP servers.

Available Tools

This server provides 7 MCP tools for interacting with Slack:

📬 read_channel_messages

Retrieve recent messages from any Slack channel with flexible time filtering.

Parameters:

NameTypeRequiredDefaultDescription
channel_idstring✅-Slack channel ID (e.g., C1234567890)
lookback_hoursnumber❌24Hours to look back from now
limitnumber❌100Max messages to retrieve (max: 1000)

Natural Language Examples:

  • "Show me messages from the #general channel in the last 24 hours"
  • "Read the last 48 hours of messages from channel C1234567890"
  • "Get the most recent 50 messages from C070PDRHQS1"

Returns: Formatted messages with timestamps, user mentions, thread indicators, reactions, and permalinks.


💬 read_thread_messages

Read all messages in a conversation thread, including the parent message and all replies.

Parameters:

NameTypeRequiredDescription
channel_idstring✅Channel ID where the thread exists
thread_tsstring✅Thread timestamp (the ts field of the parent message)

Natural Language Examples:

  • "Read the full thread with timestamp 1699564800.123456 in channel C1234567890"
  • "Show me all replies to message ts 1699564800.123456"

Returns: Complete thread with parent message and all replies, formatted with timestamps and reactions.


📋 get_channel_info

Get detailed metadata about a Slack channel.

Parameters:

NameTypeRequiredDescription
channel_idstring✅Slack channel ID

Natural Language Examples:

  • "Get info about channel C1234567890"
  • "Show me details for the #engineering channel"

Returns: Channel name, ID, creation date, member count, privacy status, topic, and purpose.


👤 get_user_info

Look up detailed profile information for any Slack user.

Parameters:

NameTypeRequiredDescription
user_idstring✅Slack user ID (e.g., U1234567)

Natural Language Examples:

  • "Get info about user U1234567"
  • "Show me details for @john.doe"

Returns: User's real name, display name, email, title, status, timezone, and admin/bot flags.


📑 list_my_channels

List all channels you're a member of, with support for different channel types.

Parameters:

NameTypeRequiredDefaultDescription
typesstring❌public_channel,private_channelComma-separated channel types

Supported Types:

  • public_channel - Public channels
  • private_channel - Private channels
  • mpim - Group direct messages
  • im - Direct messages

Natural Language Examples:

  • "List all my channels"
  • "Show me all private channels I'm in"
  • "List all my DMs"

Returns: Channel names, IDs, member counts, and privacy indicators.


🔍 search_my_conversations

Search for messages across all conversations where you're mentioned or involved.

Parameters:

NameTypeRequiredDefaultDescription
querystring✅-Search terms
countnumber❌20Number of results (max: 100)

Natural Language Examples:

  • "Search my conversations for 'deployment'"
  • "Find messages mentioning 'bug fix' in the last week"
  • "Search for messages about 'Q4 planning'"

Returns: Matching messages with channel names, user info, timestamps, and permalinks.


🔗 get_message_permalink

Generate a permanent, shareable link to a specific Slack message.

Parameters:

NameTypeRequiredDescription
channel_idstring✅Channel ID
message_tsstring✅Message timestamp

Natural Language Examples:

  • "Get permalink for message 1699564800.123456 in channel C1234567890"
  • "Generate a link to this message"

Returns: Permanent URL that works even if the workspace's URL changes.

Usage Examples

Once configured in Claude Code, you can interact with your Slack workspace using natural language. Here are some example queries:

Reading Messages

👤 "Show me the latest messages from #engineering"
🤖 [Claude fetches and displays recent messages with timestamps, users, and links]

👤 "What were the last 100 messages in the #product-updates channel from the past week?"
🤖 [Claude retrieves messages from the last 168 hours with limit of 100]

Following Threads

👤 "Read the full thread that starts at timestamp 1699564800.123456 in channel C1234567890"
🤖 [Claude displays the entire conversation thread with all replies]

Discovery & Search

👤 "List all channels I'm a member of"
🤖 [Claude shows all your public and private channels with member counts]

👤 "Search my Slack conversations for 'quarterly review'"
🤖 [Claude searches across all your messages and shows matches with context]

👤 "Find mentions of 'production deployment' in my conversations"
🤖 [Claude uses Slack search to find relevant messages]

Getting Context

👤 "Get info about channel C1234567890"
🤖 [Claude shows channel name, topic, member count, etc.]

👤 "Who is user U1234567?"
🤖 [Claude displays user profile with email, title, timezone]

👤 "Get me a permanent link to message 1699564800.123456 in #general"
🤖 [Claude generates a shareable permalink]

Practical Workflows

Catch up on a project:

👤 "Show me all messages from #project-alpha in the last 3 days"

Find that important decision:

👤 "Search for messages about 'API migration decision'"

Get onboarding context:

👤 "List all channels I'm in and show me the purpose of each"

Finding Channel IDs

Method 1: From Slack URL

When you're in a channel, the URL looks like:

https://your-workspace.slack.com/archives/C1234567890/p1234567890

The part after /archives/ is the channel ID: C1234567890

Method 2: Using the MCP Server

Ask Claude:

List all my channels

Method 3: Right-click in Slack

  1. Right-click on the channel name
  2. Click "Copy link"
  3. Extract the channel ID from the URL

Requirements

  • Python: 3.10 or higher
  • Slack Workspace: Admin access to create and configure a Slack app
  • Claude Code: Latest version with MCP support
  • Operating System: macOS, Linux, or Windows with WSL

Troubleshooting

"Missing required scopes" Error

Your Slack app needs the proper OAuth scopes configured.

Solution:

  1. Go to https://api.slack.com/apps and select your app
  2. Navigate to "OAuth & Permissions"
  3. Ensure you've added all required scopes listed in the Authentication section
  4. Reinstall the app to your workspace
  5. Copy the new token

"Channel not found" Error

For Bot Tokens:

# Invite the bot to the channel first
/invite @YourBotName

For User Tokens:

  • Verify you're a member of the channel
  • Check the channel ID is correct (see "Finding Channel IDs" section)

"Not authenticated" Error

Check your configuration:

# Verify token is set correctly (check ~/.claude.json)
cat ~/.claude.json | grep -A 5 "slack"

# Ensure no extra whitespace
echo "$SLACK_USER_TOKEN" | wc -c

Common issues:

  • Token has expired or been revoked
  • Extra spaces or newlines in the token string
  • Wrong token type (user vs bot)
  • Token not properly quoted in JSON

MCP Server Not Running

Verify server is loaded:

# List all MCP servers
claude mcp list

# Check if slack server is running
claude mcp list | grep slack

Check logs for errors:

# View recent MCP server logs
tail -f ~/.claude/debug/*.log

# Filter for slack-related errors
tail -f ~/.claude/debug/*.log | grep -i slack

Common solutions:

  1. Restart Claude Code completely
  2. Check ~/.claude.json syntax is valid JSON
  3. Verify Python version: python --version (must be 3.10+)
  4. Test the server manually: python server.py (if installed from source)

SSL Certificate Errors

If you're behind a corporate proxy (like Zscaler):

# Set SSL certificate environment variable
export SSL_CERT_FILE=/path/to/your/ca-bundle.pem
export REQUESTS_CA_BUNDLE=/path/to/your/ca-bundle.pem

# Then reinstall
pip install slack-mcp-server-v2

Rate Limiting

Slack API has rate limits. If you hit them:

  • Reduce the limit parameter in read_channel_messages
  • Increase lookback_hours to fetch fewer messages
  • Wait a few minutes before retrying

Rate limit indicators:

Error: ratelimited

Solution: The server will automatically handle rate limits, but you may need to wait.

Security & Privacy

Token Security

  • Never commit tokens to version control - The .env file is gitignored by default
  • Revoke compromised tokens immediately at https://api.slack.com/apps
  • Use environment variables in production, never hardcode tokens
  • Rotate tokens periodically as part of security best practices

Data Access

User Tokens:

  • Have access to everything you can see in Slack
  • Use your personal permissions
  • See all channels you're a member of
  • More convenient for personal use

Bot Tokens:

  • Limited to channels where the bot is invited
  • Separate from personal identity
  • Better for team/shared setups
  • More granular control

Corporate Environments

If you're using this in a corporate environment:

  • Check with your IT/Security team before creating Slack apps
  • Be aware of data retention and compliance policies
  • Consider using bot tokens for audit trails
  • SSL certificate configuration may be required (see Troubleshooting)

Limitations

  • Read-only: This server only reads data, it cannot post messages or modify content
  • Rate limits: Subject to Slack's API rate limits (Tier 3: ~50 requests per minute)
  • Token scope: Can only access channels/conversations the token has permission to see
  • Message history: Limited to Slack workspace's message retention policy

Contributing

Contributions are welcome! Here's how you can help:

Reporting Issues

Found a bug or have a feature request?

  1. Check existing issues at https://github.com/stevenvo/slack-mcp-server/issues
  2. Create a new issue with:
    • Clear description of the problem/feature
    • Steps to reproduce (for bugs)
    • Expected vs actual behavior
    • Your environment (Python version, OS, Claude Code version)

Pull Requests

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes
  4. Test thoroughly
  5. Commit with clear messages: git commit -m "Add amazing feature"
  6. Push to your fork: git push origin feature/amazing-feature
  7. Open a Pull Request

Development Setup

# Clone your fork
git clone https://github.com/YOUR_USERNAME/slack-mcp-server.git
cd slack-mcp-server

# Install in development mode
pip install -e .

# Make changes and test
python server.py

Changelog

v0.1.0 (2025-01-06)

  • Initial release
  • 7 core tools for reading Slack conversations
  • Support for user and bot tokens
  • Published to PyPI and MCP registry
  • Comprehensive documentation

Roadmap

Potential future enhancements:

  • Support for Slack Enterprise Grid
  • Message filtering by user or reactions
  • Export conversations to different formats
  • Support for Slack Connect channels
  • Caching to reduce API calls
  • Webhook support for real-time updates

Suggestions welcome in GitHub Issues!

Related Projects

  • Model Context Protocol - The MCP specification
  • MCP Registry - Browse more MCP servers
  • Slack SDK for Python - The underlying library
  • Claude Code - AI assistant with MCP support

Support

  • Documentation: You're reading it!
  • Issues: https://github.com/stevenvo/slack-mcp-server/issues
  • Discussions: https://github.com/stevenvo/slack-mcp-server/discussions
  • Slack API Docs: https://api.slack.com/docs

License

MIT License - see LICENSE file for details.

Copyright (c) 2025 Steven Vo


Made with ❤️ for the MCP community

If you find this useful, please ⭐ star the repository on GitHub!

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

SLACK_USER_TOKENsecret

Slack User OAuth Token (starts with xoxp-). Get from https://api.slack.com/apps

SLACK_BOT_TOKENsecret

Slack Bot User OAuth Token (starts with xoxb-). Alternative to user token.

SLACK_WORKSPACE_URL*

Your Slack workspace URL (e.g., https://your-company.slack.com). Required for generating message links.

Categories
Communication & MessagingSearch & Web Crawling
Registryactive
Packageslack-mcp-server-v2
TransportSTDIO
AuthRequired
UpdatedNov 7, 2025
View on GitHub

Related Communication & Messaging MCP Servers

View all →
Microsoft 365 Teams

io.github.mindstone/mcp-server-microsoft-teams

Microsoft 365 Teams via Graph: list chats, read/send messages, list teams/channels, presence.
8
Outlook Email

com.mintmcp/outlook-email

A MCP server for Outlook email that lets you search, read, and draft emails and replies.
8
Resend Email MCP

helbertparanhos/resend-email-mcp

Complete Resend email MCP: full API coverage + debug layer (deliverability, DNS, bounces).
Email Mcp

marlinjai/email-mcp

Unified email MCP server for Gmail, Outlook, iCloud, and IMAP with batch operations
13
Email (IMAP/SMTP)

io.github.mindstone/mcp-server-email-imap

Email IMAP/SMTP MCP server: iCloud, Gmail, Yahoo, Outlook, and custom IMAP providers
8
HTML Email Playbook

io.github.osamahassouna/email-playbook-mcp

Teaches AI to write HTML email that renders in Outlook, Gmail, and Apple Mail. 19 rules, 6 comps.