slack-mcp
Provides full access to Slack workspace, including messages, channels, files, canvases, lists, search, reactions, and more via 220 tools across 36 API families.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@slack-mcpshow me unread messages in #general"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Slack MCP
Your entire Slack workspace — available to any AI.
A Model Context Protocol server that gives LLMs full access to Slack. Messages, channels, files, canvases, lists, search, reactions — all of it.
253 tools · 37 API families · Every Slack feature
Quick Start
1. Create a Slack App
Go to api.slack.com/apps > Create New App > From a manifest
Paste the contents of
manifest.jsonInstall to your workspace
Copy the User OAuth Token (
xoxp-...) from OAuth & Permissions
2. Add to your AI client
claude mcp add slack -- uvx --from git+https://github.com/karbassi/slack-mcp.git slack-mcpThen set SLACK_XOXP_TOKEN in your shell environment.
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-..."
}
}
}
}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-..."
}
}
}
}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-..."
}
}
}
}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-..."
}
}
}
}
}{
"mcpServers": {
"slack": {
"type": "stdio",
"command": "uv",
"args": ["run", "--directory", "/path/to/slack-mcp", "slack-mcp"]
}
}
}Related MCP server: Slack MCP Server
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 | 31 | History, threads, replies, create, archive, invite, mark read, team connections, suggestions |
Undocumented | 38 | Drafts, saved items, emoji management, granular search, sidebar, threads, activity inbox, DMs, AI unread summary + digests, Today view, Connect invites |
Files | 19 | Upload, share, edit, list, remote files, shares, recently deleted, favorites |
Chat | 13 | Send, reply, schedule, update, delete, ephemeral, stream |
Users | 15 | Profile, presence, lookup, list, profile extras/sections, custom statuses |
Lists | 15 | Create, edit items, manage access, my assigned items, templates, records |
Legacy | 11 | Slash commands, file editing, bot listing |
Team | 9 | Info, preferences, access logs, billing |
Apps | 9 | Manifests, connections, authorizations, activities |
Workflows | 8 | Featured workflows, step completion, workflow/trigger listing |
Usergroups | 7 | Create, update, manage members |
Canvases | 7 | Create, edit, sections, access control, templates |
Calls | 6 | Start, end, manage participants |
+ 24 more | Calendar, 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
68 undocumented and legacy endpoints — the same internal APIs that Slack's own apps use. Requires session tokens (xoxc+xoxd).
Endpoint | What it provides |
| Full workspace bootstrap — channels, users, prefs, feature flags |
| Unread counts per channel/DM/thread plus mention counts |
| User-specific bootstrap data scoped to the authenticated user |
| Thread inbox — the list of threads with read/unread state |
| My threads with unread reply counts — "catch me up on my threads" |
| Mark individual threads as read or unread |
| Open DMs and group DMs ( |
| Activity inbox — mentions, reactions, replies, reminders, invites |
| List all unsent message drafts |
| Create a message draft with Block Kit text |
| Edit an existing draft |
| Delete a draft |
| List saved-for-later items |
| Fetch specific saved-for-later items by id |
| Save a message for later with optional due date |
| Remove a saved-for-later item |
| Slack List tasks and approvals assigned to me |
| Add a custom emoji from a URL |
| Remove a custom emoji |
| Emoji with rich metadata — uploader, date, usage stats |
| Granular message search |
| File-specific search |
| Server-side channel search by name or topic |
| Fuzzy people search by name, title, department |
| Search within DMs only |
| Channel view with read state and personal config |
| Per-channel notification and mute preferences |
| Sidebar organization — custom sections, favorites |
| Contacts ranked by interaction frequency |
| A/B test experiment assignments |
| Workspace feature flags |
| AI applications configured in the workspace |
| AI summary of unread messages — "summarize what I missed" |
| Slack's AI recaps/digests of activity across channels |
| Subscription/read state for a single thread |
| Today view items (suggested to-dos, highlights) |
| Pending Slack Connect channel and DM invites |
| Slack Connect connections for a channel |
| Suggested channels for the user |
| Per-channel reacji (auto-reaction) triggers |
| Available Slack List templates |
| Records/items within a given Slack List |
| Connected calendars ( |
| The user's current calendar status |
| Available canvas templates |
| Installed and available emoji packs |
| Where a file is shared (channels, tabs, viewer count) |
| Recently deleted files |
| Favorited files |
| Workflows and their triggers |
| Triggers, filterable by app |
| Profile extras — shared channels, onboarding state |
| Custom profile sections |
| Saved and scheduled custom statuses |
| Inline/quick search scoped to a channel or user |
| Save a search |
| Configured enterprise search connectors |
Endpoint | What it provides |
| Execute slash commands programmatically |
| List all slash commands including custom ones |
| Edit a file's title, content, or filetype in-place |
| Share a file to a channel |
| List all bot users in the workspace |
| Team-level preferences — retention, permissions, domains |
| All user preferences — notifications, sidebar, theme |
| Set any individual user preference |
| Invite users by email (Enterprise Grid) |
| Deactivate a user account (Enterprise Grid) |
| Dead method — included for completeness |
Undocumented endpoints can break without notice. They use session tokens (xoxc+xoxd) which expire and must be re-grabbed from browser cookies.
Authentication
Variable | Required | Description |
| Yes | User OAuth token from your Slack app |
| No | Browser session token for undocumented endpoints |
| No | Browser session cookie (paired with |
Thexoxp 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_replieswith ts > 1 hour old) — 1 hour TTLBounded history (
conversations_historywith old date range) — 1 hour TTLResolved 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 |
| 465 KB | 113 KB | 76% |
| 127 KB | 26 KB | 80% |
| 59 KB | 17 KB | 71% |
| 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
uv run pre-commit install # ruff + ty on every commit
mise run check # test + lint + security scan
mise run test:integration # requires tokens in .env~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
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/karbassi/slack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server