Slack消息发送工具

一个极简的MCP服务器,用于发送Slack消息,支持机器人令牌和用户令牌,具有并发安全性和机器人签名功能。

  • by pilat
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 pilat/mcp-notify

使用说明

mcp通知

用于发送Slack消息的最小MCP服务器。支持机器人令牌(xoxb)和用户令牌(xoxc+cookie认证)。即发即弃-单 send_message 工具,没有别的。

正在寻找功能齐全的Slack MCP? 结账 korotovsky/lack mcp服务器 --它支持阅读、搜索、反应、线程、DM等等。我们推荐它用于大多数用例。

这个项目之所以存在,是因为我们需要它没有提供的两样东西:

  • 机器人签名 --在用户令牌模式下,每条消息都会得到一个 :robot_face: 上下文块,因此很明显消息是由人工智能助手而不是人类发送的。在机器人令牌模式下,应用程序名称/图标已经用于此目的。
  • 并行安全 --SQLite具有WAL模式和检查锁再检查同步模式,对并行运行的多个MCP实例是安全的

安装

克劳德代码

添加到MCP配置(~/.claude.json 全球或 .mcp.json 每个项目)。

机器人令牌(推荐用于Slack应用程序):

{
  "mcpServers": {
    "mcp-notify": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@pilat/mcp-notify"],
      "env": {
        "SLACK_MCP_BOT_TOKEN": "xoxb-..."
      }
    }
  }
}

用户令牌(xoxc+cookie):

{
  "mcpServers": {
    "mcp-notify": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@pilat/mcp-notify"],
      "env": {
        "SLACK_MCP_XOXC_TOKEN": "xoxc-...",
        "SLACK_MCP_XOXD_TOKEN": "xoxd-..."
      }
    }
  }
}

其他MCP客户端

使用 npx @pilat/mcp-notify 作为stdio传输的命令。将凭据作为环境变量传递:

# Bot token
SLACK_MCP_BOT_TOKEN=xoxb-... npx @pilat/mcp-notify

# User token
SLACK_MCP_XOXC_TOKEN=xoxc-... SLACK_MCP_XOXD_TOKEN=xoxd-... npx @pilat/mcp-notify

环境变量

变量 必填 描述
SLACK_MCP_BOT_TOKEN 机器人/用户之一 机器人令牌(xoxb-...)从您的Slack应用程序
SLACK_MCP_XOXC_TOKEN 机器人/用户 用户 xoxc-... 代币
SLACK_MCP_XOXD_TOKEN 使用xoxc 用户 xoxd-... 会话令牌(的值 d 饼干)
SLACK_MCP_DATA_DIR 否 SQLite缓存的自定义路径(默认: ~/.local/share/mcp-notify)

设置其中之一 SLACK_MCP_BOT_TOKEN 或 SLACK_MCP_XOXC_TOKEN + SLACK_MCP_XOXD_TOKEN。设置bot和用户令牌都是错误的。

Bot令牌设置

  1. 在以下位置创建Slack应用程序 api.slack.com/apps
  2. 添加以下OAuth作用域: channels:read, groups:read, users:read, usergroups:read, chat:write
  3. 将应用程序安装到您的工作区
  4. 复制 Bot用户OAuth令牌 (xoxb-...)

用户令牌设置(xoxc+cookie)

  1. 在浏览器中打开Slack(不是桌面应用程序)
  2. 打开DevTools→ 网络选项卡
  3. 在Slack中执行任何操作(切换频道、发送消息)
  4. 查找任何请求 api.slack.com → 标题选项卡
  5. SLACK_MCP_XOXC_TOKEN:从请求负载中查找 token=xoxc-...
  6. SLACK_MCP_oxd_TOKEN:从Cookie标头中查找 d=xoxd-... --仅复制 xoxd-... 部分(无 d=)

建筑

单一工具: send_message在用户令牌模式下,消息包括 :robot_face: 上下文块。在机器人令牌模式下,消息在没有签名的情况下发送(应用程序名称/图标已经标识了发送者)。这两种模式都使用带有纯文本回退的Block Kit。

  • SQLite缓存 (~/.local/share/mcp-notify/data.db,WAL模式)--通道、用户、用户组在第一次缓存未命中时具有延迟同步,24小时TTL
  • 提及决议 — @username → <@U123>, @grouphandle → <!subteam^ID>.团体优先。并行解决。
  • 并发同步安全 -基于CAS的检查-锁-重检查模式,通过 sync_meta 桌子