{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"slack-mcp-server","slug":"slack-mcp-server","name":"Slack MCP Server","type":"mcp","url":"https://github.com/modelcontextprotocol/servers/tree/main/src/slack","page_url":"https://unfragile.ai/slack-mcp-server","categories":["mcp-servers"],"tags":["slack","messaging","official","reference"],"pricing":{"model":"free","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"slack-mcp-server__cap_0","uri":"capability://tool.use.integration.slack.workspace.channel.enumeration.via.mcp.protocol","name":"slack workspace channel enumeration via mcp protocol","description":"Exposes a standardized MCP tool that lists all accessible channels in a connected Slack workspace by querying the Slack Web API's conversations.list endpoint. The server implements the MCP Tools primitive to surface this capability as a callable function with JSON-RPC transport, enabling LLM clients to discover and introspect channel metadata (name, topic, member count, archived status) without direct API knowledge. Uses Slack SDK for TypeScript to handle authentication via bot token and pagination of large channel lists.","intents":["I need my AI agent to discover which Slack channels exist in our workspace before routing messages","I want to list all channels matching certain criteria (archived, public, private) to understand workspace structure","I need to programmatically find a specific channel by name to post updates there"],"best_for":["AI agents and assistants that need workspace awareness before taking Slack actions","Teams building multi-channel notification systems with LLM orchestration","Developers integrating Slack into MCP-based AI workflows"],"limitations":["Pagination is automatic but large workspaces (10k+ channels) may incur multiple API calls with latency","Returns only channels the bot token has permission to view; private channels require explicit membership","No filtering on the server side — clients must filter results themselves","Channel metadata is point-in-time; archived/unarchived status changes require re-querying"],"requires":["Slack workspace with bot user created","Bot token with 'conversations:read' scope","MCP client that supports the Tools primitive","Network connectivity to Slack API (api.slack.com)"],"input_types":["none (tool takes no parameters)"],"output_types":["JSON array of channel objects with id, name, is_member, is_private, is_archived, topic, purpose, created, num_members"],"categories":["tool-use-integration","search-retrieval"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"slack-mcp-server__cap_1","uri":"capability://tool.use.integration.slack.message.history.retrieval.with.thread.context","name":"slack message history retrieval with thread context","description":"Implements an MCP tool that fetches message history from a specified Slack channel using the conversations.history API, with optional thread-aware context retrieval via replies.list. The server accepts channel ID and optional timestamp range parameters, returning paginated message objects including user ID, timestamp, text content, and thread metadata. Handles both flat channel history and nested thread replies, enabling LLM clients to read conversation context before responding or analyzing.","intents":["I need to read recent messages in a channel to understand context before posting a response","I want to fetch all replies in a specific thread to provide comprehensive context to an AI model","I need to retrieve messages from a date range to analyze conversation patterns or extract information"],"best_for":["AI assistants that need to read Slack conversation history before generating responses","Chatbots that require thread context to maintain conversation coherence","Analytics and monitoring agents that analyze Slack communication patterns"],"limitations":["API rate limits apply (typically 1 request per second per workspace); large history requests may require backoff","Message content is limited to what Slack stores; deleted messages are not retrievable","Thread replies require separate API call (replies.list), adding latency for deep thread context","Pagination is limited to 100 messages per request; fetching full channel history requires multiple calls","Bot token must have 'channels:history' scope; private channel history requires 'groups:history' scope"],"requires":["Slack bot token with 'channels:history' and/or 'groups:history' scopes","Valid channel ID (not channel name)","MCP client implementation","Optional: thread timestamp for thread-specific retrieval"],"input_types":["channel_id (string)","limit (integer, optional, default 10)","oldest (float timestamp, optional)","latest (float timestamp, optional)","thread_ts (float timestamp, optional, for thread replies)"],"output_types":["JSON array of message objects with type, user, text, ts, thread_ts, reply_count, reply_users_count, latest_reply"],"categories":["tool-use-integration","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"slack-mcp-server__cap_2","uri":"capability://tool.use.integration.slack.message.posting.with.formatting.and.metadata","name":"slack message posting with formatting and metadata","description":"Exposes an MCP tool that posts messages to a Slack channel using the chat.postMessage API, supporting plain text, markdown, and Slack's Block Kit JSON formatting. The server accepts channel ID, message text, and optional parameters (thread timestamp for replies, metadata for custom fields, reply broadcast flag). Handles message composition, formatting validation, and returns the posted message timestamp for reference or threading.","intents":["I want my AI agent to post a formatted notification or response to a specific Slack channel","I need to reply to a thread with context-aware content generated by an LLM","I want to post rich-formatted messages (buttons, sections, images) from an AI workflow"],"best_for":["AI agents that need to communicate results or alerts back to Slack users","Chatbots that generate responses and post them to channels or threads","Automation workflows that need to notify teams of events or decisions"],"limitations":["Message size is limited to 4000 characters for plain text; Block Kit payloads have separate size limits","Bot token must have 'chat:write' scope; cannot post to private channels without explicit membership","Formatting support depends on Slack client version; some Block Kit features may not render in older clients","Posted messages cannot be edited via this tool (requires separate chat.update API)","Rate limiting applies (typically 1 message per second per workspace)"],"requires":["Slack bot token with 'chat:write' scope","Valid channel ID (not channel name)","Message text content (plain text or Block Kit JSON)","MCP client implementation"],"input_types":["channel (string, channel ID)","text (string, message content)","thread_ts (float timestamp, optional, for thread replies)","reply_broadcast (boolean, optional, to share thread reply in channel)","metadata (object, optional, for custom metadata fields)"],"output_types":["JSON object with ok (boolean), channel (string), ts (string, message timestamp), message (object with full message details)"],"categories":["tool-use-integration","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"slack-mcp-server__cap_3","uri":"capability://tool.use.integration.slack.thread.reply.composition.with.context.awareness","name":"slack thread reply composition with context awareness","description":"Implements an MCP tool that posts replies to Slack threads using chat.postMessage with thread_ts parameter, enabling LLM clients to respond within conversation threads while optionally broadcasting replies to the channel. The server validates thread timestamp, handles reply-specific formatting, and manages the relationship between thread context and channel visibility. Supports both private thread replies and broadcast replies that appear in both thread and channel.","intents":["I want my AI assistant to reply to a specific message in a thread without cluttering the channel","I need to post a response that's visible both in the thread and in the channel (broadcast reply)","I want to maintain conversation coherence by keeping related messages in the same thread"],"best_for":["Conversational AI agents that need to maintain thread-based discussions","Support bots that respond to user questions within existing threads","Multi-turn dialogue systems where context is organized by thread"],"limitations":["Thread timestamp (thread_ts) must be valid and correspond to an existing message; invalid timestamps fail silently","Broadcast replies (reply_broadcast=true) are visible in channel but may create notification fatigue","Thread replies cannot be edited via this tool; requires separate chat.update API","Slack limits thread depth and reply count; very old threads may have retrieval limitations","Rate limiting applies per workspace (typically 1 message per second)"],"requires":["Slack bot token with 'chat:write' scope","Valid channel ID","Valid thread_ts (message timestamp of the thread root)","MCP client implementation"],"input_types":["channel (string, channel ID)","thread_ts (float timestamp, required, identifies the thread)","text (string, reply message content)","reply_broadcast (boolean, optional, default false, to share reply in channel)"],"output_types":["JSON object with ok (boolean), channel (string), ts (string, reply message timestamp), thread_ts (string, parent thread timestamp)"],"categories":["tool-use-integration","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"slack-mcp-server__cap_4","uri":"capability://tool.use.integration.slack.message.reaction.management.add.remove.emoji.reactions","name":"slack message reaction management (add/remove emoji reactions)","description":"Exposes MCP tools for adding and removing emoji reactions to Slack messages using the reactions.add and reactions.remove APIs. The server accepts channel ID, message timestamp, and emoji name, managing the relationship between message identity (channel + timestamp) and reaction state. Supports standard Slack emoji names and custom emoji, with error handling for invalid emoji or permission issues.","intents":["I want my AI agent to acknowledge a message with an emoji reaction (e.g., thumbs up for approval)","I need to remove a reaction that was added in error or is no longer relevant","I want to use reactions as a lightweight feedback mechanism for AI-generated responses"],"best_for":["AI agents that need lightweight feedback mechanisms without posting messages","Chatbots that acknowledge user requests with emoji reactions","Automation workflows that mark messages as processed or reviewed"],"limitations":["Emoji name must be valid Slack emoji (standard or custom workspace emoji); invalid names fail with error","Bot token must have 'reactions:write' scope; cannot add reactions to messages in channels the bot cannot access","Removing a reaction that doesn't exist returns success but has no effect","Rate limiting applies (typically 1 request per second per workspace)","Custom emoji may not be available across all workspaces; emoji name must be workspace-specific"],"requires":["Slack bot token with 'reactions:write' scope","Valid channel ID","Valid message timestamp (ts)","Valid Slack emoji name (without colons, e.g., 'thumbsup' not ':thumbsup:')","MCP client implementation"],"input_types":["channel (string, channel ID)","timestamp (float, message timestamp)","emoji (string, emoji name without colons)"],"output_types":["JSON object with ok (boolean), error (string, optional, if reaction failed)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"slack-mcp-server__cap_5","uri":"capability://tool.use.integration.mcp.protocol.transport.and.tool.schema.exposition","name":"mcp protocol transport and tool schema exposition","description":"Implements the Model Context Protocol server-side transport layer using TypeScript SDK, exposing all Slack capabilities as standardized MCP Tools with JSON-RPC 2.0 communication. The server registers tool handlers, manages request/response serialization, and implements the MCP initialization handshake. Supports stdio and SSE (Server-Sent Events) transport mechanisms, allowing MCP clients (Claude, custom agents) to discover and invoke Slack tools through a unified protocol interface.","intents":["I want to integrate Slack into my MCP-compatible AI client without writing custom API wrappers","I need my AI agent to discover available Slack capabilities at runtime via MCP tool introspection","I want to use the same Slack integration across multiple MCP clients (Claude, custom agents, etc.)"],"best_for":["Developers building MCP-compatible AI agents that need Slack integration","Teams using Claude or other MCP clients that want standardized Slack access","Organizations standardizing on MCP for AI tool integration"],"limitations":["MCP protocol overhead adds ~50-100ms per tool invocation compared to direct API calls","Tool discovery is static at server startup; new capabilities require server restart","Error handling is limited to JSON-RPC error responses; no built-in retry logic","Transport is synchronous; long-running operations (e.g., fetching large message histories) block the connection","No built-in caching or request deduplication; clients must implement their own optimization"],"requires":["Node.js 16+ (TypeScript SDK requirement)","MCP client that supports Tools primitive","Slack bot token (passed to server at startup or via environment variable)","Network connectivity between MCP client and server (stdio or HTTP for SSE)"],"input_types":["JSON-RPC 2.0 requests with tool name and parameters"],"output_types":["JSON-RPC 2.0 responses with tool result or error"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"slack-mcp-server__cap_6","uri":"capability://safety.moderation.slack.authentication.and.token.management.via.mcp.context","name":"slack authentication and token management via mcp context","description":"Manages Slack bot token authentication by accepting the token at server initialization (via environment variable or startup parameter) and using it for all subsequent API calls. The server stores the token securely in memory and passes it to the Slack SDK for each request, handling token validation and API authentication errors. Does not implement token refresh or rotation; assumes long-lived bot tokens.","intents":["I need to securely pass my Slack bot token to the MCP server without exposing it in client code","I want the server to handle authentication so my MCP client doesn't need to know about tokens","I need to validate that the token has required scopes before exposing Slack tools"],"best_for":["Teams deploying MCP servers in controlled environments (internal servers, Docker containers)","Developers who want to separate authentication concerns from client code","Organizations using environment-based secret management (CI/CD, container orchestration)"],"limitations":["Token is stored in server memory; no encryption at rest","No token refresh mechanism; long-lived tokens must be manually rotated","No scope validation at startup; invalid or insufficient scopes only fail when tools are invoked","Token is passed in plaintext to Slack API; relies on HTTPS for transport security","No audit logging of token usage; cannot track which tools accessed the token"],"requires":["Valid Slack bot token with required scopes (conversations:read, channels:history, chat:write, reactions:write)","Environment variable SLACK_BOT_TOKEN or command-line parameter at server startup","Network connectivity to Slack API (api.slack.com) over HTTPS"],"input_types":["none (token is provided at server startup, not per-request)"],"output_types":["none (authentication is implicit in all tool responses)"],"categories":["safety-moderation","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"slack-mcp-server__cap_7","uri":"capability://safety.moderation.slack.api.error.handling.and.resilience.with.mcp.error.responses","name":"slack api error handling and resilience with mcp error responses","description":"Implements error handling for Slack API failures (rate limits, invalid channels, permission errors, network timeouts) by catching exceptions from the Slack SDK and translating them into JSON-RPC error responses. The server returns descriptive error messages to MCP clients, including error codes and context, enabling clients to implement retry logic or graceful degradation. Does not implement automatic retries or exponential backoff.","intents":["I want my MCP client to receive clear error messages when a Slack operation fails","I need to distinguish between recoverable errors (rate limits) and permanent failures (invalid channel)","I want to implement client-side retry logic based on error codes returned by the server"],"best_for":["AI agents that need to handle Slack API failures gracefully","Developers building resilient MCP clients with retry logic","Teams that need visibility into why Slack operations fail"],"limitations":["Error messages are limited to what Slack API returns; some errors lack detailed context","Rate limit errors (429) are not automatically retried; clients must implement backoff","Network timeouts are not distinguished from API errors; clients cannot differentiate transient vs permanent failures","Error response format is JSON-RPC standard; Slack-specific error details are in the message field","No built-in logging or monitoring; errors are only visible to the client"],"requires":["MCP client that can parse JSON-RPC error responses","Slack bot token with appropriate scopes for the operation being attempted"],"input_types":["any tool invocation that may fail"],"output_types":["JSON-RPC error response with code (integer), message (string), data (object with Slack error details)"],"categories":["safety-moderation","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"slack-mcp-server__headline","uri":"capability://tool.use.integration.mcp.server.for.slack.integration","name":"mcp server for slack integration","description":"An official server implementation for integrating Slack workspaces with the Model Context Protocol, allowing for channel management, message posting, and interaction handling.","intents":["best MCP server for Slack","MCP integration for Slack messaging","how to manage Slack channels with MCP","Slack messaging automation with MCP server","MCP server for posting messages in Slack"],"best_for":["developers looking to integrate Slack with MCP"],"limitations":[],"requires":[],"input_types":[],"output_types":[],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":78,"verified":false,"data_access_risk":"high","permissions":["Slack workspace with bot user created","Bot token with 'conversations:read' scope","MCP client that supports the Tools primitive","Network connectivity to Slack API (api.slack.com)","Slack bot token with 'channels:history' and/or 'groups:history' scopes","Valid channel ID (not channel name)","MCP client implementation","Optional: thread timestamp for thread-specific retrieval","Slack bot token with 'chat:write' scope","Message text content (plain text or Block Kit JSON)"],"failure_modes":["Pagination is automatic but large workspaces (10k+ channels) may incur multiple API calls with latency","Returns only channels the bot token has permission to view; private channels require explicit membership","No filtering on the server side — clients must filter results themselves","Channel metadata is point-in-time; archived/unarchived status changes require re-querying","API rate limits apply (typically 1 request per second per workspace); large history requests may require backoff","Message content is limited to what Slack stores; deleted messages are not retrievable","Thread replies require separate API call (replies.list), adding latency for deep thread context","Pagination is limited to 100 messages per request; fetching full channel history requires multiple calls","Bot token must have 'channels:history' scope; private channel history requires 'groups:history' scope","Message size is limited to 4000 characters for plain text; Block Kit payloads have separate size limits","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.7,"quality":0.8500000000000001,"ecosystem":0.52,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:05.296Z","last_scraped_at":null,"last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=slack-mcp-server","compare_url":"https://unfragile.ai/compare?artifact=slack-mcp-server"}},"signature":"h7v1PnHBftm4xHljxheFQ4XrjcEukl5UCGTUq7eQUx/pfxVw8r0K3FNw1Ct4XJcm38RQRR/G4/24lkgK0k2cCg==","signedAt":"2026-06-22T22:46:03.081Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/slack-mcp-server","artifact":"https://unfragile.ai/slack-mcp-server","verify":"https://unfragile.ai/api/v1/verify?slug=slack-mcp-server","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}