slack-mcp
MCP server exposing 193 Slack Web API methods as tools for AI agents
Install / Use
claude mcp add karbassi -- npx -y github:karbassi/slack-mcpIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
CommunicationSupported Platforms
Our assessment of slack-mcp
slack-mcp scores 80/100 on our quality scale, 369th of 397 Communication skills we index.
Its MCP Server is 12 KB long, well organised into 12 sections with 7 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 19 days ago, so slack-mcp is actively maintained.
- Our last check on 2026-10-19 found the source still online.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 87/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful.
AI review by kimi-k2.7-code on 2026-09-24. Automated pattern scan on 2026-09-24. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
slack-mcp compared with similar skills
All 4 of these similar skills score higher than slack-mcp; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| slack-mcp (this skill)by karbassi | 80 | 3 | 19d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 106.2k | 4d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.3k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.7k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 90.3k | today | MCP Server |
Frequently asked questions
- How do I install slack-mcp?
- Run
claude mcp add karbassi -- npx -y github:karbassi/slack-mcp. The install tabs above show the steps for each supported agent. - Which AI agents does slack-mcp work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is slack-mcp safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. An AI review of the same text found nothing harmful. It is MIT-licensed and scores 87/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is slack-mcp still maintained?
- The repository was last updated 19 days ago, so slack-mcp is actively maintained.
Skill content
View source on GitHubSlack MCP
Your entire Slack workspace — available to any AI.
A Model Context Protocol server that gives LLMs full access to Slack.<br> Messages, channels, files, canvases, lists, search, reactions — all of it.
253 tools · 37 API families · Every Slack feature
</div>Quick Start
1. Create a Slack App
- Go to api.slack.com/apps > Create New App > From a manifest
- Paste the contents of
manifest.json - Install to your workspace
- 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.
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 | 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 |
|---|---|
| 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.getView | My threads with unread reply counts — "catch me up on my threads" |
| subscriptions.thread.mark | Mark individual threads as read or unread |
| client.dms | Open DMs and group DMs (ims + mpims) |
| activity.feed | Activity inbox — mentions, reactions, replies, reminders, invites |
| 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.get | Fetch specific saved-for-later items by id |
| saved.add | Save a message for later with optional due date |
| saved.delete | Remove a saved-for-later item |
| lists.getMyItems | Slack List tasks and approvals assigned to me |
| 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 |
| ai.alpha.summarize.unreadsSnapshot | AI summary of unread messages — "summarize what I missed" |
| ai.alpha.digest.list | Slack's AI recaps/digests of activity across channels |
| subscriptions.thread.get | Subscription/read state for a single thread |
| today.items.list | Today view items (suggested to-dos, highlights) |
| connectInvites.list | Pending Slack Connect channel and DM invites |
| conversations.teamConnections | Slack Connect connections for a channel |
| conversations.suggestions | Suggested channels for the user |
| conversations.bulkReacjiTriggers | Per-channel reacji (auto-reaction) triggers |
| lists.templates | Available Slack List templates |
| lists.records.list | Records/items within a given Slack List |
| calendar.getInstalledCalendars | Connected calendars (gcal, ocal) |
| calendar.user.status | The user's current calendar status |
| canvases.getCannedTemplates | Available canvas templates |
| emoji.collections.list | Installed and available emoji packs |
| files.getShares | Where a file is shared (channels, tabs, viewer count) |
| files.recentlyDeleted | Recently deleted files |
| files.favorites.list | Favorited files |
| functions.workflows.list | Workflows and their triggers |
| workflows.triggers.list | Triggers, filterable by app |
| users.profile.getExtras | Profile extras — shared channels, onboarding state |
| users.profile.getSections | Custom profile sections |
| users.customStatus.list | Saved and scheduled custom statuses |
| search.inline | Inline/quick search scoped to a channel or user |
| search.save | Save a search |
| enterpriseSearch.getConnectors | Configured enterprise search connectors |
| 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 |
</details>[!WARNING] 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 |
|---|---|---|
| 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
xoxptoken covers all Slack Web API tools. Utility tools likeresolve_namesandcache_clearwork without additional auth. For undocumented endpoints (unread counts, workspace boot, file editing), you also needxoxc+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 TTL - Bounded history (
conversations_historywith 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
uv run pre-commit install
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
106.2kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
78.3kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.7kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
90.3k🕷️ The BEST Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
