Skip to main content
Glama
sercant

web-slack-mcp

by sercant

web-slack-mcp

An MCP server that reads Slack through the web app, driven by Playwright over your own logged-in browser session.

Built for the case where you're a guest in a workspace and can't install a Slack app or mint API tokens — so instead of an app, it reuses the session in a persistent Chromium profile that you log into once.

Draft-only by design. It reads channels, messages, and threads, and (later) stages replies in the composer. There is no send code path in this server — it never posts a message.

How it works

  • Login is manual and one-time: a visible Chromium window opens, you sign in (SSO / magic link / whatever your workspace uses), and the session is saved to a persistent profile so it survives restarts.

  • Reads go through Slack's own internal JSON API (conversations.history, conversations.replies, conversations.view), replayed from inside the logged-in browser context so the session cookie + boot token authenticate them. This is far more robust than scraping the virtualized React DOM.

  • Navigation uses the UI only to resolve a human channel name to its id (the quick switcher routes to /client/T…/<channel id>, which we read off the URL).

  • Names — including Slack Connect / external members that per-id lookups won't return — are harvested in one conversations.view call per channel.

Related MCP server: Slack MCP Server

Tools

Tool

Description

list_channels

List channels/DMs visible in your sidebar.

read_messages

Read recent messages in a channel/DM (channel, limit).

read_thread

Read a thread by matching text in its parent message.

search_messages

Search messages workspace-wide with Slack search syntax.

Requirements

  • Python 3.13+

  • uv (provides uvx)

Install & run

Run straight from GitHub with uvx — no clone needed:

uvx --from git+https://github.com/sercant/web-slack-mcp web-slack-mcp

On the first launch the server downloads the Chromium build Playwright drives into Playwright's shared cache (~/Library/Caches/ms-playwright on macOS), so it happens once and persists across runs.

Register with Claude Code

claude mcp add web-slack -- \
  uvx --from git+https://github.com/sercant/web-slack-mcp web-slack-mcp

Then reload Claude Code; the tools appear as mcp__web-slack__*. The first time you call a read tool while signed out, the server opens a visible Chromium and waits for you to sign in — no separate step. The session is saved and reused on later runs.

Other MCP clients

Any client that speaks stdio works — point it at the same command:

{
  "mcpServers": {
    "web-slack": {
      "command": "uvx",
      "args": [
        "--from", "git+https://github.com/sercant/web-slack-mcp",
        "web-slack-mcp"
      ]
    }
  }
}

Configuration

All optional, via environment variables:

Variable

Default

Purpose

SLACK_URL

https://app.slack.com/client

Slack web client URL.

SLACK_PROFILE_DIR

.slack-profile

Where the persistent browser profile (your session) lives.

SLACK_HEADLESS

0

1 runs headless. Login needs a visible window, so keep 0 for the initial sign-in.

SLACK_LOGIN_WAIT

180

Seconds a read tool waits for you to finish signing in before giving up.

The profile directory holds your live Slack session — treat it like a credential and keep it out of version control (it's gitignored here).

Local development

git clone https://github.com/sercant/web-slack-mcp
cd web-slack-mcp
uv sync
uv run web-slack-mcp

License

MIT

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

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/sercant/web-slack-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server