MCP server intelligence profile

Slack MCP Server

Gives AI agents full Slack access via session tokens, requiring no app registration, admin approval, or OAuth

Local Onlyjtalk22
Awaiting current scanNpm · 5.0.0

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

1Distribution channel
19Independently observed tools
0Linked remote endpoints
AvailableVersion intelligence

Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.

Install and connect

Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.

Install @jtalk22/slack-mcp from npm

Install exact version 5.0.0. No verified executable entrypoint is available, so use the package documentation to launch it.

npm install --save-exact @jtalk22/slack-mcp@5.0.0

Identity

Canonical slugslack-mcp-server-da1d5f2dDeploymentLocal Only
Canonical packagenpm:@jtalk22/slack-mcpRepositoryjtalk22/slack-mcp-server
First publishedAug 7, 2026Latest releaseAug 7, 2026
Last security verificationClassification confidence90%
PublicationDraftOfficial distributionNot verified

Distributions

ChannelIdentifierCurrent versionVersionsSource
npm@jtalk22/slack-mcp5.0.047Repository

Current release

PackageVersionPublished / observedInventorySecurity scan
npm@jtalk22/slack-mcp5.0.0CurrentSep 5, 202619 toolsPartial · 2 resources · 3 promptsEvidence restricted
Enterprise protection

Continuously monitor this MCP for security risk

Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.

  • Independent exact-version security scans
  • Continuous release and vulnerability monitoring
  • Risk-change alerts with capability context
  • Historical evidence and API exports
Custom pricingContact salesTailored to your organization, integrations, data needs, and support requirements.

Current version evidence

No public current-version evidence is available yet.

Current protocol inventory

2025-06-18Negotiated protocol
slack-mcp-serverServer-reported name
3Capability groups
Aug 25, 2026Observed

Tools 19

