Slack API集成服务

Slack MCP Server是一个用于与Slack API集成的HTTP传输服务,支持多种认证方法包括Bot/User Token和Cookie-Based Auth,适用于需要自动化Slack交互的场景。

  • by sdancy10
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 sdancy10/slack-mcp

使用说明

Slack MCP服务器

用于Slack API与HTTP传输集成的MCP服务器。

身份验证方法

选项1:机器人/用户令牌(推荐)

标准Slack API令牌。需要一个具有适当范围的Slack应用程序。

export SLACK_TOKEN=xoxb-your-bot-token
# or
export SLACK_TOKEN=xoxp-your-user-token

选项2:基于Cookie的身份验证(用户模拟)

使用浏览器会话Cookie模拟登录用户。在以下情况下有用:

  • 您没有Slack应用程序的管理员批准
  • 您需要以特定用户的身份行事
  • 您想访问用户所属的私人频道

从Chrome提取令牌

  1. 打开Chrome工具 在Slack工作区上:

    • 导航到 https://your-workspace.slack.com
    • 按 F12 或单击鼠标右键→ “检查”
    • 去 应用 标签
  2. 得到 xoxc 令牌:

    • 在DevTools中,转到 控制台 标签
    • 粘贴并运行:
      JSON.parse(localStorage.localConfig_v2).teams[Object.keys(JSON.parse(localStorage.localConfig_v2).teams)[0]].token
      
    • 复制 xoxc-... 令牌
  3. 得到 xoxd 饼干:

    • 在DevTools中,转到 应用 → Cookie → https://your-workspace.slack.com
    • 查找名为的cookie d
    • 复制 价值 (开始于 xoxd-...)
    • ⚠️ 该值是URL编码的——保持原样
  4. 获取工作区详细信息:

    • 团队ID:在Console中,运行:
      JSON.parse(localStorage.localConfig_v2).teams[Object.keys(JSON.parse(localStorage.localConfig_v2).teams)[0]].id
      
    • 用户ID:运行:
      JSON.parse(localStorage.localConfig_v2).teams[Object.keys(JSON.parse(localStorage.localConfig_v2).teams)[0]].user_id
      
    • 领域:您的Slack URL(例如。, your-workspace.slack.com)
  5. 创建您的env文件:

    cp cookie-tokens.env.example /path/to/secrets/cookie-tokens.env
    # Edit the file with your extracted values
    

使用Cookie客户端

为API快速调用提供了一个shell脚本:

# Set up your tokens
source /path/to/secrets/cookie-tokens.env

# Test authentication
./scripts/slack-cookie-client.sh auth

# List channels
./scripts/slack-cookie-client.sh channels 20

# Get channel history
./scripts/slack-cookie-client.sh history C0123ABCDEF 10

# Send a message
./scripts/slack-cookie-client.sh send C0123ABCDEF "Hello from the script!"

# Search messages
./scripts/slack-cookie-client.sh search "keyword"

# List users
./scripts/slack-cookie-client.sh users 50

令牌到期

Cookie令牌在以下情况下过期:

  • 您在浏览器中注销了Slack
  • 您更改了密码
  • Slack轮换会话令牌(通常每几周一次)

当令牌过期时,重复提取过程。


设置(标准令牌)

  1. 获取Slack令牌(Bot令牌 xoxb-... 或用户令牌 xoxp-...)

  2. 配置环境:

export SLACK_TOKEN=xoxb-your-token
  1. 运行:
npm install
npm run start:http

码头工人

docker build -t slack-mcp .
docker run -d -p 3929:3929 -e SLACK_TOKEN=xoxb-... slack-mcp

端点

  • GET /health -健康检查
  • GET /tools -列出可用工具
  • POST /call -调用工具

可用工具

工具 说明
slack_list_channels 列出频道
slack_get_channel_history 获取频道消息
slack_post_message 发送消息
slack_update_message 编辑消息
slack_delete_message 删除消息
slack_add_reaction 添加表情符号反应
slack_get_user_info 获取用户详细信息
slack_list_users 列出工作区用户
slack_search_messages 搜索邮件

示例

# List channels
curl -X POST http://localhost:3929/call \
  -H "Content-Type: application/json" \
  -d '{"name": "slack_list_channels", "arguments": {}}'

# Post message
curl -X POST http://localhost:3929/call \
  -H "Content-Type: application/json" \
  -d '{"name": "slack_post_message", "arguments": {"channel": "C123", "text": "Hello!"}}'

需要令牌范围

对于Bot令牌(xoxb-...):

  • channels:read, channels:history
  • chat:write
  • users:read
  • reactions:write
  • search:read (用于搜索)

用户令牌(xoxp-...):

  • 与上述相同,加上您的用例的任何其他范围

Cookie授权:

  • 无需作用域--继承登录用户的所有权限