Slack只读MCP服务器

一个带有OAuth 2.1认证的Slack只读MCP(Model Context Protocol)服务器,用于检索频道消息、用户信息等。

  • by duolingo
  • Python
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 duolingo/slack-mcp

使用说明

Slack MCP 服务器

用于Slack的只读MCP(模型上下文协议)服务器,具有OAuth 2.1身份验证。

演示

https://github.com/user-attachments/assets/211bd428-209f-461a-b9a1-9cc85fd7c438

可用工具

  • slack_get_channel_messages -从频道检索消息
  • slack_get_thread_replies -获取对话线程回复
  • slack_search_messages -使用过滤器进行高级邮件搜索
  • slack_get_users -列出工作区用户或获取特定配置文件
  • slack_get_channels -列出频道或获取详细信息

快速开始

1.创建Slack应用程序

  1. 访问 Slack API应用程序 并创建新应用程序
  2. 在...之下 应用程序凭据,复制您的 Client ID 和 Client Secret
  3. 导航至 OAuth和权限 并添加这些 用户令牌范围: channels:history groups:history im:history mpim:history channels:read groups:read im:read mpim:read users:read users:read.email search:read
  4. 添加 重定向URL 在...之下 OAuth和权限:
    • 对于本地测试:使用HTTPS代理,如ngrok(例如: https://abc123.ngrok.io/oauth2callback).请参阅下面的本地开发设置。
    • 生产: https://your-domain.com/oauth2callback

2.安装

uv sync

3.本地开发设置(HTTPS代理)

Slack要求OAuth回调使用HTTPS。对于本地开发,请使用ngrok或类似的HTTPS代理:

# Visit https://ngrok.com/ to download ngrok and start the proxy
ngrok http 8001

复制HTTPS转发URL(例如。, https://abc123.ngrok.io/oauth2callback)并将其添加为Slack应用程序设置中的重定向URL。

4.配置

设置所需的环境变量:

export SLACK_CLIENT_ID="your_client_id"
export SLACK_CLIENT_SECRET="your_client_secret"
# Use https://your-domain.com for production.
export SLACK_MCP_BASE_URI="http://localhost"
# Use https://your-domain.com for production.
export SLACK_EXTERNAL_URL="https://abc123.ngrok.io"
# Optional, if you want to run the MCP server on a different port.
export SLACK_MCP_PORT=8001

5.运行服务器

uv run python server.py

服务器将于启动 http://localhost:8001 默认情况下。确保你的ngrok代理与OAuth一起运行。

6.配置您的MCP客户端

添加到您的MCP客户端配置中(例如,游标为~/.cursor/MCP.json):

{
  "mcpServers": {
    "slack": { "url": "http://localhost:8001/mcp", "transport": "http" }
  }
}

7.身份验证

当您的MCP客户端首次连接时,身份验证会通过OAuth 2.1自动进行。您的客户端将打开一个浏览器窗口进行Slack授权——批准访问,您就可以开始了。

部署

对于生产部署,您可以在docker中运行它:

docker build -t slack-mcp .
docker run -p 8001:8001 \
  -e SLACK_CLIENT_ID="your_client_id" \
  -e SLACK_CLIENT_SECRET="your_client_secret" \
  -e SLACK_MCP_BASE_URI="https://your-domain.com" \
  -e SLACK_EXTERNAL_URL="https://your-domain.com" \
  slack-mcp

发展

使用运行测试 uv run pytest.

许可证

此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。

Duolingo正在招聘!申请地点:https://www.duolingo.com/careers