web-slack-mcp
web-slack-mcp is a read-only MCP server that lets you interact with Slack through a persistent browser session (no API tokens required), making it ideal for guest workspace users where installing a Slack app or minting API tokens isn't possible. It cannot send or post messages.
Check login status (
check_login): Verify whether your persistent browser session is currently logged into Slack.Log in manually (
login): Open a visible Chromium browser window to sign into Slack via SSO, magic link, or other methods; the session is saved for future use.List channels and DMs (
list_channels): Retrieve the channels and direct messages visible in your Slack sidebar.Read recent messages (
read_messages): Fetch the most recent messages from a specified channel or DM (by name or partial name), returned oldest-first with timestamps and author names.Read a thread (
read_thread): Find a message in a channel by matching text, then retrieve its full thread (parent message + replies).Search messages (
search_messages): Search workspace-wide using Slack syntax.
Provides tools to read channels, messages, and threads from Slack via the web app, using a persistent browser session.
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., "@web-slack-mcpread the last 10 messages in #design"
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.
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.viewcall per channel.
Related MCP server: Slack MCP Server
Tools
Tool | Description |
| List channels/DMs visible in your sidebar. |
| Read recent messages in a channel/DM ( |
| Read a thread by matching text in its parent message. |
| Search messages workspace-wide with Slack search syntax. |
Requirements
Python 3.13+
uv(providesuvx)
Install & run
Run straight from GitHub with uvx — no clone needed:
uvx --from git+https://github.com/sercant/web-slack-mcp web-slack-mcpOn 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-mcpThen 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 web client URL. |
|
| Where the persistent browser profile (your session) lives. |
|
|
|
|
| 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-mcpLicense
MIT
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/sercant/web-slack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server