slack-mcp-client

MCP.Pizza Chef: csonigo

The slack-mcp-client is a Typescript-based MCP client designed to integrate Slack bots with the Model Context Protocol. It supports HTTP Streamable, Stdio, and SSE MCP servers, along with OAuth-based authorization flows, enabling secure and real-time interaction between Slack and MCP servers. This client facilitates seamless communication and tool usage within Slack environments, leveraging MCP's modular architecture for enhanced bot capabilities.

Use This MCP client To

Integrate Slack bots with MCP servers for real-time data exchange Implement OAuth-based authorization flows in Slack bots Stream data between Slack and MCP servers using HTTP and SSE Enable Slack bots to interact with MCP tools Run Slack bots locally with ngrok or Slack socket mode

README

Slack MCP Client

A slack bot with an MCP client for slack in Typescript.

Current support for:

  • HTTP Streamable, Stdio MCP servers as defined in version 2025-03-26
  • The Oauth based authorization flow defined in version 2025-03-26
  • SSE MCP servers as defined in the previous version of the protocol.
  • MCP Tools only (more coming soon)

Check out the video for a brief overview of what it can do! The video is using this linkedin-mcp-server which supports the latest authentication specification of the protocol.

Demo.slack.agent.mp4

Installation

Follow those instructions to run it locally.

Setup ngrok to run the app locally

  • Expose your http://localhost:3000 to the web: https://ngrok.com/docs/getting-started/
  • You can also use the socketMode of slack apps if you do not want to use ngrok. You'll need to set socketMode to true when instanciating the bolt App, and activate the socketMode of your app in the slack App management dashboard.

Setup the Slack App

  • Edit the slack-app-manifest.json: copy your ngrok url in the request_url fields.
  • Add a new App in your slack workspace, you can configure it with the slack-app-manifest.json file.
  • Create an .env file from the env.example file
cp .env.example .env
  • Populate with the slack tokens:
    • The Signing Secret from the App Basic Information page
    • The App level token with a connections:write scope that you can generate in the App Basic Information page.
    • The Slack bot token that you can find in the OAuth & Permission page
    • Update the auth redirect url with your ngrok url.

Requirements

  • Node 22 (lts/jod)
  • pnpm 10
  • an OpenAI API key
  • Some MCP servers running accessible over stdio, sse or streamable http. You can checkout this list if you need!

Instructions

  • Install dependencies:
pnpm install
cp mcp-example.json mcp.json
  • Run the client:
pnpm run dev
  • Open a new thread of discussion with your bot and have fun.

Useful Doc

License

This project is licensed under MIT License - see the LICENSE file for details.

Contributing

Contributions are welcome! Please feel free to open an issue or to submit a pull request 🚀!

slack-mcp-client FAQ

How do I set up the slack-mcp-client locally?
Use ngrok to expose localhost or enable Slack socketMode for local development.
What MCP server types does slack-mcp-client support?
It supports HTTP Streamable, Stdio, and SSE MCP servers as per protocol versions 2025-03-26 and earlier.
How does slack-mcp-client handle authentication?
It uses the OAuth-based authorization flow defined in MCP version 2025-03-26 for secure access.
Can slack-mcp-client interact with MCP tools?
Yes, it currently supports MCP tools with more planned for future releases.
Is slack-mcp-client written in a specific programming language?
Yes, it is implemented in Typescript for robust Slack bot integration.
Can I use slack-mcp-client without ngrok?
Yes, by enabling Slack's socketMode, you can run the client without ngrok.
Where can I find a demo or overview of slack-mcp-client?
A video overview is available in the GitHub repository README linked in the project description.