Slack通知服务

一个通过OAuth机器人令牌向Slack发送格式化通知的服务,支持用户提及和Markdown格式。

  • by mkusaka
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 mkusaka/mcp-server-slack-notify

使用说明

@mkusaka/mcp服务器空闲通知

MCP服务器,用于使用OAuth机器人令牌向Slack发送通知。

特性

  • 向Slack频道发送带有标题和描述的格式化消息
  • 使用提及参数自动提及特定用户
  • 支持Slack的markdown格式
  • 带有可选标题的干净邮件格式
  • 完全类型安全的TypeScript支持

安装

npm install @mkusaka/mcp-server-slack-notify
# or
pnpm add @mkusaka/mcp-server-slack-notify

配置

创建Slack应用程序

  1. 创建新的Slack应用程序

    • 首选https://api.slack.com/apps
    • 点击“创建新应用”
    • 选择“从头开始”
    • 输入您的应用程序名称(例如“MCP通知机器人”)
    • 选择您的工作区
    • 点击“创建应用”
  2. 配置OAuth作用域

    • 在您的应用程序设置中,导航到侧栏中的“OAuth和权限”
    • 向下滚动到“范围”部分
    • 在“Bot令牌作用域”下,单击“添加OAuth作用域”
    • 添加以下范围:
      • chat:write -发送消息时需要
  3. 将应用程序安装到您的工作区

    • 请访问“OAuth和权限”页面
    • 点击顶部的“安装到工作区”
    • 查看权限并单击“允许”
    • 您将被重定向回OAuth和权限页面
  4. 获取您的Bot令牌

    • 安装后,您将在OAuth和权限页面上看到“Bot用户OAuth令牌”
    • 它始于 xoxb-
    • 复制此令牌-您将需要它 SLACK_BOT_TOKEN 环境变量
  5. 邀请机器人加入频道

    • 在Slack中,转到要发送通知的频道
    • 类型 /invite @YourBotName (替换为您的机器人名称)
    • 或者单击频道名称→ “集成”选项卡→ “添加应用程序”→ 选择您的机器人

环境变量

设置以下环境变量:

  • SLACK_BOT_TOKEN (必填):步骤4中的Bot用户OAuth令牌
  • SLACK_DEFAULT_CHANNEL (可选):通知的默认通道(例如。, #general)
  • SLACK_MENTIONS (可选):在所有消息中提及的默认用户ID(例如。, U1234567890,U0987654321)

使用Claude Desktop

添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "slack-notify": {
      "command": "npx",
      "args": ["-y", "@mkusaka/mcp-server-slack-notify@latest"],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-token-here",
        "SLACK_DEFAULT_CHANNEL": "#general",
        "SLACK_MENTIONS": "U1234567890,U0987654321"
      }
    }
  }
}

使用Claude代码

您可以使用以下命令将此MCP服务器添加到Claude Code中:

claude mcp add slack-notify -e SLACK_BOT_TOKEN=xoxb-your-token-here -e SLACK_DEFAULT_CHANNEL=#general -e SLACK_MENTIONS=U1234567890,U0987654321 -- npx -y @mkusaka/mcp-server-slack-notify@latest

或者,如果您已全局安装该软件包:

# Install globally first
npm install -g @mkusaka/mcp-server-slack-notify

# Then add to Claude Code
claude mcp add slack-notify -e SLACK_BOT_TOKEN=xoxb-your-token-here -e SLACK_DEFAULT_CHANNEL=#general -e SLACK_MENTIONS=U1234567890,U0987654321 -- mcp-server-slack-notify

要添加用户范围(适用于所有项目):

claude mcp add --scope user slack-notify -e SLACK_BOT_TOKEN=xoxb-your-token-here -e SLACK_DEFAULT_CHANNEL=#general -e SLACK_MENTIONS=U1234567890,U0987654321 -- npx -y @mkusaka/mcp-server-slack-notify@latest

可用工具

send_slack_notification

向Slack频道发送通知。

参数:

  • channel (可选):松弛通道(例如#general或C1234567890)
  • title (可选):通知标题(如果提供,则显示标题格式)
  • description (必填):通知正文(支持Slack markdown)
  • mention (可选):要提及的用户ID。可以是单个用户ID(例如U1234567890)或用逗号分隔的多个ID(例如,U1234567890、U0987654321)

格式化指南

描述字段支持Slack的mrkdwn格式:

  • 提及:
    • 用户: <@U1234567890> (使用用户ID)
    • 频道: <#C1234567890> (使用频道ID)
    • @这里: <!here>
    • @频道: <!channel>
    • 用户组: <!subteam^S1234567890> (使用子团队的ID)
    • 注: 使用时 mention 参数或 SLACK_MENTIONS 环境变量,用户提及会自动添加到消息的开头
  • 文本格式:
    • 粗体: *bold text*
    • 意大利语: _italic text_
    • 罢工: ~strikethrough text~
    • 代码: `inline code`
    • 代码块: ```code block```
    • 报价: > quoted text
    • 链接: <https://example.com|Link text>

发展

# Install dependencies
pnpm install

# Run tests
pnpm test

# Build
pnpm build

# Run in development mode
pnpm start

# Debug with MCP Inspector
pnpm debug

测试

该项目包括使用Vitest和模拟Slack API调用进行全面测试。

# Run tests
pnpm test

# Run tests in watch mode
pnpm test:watch

许可证

麻省理工学院