slack_list_channelsLABSCO SUMMARY
Slack read and written under your own identity, with the reach that implies in both directions.
The difference from a bot integration is the whole point: messages appear from you, and the token sees the public channels you see rather than only those a bot was invited into. That also draws the boundary — the scopes it asks for cover public channels, posting, reacting and reading profiles, so private channels and DMs are outside what it requests. A user OAuth token is a long-lived credential worth treating like a password, which the project says in as many words.
What it is
A Slack server that acts with your own user token: list public channels, read channel history and thread replies, post a message or a threaded reply, react with an emoji, and look up workspace members.
What you get
- slack_list_channels returns the workspace's public channels with their IDs, paginated by cursor
- slack_get_channel_history returns recent messages with their metadata, and slack_get_thread_replies returns a whole thread from its parent timestamp
- slack_post_message posts into a channel, and slack_reply_to_thread replies inside an existing thread rather than starting a new one
- slack_add_reaction adds an emoji reaction to a message identified by its timestamp
- slack_get_users lists workspace members with basic profiles, and slack_get_user_profile returns the full detail for one of them
- Everything is sent as you rather than as a bot, because the credential is a user token
Requirements
A Slack app of your own, created from scratch and installed to the workspace, carrying the user token scopes channels:history, channels:read, chat:write, reactions:write and users:read. The resulting User OAuth Token — the one starting xoxp- — goes into SLACK_TOKEN. An organisation-level token additionally needs the team ID; an ordinary workspace token does not. Built from the repository and launched over stdio.
Setup effort
One command plus a key — npx -y @smithery/cli install @lars-hagen/slack-user-mcp --client claude, then supply credentials
USE CASES
Catching up on a channel you have been away from
Pull the recent messages, then open the threads that actually went somewhere.
Replying without switching applications
Answer inside the existing thread from its parent timestamp, and acknowledge with a reaction where a reply would be noise.
Posting the result of a long run
The message lands in the channel from you, so nobody has to work out which bot said it.
Working out who someone is
List the workspace members, then read the full profile of the one you needed.
Finding the channel ID the other tools need
slack_list_channels returns the public channels with their IDs, paged through with a cursor.
8 tools
Listed in project docs. Your client may show a different list.
slack_post_messageslack_reply_to_threadslack_add_reactionslack_get_channel_historyslack_get_thread_repliesslack_get_usersslack_get_user_profileBEFORE YOU INSTALL
What to know first
Tools you get
8 tools named in the project's documentation.
Requires
- SLACK_TOKEN in your environment
- Node.js and npm to build it, or Docker for the container route
INSTALLATION
Connect your client
Server setup
npx -y @smithery/cli install @lars-hagen/slack-user-mcp --client claudeMCP Clients
Claude Desktop — npm
git clone https://github.com/lars-hagen/slack-user-mcp.git
cd slack-user-mcp
npm install
npm run buildAdd this to your claude_desktop_config.json:
{
"mcpServers": {
"slack": {
"command": "npm",
"args": [
"run",
"--prefix",
"<YOUR_PATH_TO_SLACK_USER_MCP>",
"start"
],
"env": {
"SLACK_TOKEN": "<YOUR_SLACK_TOKEN>"
}
}
}
}<YOUR_PATH_TO_SLACK_USER_MCP> is the full path to the slack-user-mcp folder you cloned, and <YOUR_SLACK_TOKEN> is your User OAuth Token.
Claude Desktop — Docker
git clone https://github.com/lars-hagen/slack-user-mcp.git
cd slack-user-mcp
docker build -t slack-user-mcp .Add this to your claude_desktop_config.json:
{
"mcpServers": {
"slack": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SLACK_TOKEN",
"slack-user-mcp"
],
"env": {
"SLACK_TOKEN": "<YOUR_SLACK_TOKEN>"
}
}
}
}<YOUR_SLACK_TOKEN> is your User OAuth Token. For an organization-level token, also add "-e", "SLACK_TEAM_ID" to the args and SLACK_TEAM_ID to env.