ToolCategoryAnnotationsRisk
slack_add_reactionAdd an emoji reaction to a message
Input schema
{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel or DM ID containing the message"
    },
    "timestamp": {
      "type": "string",
      "description": "Message timestamp to react to"
    },
    "reaction": {
      "type": "string",
      "description": "Emoji name without colons (e.g., 'thumbsup', 'eyes', 'white_check_mark')"
    }
  },
  "required": [
    "channel_id",
    "timestamp",
    "reaction"
  ]
}
Annotations
{
  "title": "Add Reaction",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
WritesDestructiveIdempotentOpen world
slack_catch_me_upCatch up on a saved workflow profile. Reads the profile's channels (or everything currently unread if the profile names none), pulls messages since the cadence window or an explicit `since`, expands active threads, and returns structured evidence: which threads are unanswered and for how long, what the profile's priority people said or were pinned on, and which conversations moved most. Runs locally against your own session — no hosted account, no server-side model. The response carries an `output_contract` naming the keys to compose for this workflow_kind; write the summary from the returned `signals` and `conversations`, citing conversation names and timestamps.
Input schema
{
  "type": "object",
  "properties": {
    "profile_name": {
      "type": "string",
      "description": "Name of a workflow profile saved via slack_workflow_save (list them with slack_workflows)"
    },
    "since": {
      "type": "string",
      "description": "Optional ISO 8601 timestamp — only consider messages newer than this. Defaults to the profile's cadence window: 24 hours for on_demand and daily_8am, 7 days for weekly_monday."
    }
  },
  "required": [
    "profile_name"
  ]
}
Annotations
{
  "title": "Catch Me Up",
  "readOnlyHint": true,
  "idempotentHint": false,
  "openWorldHint": false
}
Read onlyNon-idempotentClosed world
slack_conversations_historyGet messages from a channel or DM with user names resolved
Input schema
{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel or DM ID (e.g., D063M4403MW)"
    },
    "limit": {
      "type": "number",
      "description": "Messages to fetch (max 100, default 50)"
    },
    "oldest": {
      "type": "string",
      "description": "Unix timestamp - get messages after this time (boundary timestamp included)"
    },
    "latest": {
      "type": "string",
      "description": "Unix timestamp - get messages before this time (boundary timestamp included)"
    },
    "resolve_users": {
      "type": "boolean",
      "description": "Convert user IDs to names (default true)"
    },
    "include_rich_message_fields": {
      "type": "boolean",
      "description": "Include Slack message attachments, blocks, metadata, files, and reactions when present"
    },
    "include_all_metadata": {
      "type": "boolean",
      "description": "Pass Slack's include_all_metadata option to conversations.history"
    }
  },
  "required": [
    "channel_id"
  ]
}
Annotations
{
  "title": "Conversation History",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_conversations_markMark a conversation as read up to a specific message timestamp
Input schema
{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel or DM ID to mark as read"
    },
    "timestamp": {
      "type": "string",
      "description": "Message timestamp to mark as read up to (all messages at or before this are marked read)"
    }
  },
  "required": [
    "channel_id",
    "timestamp"
  ]
}
Annotations
{
  "title": "Mark as Read",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
WritesDestructiveIdempotentOpen world
slack_conversations_unreadsGet channels and DMs with unread messages, sorted by unread count (highest first)
Input schema
{
  "type": "object",
  "properties": {
    "types": {
      "type": "string",
      "description": "Comma-separated types: im, mpim, public_channel, private_channel (default all)",
      "default": "im,mpim,public_channel,private_channel"
    },
    "limit": {
      "type": "number",
      "description": "Maximum conversations to return (default 50)"
    }
  }
}
Annotations
{
  "title": "Unread Conversations",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_get_full_conversationExport FULL conversation history with all messages, threads, and user names. Can save to file.
Input schema
{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel or DM ID"
    },
    "oldest": {
      "type": "string",
      "description": "Unix timestamp start (e.g., 1733011200 = Dec 1, 2025; boundary timestamp included)"
    },
    "latest": {
      "type": "string",
      "description": "Unix timestamp end (boundary timestamp included)"
    },
    "max_messages": {
      "type": "number",
      "description": "Maximum messages to retrieve (default 2000, max 10000)"
    },
    "include_threads": {
      "type": "boolean",
      "description": "Fetch thread replies (default true)"
    },
    "include_rich_message_fields": {
      "type": "boolean",
      "description": "Include Slack message attachments, blocks, metadata, files, and reactions when present"
    },
    "include_all_metadata": {
      "type": "boolean",
      "description": "Pass Slack's include_all_metadata option to conversations.history and conversations.replies"
    },
    "output_file": {
      "type": "string",
      "description": "Filename to save export (saved to ~/.slack-mcp-exports/)"
    }
  },
  "required": [
    "channel_id"
  ]
}
Annotations
{
  "title": "Full Conversation Export",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_get_threadGet all replies in a message thread
Input schema
{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel or DM ID"
    },
    "thread_ts": {
      "type": "string",
      "description": "Thread parent message timestamp"
    },
    "include_rich_message_fields": {
      "type": "boolean",
      "description": "Include Slack message attachments, blocks, metadata, files, and reactions when present"
    },
    "include_all_metadata": {
      "type": "boolean",
      "description": "Pass Slack's include_all_metadata option to conversations.replies"
    }
  },
  "required": [
    "channel_id",
    "thread_ts"
  ]
}
Annotations
{
  "title": "Get Thread",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_health_checkCheck if Slack tokens are valid and show authentication status
Input schema
{
  "type": "object",
  "properties": {}
}
Annotations
{
  "title": "Health Check",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_list_conversationsList all DMs and channels with user names resolved. Uses cached DMs by default for speed.
Input schema
{
  "type": "object",
  "properties": {
    "types": {
      "type": "string",
      "description": "Comma-separated types: im, mpim, public_channel, private_channel",
      "default": "im,mpim"
    },
    "limit": {
      "type": "number",
      "description": "Maximum results (default 100)"
    },
    "discover_dms": {
      "type": "boolean",
      "description": "If true, actively discover all DMs (slower, may hit rate limits on large workspaces). Default false uses cached DMs."
    }
  }
}
Annotations
{
  "title": "List Conversations",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_list_usersList all users in the workspace
Input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "number",
      "description": "Maximum users to return (default 500, supports pagination)"
    }
  }
}
Annotations
{
  "title": "List Users",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_refresh_tokensForce refresh tokens by extracting from Chrome (requires Slack tab open in Chrome)
Input schema
{
  "type": "object",
  "properties": {}
}
Annotations
{
  "title": "Refresh Tokens",
  "readOnlyHint": false,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
WritesNon-destructiveIdempotentClosed world
slack_remove_reactionRemove an emoji reaction from a message
Input schema
{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel or DM ID containing the message"
    },
    "timestamp": {
      "type": "string",
      "description": "Message timestamp to remove reaction from"
    },
    "reaction": {
      "type": "string",
      "description": "Emoji name without colons (e.g., 'thumbsup', 'eyes')"
    }
  },
  "required": [
    "channel_id",
    "timestamp",
    "reaction"
  ]
}
Annotations
{
  "title": "Remove Reaction",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
WritesDestructiveIdempotentOpen world
slack_search_messagesSearch messages across the Slack workspace
Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query (supports Slack syntax like from:@user, in:#channel)"
    },
    "count": {
      "type": "number",
      "description": "Number of results (max 100, default 20)"
    },
    "include_rich_message_fields": {
      "type": "boolean",
      "description": "Include Slack message attachments, blocks, metadata, files, and reactions when present"
    }
  },
  "required": [
    "query"
  ]
}
Annotations
{
  "title": "Search Messages",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_send_messageSend a message to a channel or DM
Input schema
{
  "type": "object",
  "properties": {
    "channel_id": {
      "type": "string",
      "description": "Channel or DM ID to send to"
    },
    "text": {
      "type": "string",
      "description": "Message text (supports Slack markdown)"
    },
    "thread_ts": {
      "type": "string",
      "description": "Thread timestamp to reply to (optional)"
    }
  },
  "required": [
    "channel_id",
    "text"
  ]
}
Annotations
{
  "title": "Send Message",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": false,
  "openWorldHint": true
}
WritesDestructiveNon-idempotentOpen world
slack_token_statusCheck token health, age, auto-refresh status, and cache stats
Input schema
{
  "type": "object",
  "properties": {}
}
Annotations
{
  "title": "Token Status",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": false
}
Read onlyIdempotentClosed world
slack_users_infoGet detailed information about a Slack user
Input schema
{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "Slack user ID"
    }
  },
  "required": [
    "user_id"
  ]
}
Annotations
{
  "title": "User Info",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_users_searchSearch workspace users by name, display name, or email. Case-insensitive partial match.
Input schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Search term to match against name, display name, real name, or email"
    },
    "limit": {
      "type": "number",
      "description": "Maximum results to return (default 20)"
    }
  },
  "required": [
    "query"
  ]
}
Annotations
{
  "title": "Search Users",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": true
}
Read onlyIdempotentOpen world
slack_workflow_saveSave or update a workflow profile that binds a workflow_kind (support_inbox | incident_room | exec_brief | product_launch_watch | custom) to channels, priority people, retention mode, and summary cadence. Stored locally at ~/.slack-mcp-workflows.json. slack_catch_me_up reads the profile by name and returns evidence shaped by its workflow_kind.
Input schema
{
  "type": "object",
  "properties": {
    "profile_name": {
      "type": "string",
      "description": "Unique name for this workflow profile (e.g. 'morning-exec-brief', 'on-call-rotation')"
    },
    "workflow_kind": {
      "type": "string",
      "enum": [
        "support_inbox",
        "incident_room",
        "exec_brief",
        "product_launch_watch",
        "custom"
      ],
      "description": "Workflow kind. Determines the output_contract keys slack_catch_me_up returns for this profile."
    },
    "channels": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Slack channel IDs to read (e.g. ['C012345', 'C067890'])"
    },
    "priority_people": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Slack user IDs whose messages get extra weight in summaries"
    },
    "retention_mode": {
      "type": "string",
      "enum": [
        "ephemeral",
        "persistent"
      ],
      "description": "Retention preference recorded on the profile. Default ephemeral."
    },
    "summary_cadence": {
      "type": "string",
      "enum": [
        "on_demand",
        "daily_8am",
        "weekly_monday"
      ],
      "description": "How often this profile expects to be caught up on. Sets slack_catch_me_up's default window: 24 hours for on_demand and daily_8am, 7 days for weekly_monday."
    }
  },
  "required": [
    "profile_name",
    "workflow_kind"
  ]
}
Annotations
{
  "title": "Save Workflow Profile",
  "readOnlyHint": false,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
WritesNon-destructiveIdempotentClosed world
slack_workflowsList all saved workflow profiles from ~/.slack-mcp-workflows.json. Optionally filter by workflow_kind. Returns profile_name, channels, priority_people, retention_mode, summary_cadence, structured_keys, created_at, updated_at.
Input schema
{
  "type": "object",
  "properties": {
    "workflow_kind": {
      "type": "string",
      "enum": [
        "support_inbox",
        "incident_room",
        "exec_brief",
        "product_launch_watch",
        "custom"
      ],
      "description": "Optional filter — return only profiles of this workflow_kind"
    }
  }
}
Annotations
{
  "title": "List Workflow Profiles",
  "readOnlyHint": true,
  "idempotentHint": true,
  "openWorldHint": false
}
Read onlyIdempotentClosed world

Resources 2

  • Conversationsslack://conversations/list

    List of available channels and DMs

  • Workspace Infoslack://workspace/info

    Current workspace name, team, and authenticated user

Resource templates 0

  • None observed.

Prompts 3

  • find-messages-fromfind-messages-from

    Find all messages from a specific user

  • search-recentsearch-recent

    Search workspace for messages from the past week

  • summarize-channelsummarize-channel

    Get recent activity from a channel for summarization

Remote endpoints

EndpointTransportAuthenticationHealthObserved
No verified remote endpoint is linked.

Slack MCP Server questions

How do I install Slack MCP Server?

Install the selected package version with: npm install --save-exact @jtalk22/slack-mcp@5.0.0

What tools does Slack MCP Server provide?

Slack MCP Server exposed 19 tools during independent protocol observation, including slack_add_reaction, slack_catch_me_up, slack_conversations_history, slack_conversations_mark, slack_conversations_unreads, slack_get_full_conversation, slack_get_thread, slack_health_check, and others.

Is Slack MCP Server secure?

The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.

Company and product intelligence

These internal links are derived from strong identity fields such as the implementation name, package, repository, vendor, and listing name—not generic description prose.

Associated company landscape

Salesforce intelligence →

Association is based on retained identity fields; it does not by itself prove first-party publication.

Explore related MCP server guides

Curated product and capability guides containing this catalog record.

Slack MCP ServersOfficial vs Community MCP Servers

Let’s talk about MCP security.

Share your details and our security team will contact you.