MCP Servers

A collection of Model Context Protocol servers, templates, tools and more.

MCP server exposing 193 Slack Web API methods as tools for AI agents

Created 2/7/2026
Updated about 9 hours ago
Repository documentation and setup instructions

Slack MCP

The most complete Slack integration for AI agents. 193 tools covering the entire Slack Web API — messages, channels, files, canvases, lists, search, reactions, and more — all accessible through the Model Context Protocol.

Give your AI assistant full access to Slack. Read unread messages, draft replies, search across your workspace, manage channels, upload files, set reminders — anything you can do in Slack, your agent can do too.

Quickstart

One command. No cloning needed.

Add to your MCP client config (.mcp.json for Claude Code, claude_desktop_config.json for Claude Desktop):

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

That's it. Your agent now has Slack.

What can it do?

Read — Unread messages, channel history, threads, search results, file listings

Write — Send messages, reply to threads, react, pin, bookmark, schedule messages

Manage — Create/archive channels, invite users, set topics, manage user groups

Files — Upload, share, edit, organize across channels

Advanced — Canvases, Lists, Reminders, Do Not Disturb, Calls, Workflows

Beyond the official API

This server also includes 15 undocumented and legacy endpoints — the same internal APIs that Slack's own web and desktop apps use. These require session tokens (xoxc+xoxd) from your browser.

Session endpoints — workspace state that the official API doesn't expose:

| Endpoint | What it provides | |----------|-----------------| | client.boot | Full workspace bootstrap — channels, users, prefs, feature flags. What Slack loads on startup. | | client.counts | Unread counts per channel/DM/thread plus mention counts. Powers the badge numbers in Slack's sidebar. | | client.userBoot | User-specific bootstrap data — lighter version of client.boot scoped to the authenticated user. | | threads.getView | Thread inbox data — the list of threads you see in Slack's "Threads" view with read/unread state. |

Legacy endpoints — functionality missing from or removed from the official API:

| Endpoint | What it provides | |----------|-----------------| | chat.command | Execute slash commands (/shrug, /remind, custom commands) programmatically. | | commands.list | List all available slash commands in the workspace, including custom ones. | | files.edit | Edit a file's title, content, or filetype in-place. No official API equivalent. | | files.share | Share a file to a channel. Simpler than the official message-with-attachment approach. | | bots.list | List all bot users in the workspace. Not available via the official API. | | team.prefs.get | Full team-level preferences — message retention, permissions, allowed domains. | | users.prefs.get | All user preferences — notifications, sidebar, theme, accessibility. Hundreds of prefs. | | users.prefs.set | Set any individual user preference by name/value. | | users.admin.invite | Invite users to the workspace by email (Enterprise Grid only). | | users.admin.setInactive | Deactivate a user account (Enterprise Grid only). | | channels.delete | Dead method — returns unknown_method. Included for completeness. |

193 tools across 35 API families

| Family | Tools | Family | Tools | |--------|-------|--------|-------| | conversations | 28 | files | 16 | | chat | 14 | users | 12 | | slack_lists | 12 | legacy | 11 | | team | 9 | apps | 8 | | usergroups | 7 | workflows | 7 | | canvases | 6 | calls | 6 | | dnd | 5 | reminders | 5 | | bookmarks | 4 | reactions | 4 | | views | 4 | undocumented | 4 | | auth | 3 | assistant | 3 | | oauth | 3 | pins | 3 | | search | 3 | stars | 3 | | bots | 2 | functions | 2 | | openid | 2 | rtm | 2 | | api | 1 | dialog | 1 | | emoji | 1 | entity | 1 | | migration | 1 | tooling | 1 |

Setup

1. Create a Slack App

Use the included manifest.json to create a Slack app with all required scopes pre-configured:

  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. Set your token

The only required token is SLACK_XOXP_TOKEN. Set it in your MCP config's env block (see Quickstart above), or via a .env file if running locally.

For access to undocumented endpoints (unread counts, workspace boot, file editing), you'll also need session tokens from your browser:

| Token | Source | Required | |-------|--------|----------| | SLACK_XOXP_TOKEN | Slack app OAuth | Yes | | SLACK_XOXC_TOKEN | Browser cookies | Optional | | SLACK_XOXD_TOKEN | Browser cookies | Optional |

Install

Via uvx (recommended)

No install step — uvx handles it. See Quickstart.

From git

uv pip install git+https://github.com/karbassi/slack-mcp.git

From a local clone

git clone https://github.com/karbassi/slack-mcp.git
cd slack-mcp
uv sync

Usage

MCP server (uvx)

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

MCP server (local clone)

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

Standalone

slack-mcp

Architecture

Built with FastMCP 3.0 and slack-sdk.

src/slack_mcp/
  server.py       # FastMCP server, tool registration
  client.py       # SlackClient with 4 transport methods
  tools/          # 35 modules, one per API family

The client supports four transport modes to handle the full spectrum of Slack's API surface:

| Method | Encoding | Auth | Use case | |--------|----------|------|----------| | api_call | Form | xoxp | Standard Web API | | api_call_json | JSON | xoxp | Endpoints with nested objects (canvases, lists) | | session_call | JSON | xoxc+xoxd | Undocumented endpoints | | session_call_form | Form | xoxc+xoxd | Legacy undocumented endpoints |

Tests

# Unit tests (mocked, no tokens needed)
uv run pytest tests/

# Integration tests (requires valid tokens in .env)
uv run pytest tests/ -m integration

257 passing, 56 skipped. Skips are endpoints that require bot tokens, specific OAuth scopes, or Enterprise Grid — not bugs.

Requirements

  • Python 3.13+
  • uv
Quick Setup
Installation guide for this server

Install Package (if required)

uvx slack-mcp

Cursor configuration (mcp.json)

{ "mcpServers": { "karbassi-slack-mcp": { "command": "uvx", "args": [ "slack-mcp" ] } } }