Slack模型上下文协议服务器

一个用于与Slack交互的MCP(Model Context Protocol)服务器,提供消息管理、用户信息查询和频道操作等功能,适用于团队协作和自动化工作流场景。

  • by axivo
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 axivo/mcp-slack-events

使用说明

Slack MCP服务器

用于与Slack交互的MCP(模型上下文协议)服务器。

安全功能

  • 链接展开已禁用:防止可能泄露敏感信息的自动链接爬行
  • 速率限制:强制每个端点每分钟60个请求
  • Markdown转换:自动将GitHub风格的Markdown转换为Slack mrkdwn 格式

Slack设置

  1. 创建Slack应用程序:

    • 访问 Slack应用程序
    • 点击“创建新应用”
    • 选择“从头开始”
    • 命名您的应用程序并选择您的工作区
  2. 配置Bot令牌范围: 导航到“OAuth和权限”并添加以下范围:

    • channels:history -查看公共频道中的消息和其他内容
    • channels:read -查看基本频道信息
    • chat:write -以应用程序的身份发送消息
    • reactions:write -在消息中添加表情符号反应
    • users:read -查看用户及其基本信息
    • users.profile:read -查看用户的详细资料
  3. 将应用程序安装到工作区:

    • 点击“安装到工作区”并授权应用程序
    • 保存以开头的“Bot用户OAuth令牌” xoxb-
  4. 得到你的 团队ID (以a开头 T)

MCP服务器配置

增添 mcp.json 服务器配置:

{
  "mcpServers": {
    "slack": {
      "command": "npx",
      "args": [
        "-y",
        "@axivo/mcp-slack"
      ],
      "env": {
        "SLACK_BOT_TOKEN": "xoxb-your-bot-token",
        "SLACK_TEAM_ID": "T01234567",
        "SLACK_CHANNEL_IDS": "C01234567, C76543210"
      }
    }
  }
}

环境变量

所需变量:

  • SLACK_BOT_TOKEN -Slack机器人令牌(以开头 xoxb-)
  • SLACK_TEAM_ID -松弛 团队ID (开始于 T)

可选变量:

  • SLACK_CHANNEL_IDS -以逗号分隔的频道ID列表,仅限制对特定频道的访问。如果未设置,服务器可以访问机器人有权访问的所有公共频道。

提示示例

以下是如何使用Slack MCP服务器和自然语言提示的实际示例:

  • "在#general Slack频道中提到我的名字,并发布项目更新"
  • "阅读#marketing Slack频道的最后20条消息,了解讨论情况"
  • "回复#support Slack频道的最新帖子并提供解决方案"
  • "在#announcements Slack频道的最新消息中添加竖起大拇指的反应"
  • "从关于API更改的长线程中获取所有回复"
  • "在#general Slack频道中编辑我的最后一条消息以修复拼写错误"
  • "列出我可以访问的所有频道,并找到与工程相关的频道"
  • "查找John的个人资料信息和时区"

MCP工具

  1. add_reaction

    • 在消息中添加反应表情符号
    • 所需输入:
      • channel_id (string):包含消息的通道的ID
      • timestamp (string):要响应的消息的时间戳
      • reaction (字符串):表情符号反应的名称(不带::)
    • 返回:反应添加确认
  2. edit_message

    • 编辑Slack频道中的现有消息
    • 所需输入:
      • channel_id (string):包含消息的通道的ID
      • timestamp (string):要编辑的消息的时间戳
      • text (string):要编辑的消息文本
    • 返回:带有更新内容的消息编辑确认
  3. get_channel_history

    • 从频道获取最新消息
    • 所需输入:
      • channel_id (string):通道的ID
    • 可选输入:
      • limit (数字,默认值:10):要检索的邮件数
    • 返回:包含元数据的最近消息数组
  4. get_thread_replies

    • 获取消息线程中的所有回复
    • 所需输入:
      • channel_id (string):包含线程的通道的ID
      • thread_ts (string):父消息的时间戳,格式为“1234567890.123456”。不带句点的格式的时间戳可以通过添加句点进行转换,使其后面有6个数字
    • 返回:包含消息详细信息的线程回复数组
  5. get_user_profile

    • 获取特定用户的详细个人资料信息
    • 所需输入:
      • user_id (string):用户的ID
    • 返回:详细的用户配置文件信息,包括显示名称、状态、时区等。
  6. get_users

    • 获取工作区中所有用户的列表及其基本配置文件信息
    • 可选输入:
      • limit (数字,默认值:100,最大值:200):返回的最大用户数
      • cursor (string):下一页结果的分页光标
    • 返回:包含基本配置文件信息的工作区用户列表
  7. list_channels

    • 在工作区中列出带有分页的公共或预定义频道
    • 可选输入:
      • limit (数字,默认值:100,最大值:200):要返回的最大通道数
      • cursor (string):下一页结果的分页光标
    • 返回:通道列表及其ID和信息
  8. post_message

    • 在Slack频道发布新消息
    • 所需输入:
      • channel_id (string):要发布的频道的ID
      • text (string):要发布的消息文本
    • 返回:带有时间戳和频道信息的消息发布确认
  9. reply_to_thread

    • 在Slack中回复特定消息线程
    • 所需输入:
      • channel_id (string):包含线程的通道的ID
      • thread_ts (string):父消息的时间戳,格式为“1234567890.123456”。不带句点的格式的时间戳可以通过添加句点进行转换,使其后面有6个数字
      • text (string):要发布的回复文本
    • 可选输入:
      • broadcast (boolean,默认值:false):是否也向主通道发送回复
    • 返回:带有消息详细信息的线程回复确认