slack-mcp

slack-mcp

Provides LLMs full access to Slack: messages, channels, files, canvases, lists, search, reactions, and more via 220 tools and 36 API families.

Category
Visit Server

README

<div align="center">

Slack MCP

Your entire Slack workspace — available to any AI.

Python License

A Model Context Protocol server that gives LLMs full access to Slack.<br> Messages, channels, files, canvases, lists, search, reactions — all of it.

220 tools · 36 API families · Every Slack feature

</div>


Quick Start

1. Create a Slack App

  1. Go to api.slack.com/apps > Create New App > From a manifest
  2. Paste the contents of manifest.json
  3. Install to your workspace
  4. Copy the User OAuth Token (xoxp-...) from OAuth & Permissions

2. Add to your AI client

<details> <summary><strong>Claude Code</strong></summary>

claude mcp add slack -- uvx --from git+https://github.com/karbassi/slack-mcp.git slack-mcp

Then set SLACK_XOXP_TOKEN in your shell environment.

</details>

<details> <summary><strong>Claude Desktop</strong></summary>

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "slack": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/karbassi/slack-mcp.git", "slack-mcp"],
      "env": {
        "SLACK_XOXP_TOKEN": "xoxp-..."
      }
    }
  }
}

</details>

<details> <summary><strong>Cursor</strong></summary>

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "slack": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/karbassi/slack-mcp.git", "slack-mcp"],
      "env": {
        "SLACK_XOXP_TOKEN": "xoxp-..."
      }
    }
  }
}

</details>

<details> <summary><strong>Windsurf</strong></summary>

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "slack": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/karbassi/slack-mcp.git", "slack-mcp"],
      "env": {
        "SLACK_XOXP_TOKEN": "xoxp-..."
      }
    }
  }
}

</details>

<details> <summary><strong>VS Code / GitHub Copilot</strong></summary>

Add to your VS Code settings.json:

{
  "mcp": {
    "servers": {
      "slack": {
        "command": "uvx",
        "args": ["--from", "git+https://github.com/karbassi/slack-mcp.git", "slack-mcp"],
        "env": {
          "SLACK_XOXP_TOKEN": "xoxp-..."
        }
      }
    }
  }
}

</details>

<details> <summary><strong>Local clone</strong></summary>

{
  "mcpServers": {
    "slack": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/slack-mcp", "slack-mcp"]
    }
  }
}

</details>

What Can It Do?

"Catch me up on #engineering from today" "Reply to Sarah's thread saying we'll ship it Monday" "Search for anything about the Q3 roadmap" "Create a channel called #project-atlas and invite the design team"

Domain Tools Highlights
Conversations 28 History, threads, replies, create, archive, invite, mark read
Undocumented 28 Drafts, saved items, emoji management, granular search, sidebar, threads
Files 16 Upload, share, edit, list, remote files
Chat 14 Send, reply, schedule, update, delete, ephemeral
Users 12 Profile, presence, lookup, list
Lists 12 Create, edit items, manage access
Legacy 11 Slash commands, file editing, bot listing
Team 9 Info, preferences, access logs, billing
Apps 8 Manifests, connections, authorizations
Usergroups 7 Create, update, manage members
Workflows 7 Featured workflows, step completion
Canvases 6 Create, edit, sections, access control
Calls 6 Start, end, manage participants
+ 23 more DND, reminders, bookmarks, reactions, pins, stars, views, search, auth, bots, emoji, ...

Plus resolve_names (bulk ID→name resolution) and cache_clear (bust the response cache on demand) utility tools.

Beyond the Official API

39 undocumented and legacy endpoints — the same internal APIs that Slack's own apps use. Requires session tokens (xoxc+xoxd).

<details> <summary><strong>Session endpoints</strong> — workspace state the official API doesn't expose</summary>

