← Discover MCPs and Agents
s
MCPAI & MLGitHub

slack-mcp-server

A Model Context Protocol Server for Interacting with Slack

Links

README

From the repo.

Slack Model Context Protocol Server

This is a connector to allow Claude Desktop (or any MCP client) to interact with your Slack workspace to post messages and query a list of all users.

Local Development

In order to run this client locally, add the following configuration to your Claude Desktop MCP Server config file:

 {
  "mcpServers": {
    "mcp-slack-local": {
      "command": "node",
      "args": ["/path/to/project/dist/index.js"], <---- replace this with your project path
      "env": {
        "SLACK_BOT_USER_OAUTH_TOKEN": "test-bot-token", 
        "SLACK_TEAM_ID": "test-team-id"
      }
    },
  }
}

After this, you should be able to test this implementation in your Claude Desktop App using example prompts like:

  • "Can you list all users of my Slack team?"
  • "Can you send a welcome message to my Slack Channel with the ID <channel id>?"

Running the server locally:

node dist/index.js

With the build in another terminal

npm run watch

Slack Permission Scopes

The following permissions are already implemented:

PermissionDescriptionImplemented
app_configurations:readRead app configuration info via App Manifest APIs❌
app_configurations:writeWrite app configuration info and create apps via App Manifest APIs❌
app_mentions:readView messages that directly mention @your_slack_app in conversations that the app is in❌
assistant:writeAllow your slack app to act as an AI Assistant❌
bookmarks:readList bookmarks❌
bookmarks:writeCreate, edit, and remove bookmarks❌
calls:readView information about ongoing and past calls❌
calls:writeStart and manage calls in a workspace❌
canvases:readyour slack app will be able to access contents of canvases created inside Slack.❌
canvases:writeyour slack app will be able to create, edit and remove canvases.❌
channels:historyView messages and other content in public channels that your slack app has been added to❌
channels:joinJoin public channels in a workspace❌
channels:manageManage public channels that your slack app has been added to and create new ones❌
channels:readView basic information about public channels in a workspace❌
channels:write.invitesInvite members to public channels❌
channels:write.topicSet the description of public channels❌
chat:writePost messages in approved channels & conversations✅
chat:write.customizeSend messages as @your_slack_app with a customized username and avatar❌
chat:write.publicSend messages to channels @your_slack_app isn't a member of❌
commandsAdd shortcuts and/or slash commands that people can use❌
conversations.connect:manageAllows your slack app to manage Slack Connect channels❌
conversations.connect:readReceive Slack Connect invite events sent to the channels your slack app is in❌
conversations.connect:writeCreate Slack Connect invitations for channels that your slack app has been added to, and accept invitations sent to your slack app❌
datastore:readView and see data from Slack App Datastore❌
datastore:writeWrite data to Slack App Datastore❌
dnd:readView Do Not Disturb settings for people in a workspace❌
emoji:readView custom emoji in a workspace❌
files:readView files shared in channels and conversations that your slack app has been added to❌
files:writeUpload, edit, and delete files as your slack app❌
groups:historyView messages and other content in private channels that your slack app has been added to❌
groups:readView basic information about private channels that your slack app has been added to❌
groups:writeManage private channels that your slack app has been added to and create new ones❌
groups:write.invitesInvite members to private channels❌
groups:write.topicSet the description of private channels❌
im:historyView messages and other content in direct messages that your slack app has been added to❌
im:readView basic information about direct messages that your slack app has been added to❌
im:writeStart direct messages with people❌
im:write.topicSet the description in direct messages❌
incoming-webhookCreate one-way webhooks to post messages to a specific channel❌
links.embed:writeEmbed video player URLs in messages and app surfaces❌
links:readView URLs in messages❌
links:writeShow previews of URLs in messages❌
metadata.message:readAllows your slack app to read message metadata in channels that your slack app has been added to❌
mpim:historyView messages and other content in group direct messages that your slack app has been added to❌
mpim:readView basic information about group direct messages that your slack app has been added to❌
mpim:writeStart group direct messages with people❌
mpim:write.topicSet the description in group direct messages❌
noneExecute methods without needing a scope❌
pins:readView pinned content in channels and conversations that your slack app has been added to❌
pins:writeAdd and remove pinned messages and files❌
reactions:readView emoji reactions and their associated content in channels and conversations that your slack app has been added to❌
reactions:writeAdd and edit emoji reactions❌
reminders:readView reminders created by your slack app❌
reminders:writeAdd, remove, or mark reminders as complete❌
remote_files:readView remote files added by the app in a workspace❌
remote_files:shareShare remote files on a user's behalf❌
remote_files:writeAdd, edit, and delete remote files on a user's behalf❌
search:read.filesSearch a workspace's content in files❌
search:read.imSearch a workspace's content in direct messages❌
search:read.mpimSearch a workspace's content in group direct messages❌
search:read.privateSearch a workspace's content in private channels❌
search:read.publicSearch a workspace's content in public channels❌
team.billing:readAllows your slack app to read the billing plan for workspaces your slack app has been installed to❌
team.preferences:readAllows your slack app to read the preferences for workspaces your slack app has been installed to❌
team:readView the name, email domain, and icon for workspaces your slack app is connected to❌
tokens.basicExecute methods without needing a scope❌
triggers:readRead new Platform triggers❌
triggers:writeCreate new Platform triggers❌
usergroups:readView user groups in a workspace❌
usergroups:writeCreate and manage user groups❌
users.profile:readView profile details about people in a workspace❌
users:readView people in a workspace✅
users:read.emailView email addresses of people in a workspace❌
users:writeSet presence for your slack app❌
workflow.steps:executeAdd steps that people can use in Workflow Builder❌
workflows.templates:readRead a workflow template❌
workflows.templates:writeWrite a workflow template❌

Contact

If you have questions, feel free to contact us via AVIMBU.

Collected info

  • ★ 25 stars
  • ⎇ 9 forks
  • Language: TypeScript
  • Source updated: 3/1/2026

Config for your environment

Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.

Tool

OS

Config file: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-server": {
      "url": "{MCP_ENDPOINT_URL}"
    }
  }
}

Paste into mcpServers in the config file. Restart Cursor after saving.

If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.