The scope table is unusually honest: two rows are marked implemented, chat:write and users:read, and the rest of Slack's permission surface is marked not. That makes this a good fit for one job — an agent that needs to announce something into a channel — and the wrong fit if you expect to read history, search, or work threads. The narrow scope is also the security story: a token granted only these two permissions cannot read your conversations.
A small TypeScript connector that lets an MCP client write into your Slack workspace and read the member list.
- Messages posted to a channel by its ID, through the chat:write scope
- The workspace's user list, through the users:read scope
- A scope table in the repository marking exactly which two Slack permissions are implemented and which are not
A Slack app with a bot token, supplied as SLACK_BOT_USER_OAUTH_TOKEN together with SLACK_TEAM_ID. The bot needs chat:write and users:read granted, and the built entry point launched by absolute path from your client config.
One command plus a key — npx -y slack-model-context-protocol-server, then supply credentials
