返回市场
Slack-MCP-服务器

Slack-MCP-服务器

作者:GongRzhe2 星标更新:2025-08-03

项目介绍

Slack MCP 服务器

用于 Slack 工作区集成的模型上下文协议(MCP)服务器,使用 FastMCP 和 HTTP 传输,并支持多用户。

功能

工具

核心消息工具

  • conversations_history - 从频道或私信中获取消息,附带增强的用户详情
  • bulk_conversations_history - 高效地从多个频道获取消息(避免多次 API 调用)
  • conversations_replies - 获取线程消息并分页
  • conversations_add_message - 向频道或私信发送消息(默认禁用安全措施)
  • conversations_search_messages - 使用高级过滤器搜索消息
  • message_permalink - 获取特定消息的永久链接

频道与用户管理

  • channels_list - 列出所有频道,提供排序选项
  • channels_detailed - 高效地获取全面的频道信息(避免冗余的 API 调用)
  • channel_info - 获取详细的频道信息(主题、目的、成员数量)
  • channel_members - 列出频道成员及其详细信息
  • set_channel_topic - 更新频道主题
  • set_channel_purpose - 更新频道目的
  • user_info - 获取详细的用户信息和个人资料(支持多个用户)
  • users_list - 列出所有用户,提供过滤选项(仅缓存以提高性能)
  • user_presence - 检查用户的在线/离线状态

工作区与分析

  • workspace_info - 获取工作区详情(名称、域名、计划)
  • analytics_summary - 从缓存数据中获取工作区分析
  • files_list - 根据频道、用户或类型筛选列出文件
  • initialize_cache - 强制创建两个缓存文件
  • cache_info - 显示缓存文件的位置、大小和状态
  • clear_cache - 清除缓存文件以强制刷新
  • check_permissions - 测试可用的 Slack API 范围

交互功能

  • add_reaction - 向消息添加表情反应

资源

  • slack://workspace/channels - 包含元数据的所有频道的 CSV 目录
  • slack://workspace/users - 包含元数据的所有用户的 CSV 目录

安装

pip install -r requirements.txt

配置

必需的环境变量

  • SLACK_MCP_XOXP_TOKEN - Slack 机器人令牌(xoxb-)或用户令牌(xoxp-)

可选的环境变量

  • SLACK_M_ MCP_ADD_MESSAGE_TOOL - 启用消息发布:
    • 未设置 = 禁用(默认安全设置)
    • true1 = 对所有频道启用
    • 逗号分隔的频道ID = 仅对特定频道启用
  • SLACK_MCP_USERS_CACHE - 用户缓存文件路径(默认:~/slack-cache/users_cache.json
  • SLACK_MCP_CHANNELS_CACHE - 频道缓存文件路径(默认:~/slack-cache/channels_cache_v2.json

使用

启动 HTTP 服务器

python slack_mcp_server.py

默认情况下,服务器运行在 http://0.0.0.0:8000/mcp

认证

为了支持多用户,通过请求头传递 Slack 令牌:

SLACK_MCP_XOXP_TOKEN: xoxb-your-slack-token

可选的消息发布控制通过头部:

SLACK_MCP_ADD_MESSAGE_TOOL: true

或者,设置 SLACK_MCP_XOXP_TOKEN 环境变量以单用户模式运行。

API 示例

获取频道历史记录

{
  "method": "conversations_history",
  "params": {
    "channel_id": "#general",
    "limit": "1d",
    "include_activity_messages": false
  }
}

搜索消息

{
  "method": "conversations_search_messages", 
  "params": {
    "search_query": "项目更新",
    "filter_in_channel": "#general",
    "filter_users_from": "@john",
    "limit": 50
  }
}

获取频道目录

{
  "method": "resource",
  "params": {
    "uri": "slack://myworkspace/channels"
  }
}

Slack 权限

您的 Slack 应用所需的范围:

  • channels:history - 读取公共频道消息
  • groups:history - 读取私人频道消息
  • im:history - 读取直接消息
  • mpim:history - 读取群组直接消息
  • channels:read - 列出公共频道
  • groups:read - 列出私人频道
  • users:read - 列出工作区用户
  • chat:write - 发送消息(如果启用)

增强功能

智能缓存

  • 用户缓存:自动缓存用户信息以避免重复的 API 调用
  • 频道缓存:缓存频道元数据,具有可配置的刷新间隔
  • 性能:显著减少 API 速率限制的使用并提高响应时间
  • 缓存优先user_infochannel_info 工具默认使用缓存以实现即时响应
  • 回退:如果缓存缺失或明确请求,则优雅地回退到 API

智能名称解析

服务器现在接受用户友好的名称以及 ID:

频道引用:

  • #general → 解析为频道 ID (C1234567890)
  • #project-alpha → 解析为频道 ID
  • @john_dm → 打开/查找与用户“john”的私信

用户引用:

  • @john → 解析为用户 ID (U1234567890)
  • john.doe → 使用显示名或真实名解析
  • John Doe → 使用真实名解析

示例:

// 从 #general 频道获取带有用户详情的消息
{
  "method": "conversations_history",
  "params": {
    "channel_id": "#general",
    "limit": "1d",
    "include_user_details": true
  }
}

// 获取用户详细信息(缓存优先,即时响应)
{
  "method": "user_info",
  "params": {
    "user_id": "@gongrzhe"
  }
}

// 高效地获取所有频道(1次 API 调用代替 N 次 channel_info 调用)
{
  "method": "channels_detailed",
  "params": {
    "channel_types": "public_channel,private_channel",
    "sort": "popularity",
    "limit": 50
  }
}

// 高效地从多个频道获取消息(代替 N 次 conversations_history 调用)
{
  "method": "bulk_conversations_history",
  "params": {
    "channel_ids": "#general, #random, #project-alpha",
    "limit": "1d",
    "filter_user": "@chris"
  }
}

// 从 API 获取最新的用户信息(较慢)
{
  "method": "user_info", 
  "params": {
    "user_id": "@gongrzhe",
    "use_cache": false
  }
}

// 列出 #general 频道的成员
{
  "method": "channel_members",
  "params": {
    "channel_id": "#general"
  }
}

// 获取工作区分析
{
  "method": "analytics_summary",
  "params": {
    "date_range": "30d"
  }
}

// 向消息添加反应
{
  "method": "add_reaction",
  "params": {
    "channel_id": "#general",
    "message_ts": "1699123456.123456",
    "emoji_name": "thumbsup"
  }
}

// 设置频道主题
{
  "method": "set_channel_topic",
  "params": {
    "channel_id": "#general",
    "topic": "欢迎来到我们的主要讨论频道!"
  }
}

// 在 #project-alpha 中搜索 @john 的消息
{
  "method": "conversations_search_messages", 
  "params": {
    "search_query": "部署",
    "filter_in_channel": "#project-alpha",
    "filter_users_from": "@john"
  }
}

// 列出 @chris 分享的文件
{
  "method": "files_list",
  "params": {
    "user_id": "@chris",
    "count": 20,
    "types": "images"
  }
}

// 检查可用的权限
{
  "method": "check_permissions"
}

// 初始化两个缓存文件
{
  "method": "initialize_cache"
}

// 检查缓存文件的位置和状态
{
  "method": "cache_info"
}

// 清除所有缓存文件
{
  "method": "clear_cache",
  "params": {
    "cache_type": "both"
  }
}

安全性

  • 默认禁用消息发布以确保安全
  • 基于令牌的身份验证支持多用户
  • 不记录或提交任何秘密到仓库
  • 遵循 Slack API 速率限制和最佳实践