Slack Model Context Protocol Server logo

Slack Model Context Protocol Server

by AVIMBU

This server acts as a connector, enabling Claude Desktop (or any MCP client) to interact with your Slack workspace. It allows posting messages and querying a list of all users within your Slack team.

View on GitHub

Last updated: N/A

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:

| Permission | Description | Implemented | |------------|-------------|-------------| | app_configurations:read | Read app configuration info via App Manifest APIs | ❌ | | app_configurations:write | Write app configuration info and create apps via App Manifest APIs | ❌ | | app_mentions:read | View messages that directly mention @your_slack_app in conversations that the app is in | ❌ | | assistant:write | Allow your slack app to act as an AI Assistant | ❌ | | bookmarks:read | List bookmarks | ❌ | | bookmarks:write | Create, edit, and remove bookmarks | ❌ | | calls:read | View information about ongoing and past calls | ❌ | | calls:write | Start and manage calls in a workspace | ❌ | | canvases:read | your slack app will be able to access contents of canvases created inside Slack. | ❌ | | canvases:write | your slack app will be able to create, edit and remove canvases. | ❌ | | channels:history | View messages and other content in public channels that your slack app has been added to | ❌ | | channels:join | Join public channels in a workspace | ❌ | | channels:manage | Manage public channels that your slack app has been added to and create new ones | ❌ | | channels:read | View basic information about public channels in a workspace | ❌ | | channels:write.invites | Invite members to public channels | ❌ | | channels:write.topic | Set the description of public channels | ❌ | | chat:write | Post messages in approved channels & conversations | ✅ | | chat:write.customize | Send messages as @your_slack_app with a customized username and avatar | ❌ | | chat:write.public | Send messages to channels @your_slack_app isn't a member of | ❌ | | commands | Add shortcuts and/or slash commands that people can use | ❌ | | conversations.connect:manage | Allows your slack app to manage Slack Connect channels | ❌ | | conversations.connect:read | Receive Slack Connect invite events sent to the channels your slack app is in | ❌ | | conversations.connect:write | Create Slack Connect invitations for channels that your slack app has been added to, and accept invitations sent to your slack app | ❌ | | datastore:read | View and see data from Slack App Datastore | ❌ | | datastore:write | Write data to Slack App Datastore | ❌ | | dnd:read | View Do Not Disturb settings for people in a workspace | ❌ | | emoji:read | View custom emoji in a workspace | ❌ | | files:read | View files shared in channels and conversations that your slack app has been added to | ❌ | | files:write | Upload, edit, and delete files as your slack app | ❌ | | groups:history | View messages and other content in private channels that your slack app has been added to | ❌ | | groups:read | View basic information about private channels that your slack app has been added to | ❌ | | groups:write | Manage private channels that your slack app has been added to and create new ones | ❌ | | groups:write.invites | Invite members to private channels | ❌ | | groups:write.topic | Set the description of private channels | ❌ | | im:history | View messages and other content in direct messages that your slack app has been added to | ❌ | | im:read | View basic information about direct messages that your slack app has been added to | ❌ | | im:write | Start direct messages with people | ❌ | | im:write.topic | Set the description in direct messages | ❌ | | incoming-webhook | Create one-way webhooks to post messages to a specific channel | ❌ | | links.embed:write | Embed video player URLs in messages and app surfaces | ❌ | | links:read | View URLs in messages | ❌ | | links:write | Show previews of URLs in messages | ❌ | | metadata.message:read | Allows your slack app to read message metadata in channels that your slack app has been added to | ❌ | | mpim:history | View messages and other content in group direct messages that your slack app has been added to | ❌ | | mpim:read | View basic information about group direct messages that your slack app has been added to | ❌ | | mpim:write | Start group direct messages with people | ❌ | | mpim:write.topic | Set the description in group direct messages | ❌ | | none | Execute methods without needing a scope | ❌ | | pins:read | View pinned content in channels and conversations that your slack app has been added to | ❌ | | pins:write | Add and remove pinned messages and files | ❌ | | reactions:read | View emoji reactions and their associated content in channels and conversations that your slack app has been added to | ❌ | | reactions:write | Add and edit emoji reactions | ❌ | | reminders:read | View reminders created by your slack app | ❌ | | reminders:write | Add, remove, or mark reminders as complete | ❌ | | remote_files:read | View remote files added by the app in a workspace | ❌ | | remote_files:share | Share remote files on a user's behalf | ❌ | | remote_files:write | Add, edit, and delete remote files on a user's behalf | ❌ | | search:read.files | Search a workspace's content in files | ❌ | | search:read.im | Search a workspace's content in direct messages | ❌ | | search:read.mpim | Search a workspace's content in group direct messages | ❌ | | search:read.private | Search a workspace's content in private channels | ❌ | | search:read.public | Search a workspace's content in public channels | ❌ | | team.billing:read | Allows your slack app to read the billing plan for workspaces your slack app has been installed to | ❌ | | team.preferences:read | Allows your slack app to read the preferences for workspaces your slack app has been installed to | ❌ | | team:read | View the name, email domain, and icon for workspaces your slack app is connected to | ❌ | | tokens.basic | Execute methods without needing a scope | ❌ | | triggers:read | Read new Platform triggers | ❌ | | triggers:write | Create new Platform triggers | ❌ | | usergroups:read | View user groups in a workspace | ❌ | | usergroups:write | Create and manage user groups | ❌ | | users.profile:read | View profile details about people in a workspace | ❌ | | users:read | View people in a workspace | ✅ | | users:read.email | View email addresses of people in a workspace | ❌ | | users:write | Set presence for your slack app | ❌ | | workflow.steps:execute | Add steps that people can use in Workflow Builder | ❌ | | workflows.templates:read | Read a workflow template | ❌ | | workflows.templates:write | Write a workflow template | ❌ |

Contact

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