Endpoint What it provides
client.boot Full workspace bootstrap — channels, users, prefs, feature flags
client.counts Unread counts per channel/DM/thread plus mention counts
client.userBoot User-specific bootstrap data scoped to the authenticated user
threads.getView Thread inbox — the list of threads with read/unread state
subscriptions.thread.mark Mark individual threads as read or unread
drafts.list List all unsent message drafts
drafts.create Create a message draft with Block Kit text
drafts.update Edit an existing draft
drafts.delete Delete a draft
saved.list List saved-for-later items
saved.add Save a message for later with optional due date
saved.delete Remove a saved-for-later item
emoji.add Add a custom emoji from a URL
emoji.remove Remove a custom emoji
emoji.adminList Emoji with rich metadata — uploader, date, usage stats
search.modules.messages Granular message search
search.modules.files File-specific search
search.modules.channels Server-side channel search by name or topic
search.modules.people Fuzzy people search by name, title, department
search.modules.dms Search within DMs only
conversations.view Channel view with read state and personal config
conversations.listPrefs Per-channel notification and mute preferences
users.channelSections.list Sidebar organization — custom sections, favorites
users.priority.list Contacts ranked by interaction frequency
experiments.getByUser A/B test experiment assignments
api.features Workspace feature flags
aiApps.list AI applications configured in the workspace

</details>

<details> <summary><strong>Legacy endpoints</strong> — functionality missing from the official API</summary>

Endpoint What it provides
chat.command Execute slash commands programmatically
commands.list List all slash commands including custom ones
files.edit Edit a file's title, content, or filetype in-place
files.share Share a file to a channel
bots.list List all bot users in the workspace
team.prefs.get Team-level preferences — retention, permissions, domains
users.prefs.get All user preferences — notifications, sidebar, theme
users.prefs.set Set any individual user preference
users.admin.invite Invite users by email (Enterprise Grid)
users.admin.setInactive Deactivate a user account (Enterprise Grid)
channels.delete Dead method — included for completeness

[!WARNING] Undocumented endpoints can break without notice. They use session tokens (xoxc+xoxd) which expire and must be re-grabbed from browser cookies.

</details>

Authentication

Variable Required Description
SLACK_XOXP_TOKEN Yes User OAuth token from your Slack app
SLACK_XOXC_TOKEN No Browser session token for undocumented endpoints
SLACK_XOXD_TOKEN No Browser session cookie (paired with xoxc)

[!TIP] The xoxp token covers all Slack Web API tools. Utility tools like resolve_names and cache_clear work without additional auth. For undocumented endpoints (unread counts, workspace boot, file editing), you also need xoxc+xoxd — grab them from your browser cookies while logged into slack.com.

Caching

Responses are cached automatically to reduce API calls:

  • Stable data (users, teams, bots, emoji) — 1 hour TTL
  • Dynamic data (channel lists, members, bookmarks) — 5 minute TTL
  • Old threads (conversations_replies with ts > 1 hour old) — 1 hour TTL
  • Bounded history (conversations_history with old date range) — 1 hour TTL
  • Resolved names (user/bot → 1 hour, channel → 5 minutes)

Cache is stored at the platform-native location (~/Library/Caches/slack-mcp on macOS, ~/.cache/slack-mcp on Linux). Set XDG_CACHE_HOME to override.

Use the cache_clear tool to bust the cache when you need fresh data.

Name Resolution

All tool responses automatically resolve user, channel, DM, and bot IDs to display names via a resolved_names field — no extra tool calls needed. Resolved names are disk-cached to avoid redundant API lookups.

Response Compaction

15 high-volume tools automatically strip bloat from Slack API responses — blocks (duplicates text), attachments (link unfurls), thumbnails (22 per file), and metadata noise. Measured reductions:

Endpoint Before After Reduction
conversations.history 465 KB 113 KB 76%
files.list 127 KB 26 KB 80%
conversations.list 59 KB 17 KB 71%
reactions.list 353 KB 167 KB 53%

Compaction is on by default. Pass detailed=True to any compactable tool to get the full Slack API response.

Development

git clone https://github.com/karbassi/slack-mcp.git
cd slack-mcp
uv sync
mise run check                       # test + lint + security scan
mise run test:integration            # requires tokens in .env

[!NOTE] ~68 integration tests are skipped because they require a bot token (xoxb), Slack Connect, interactive triggers (e.g. views.open), or would be destructive (e.g. auth.revoke). Adding bot token support is a future goal.

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured