Slack MCP Server - 企业级 Slack 工作空间集成方案

Slack MCP Server - 企业级 Slack 工作空间集成方案

高性能实现 | Stars: 776 | Go | MIT

概述

Slack MCP Server 是一个功能强大的 Model Context Protocol 服务器,为 Slack 工作空间提供深度集成能力。该服务器采用 Go 语言开发,支持多种认证模式和传输协议,能够实现消息检索、智能搜索、频道管理以及安全的消息发送功能。

作为企业级的 Slack 集成方案,它特别适合需要程序化访问 Slack 数据的场景,如团队沟通分析、知识库构建、自动化工作流等。支持 Stealth 和 OAuth 两种认证模式,灵活适配不同的安全需求。

Slack MCP Server analytics demo showing real-time workspace analytics and message retrieval

核心特性

  • 双认证模式:支持 Stealth 和 OAuth 两种认证方式
  • 🚀 多传输协议:Stdio、SSE、HTTP 三种传输模式
  • 🏢 企业工作空间支持:兼容企业级 Slack 工作空间
  • 💬 全面消息管理:频道消息、线程回复、DM 支持
  • 🔍 强大搜索功能:多维度消息搜索和过滤
  • 📊 智能缓存:用户和频道信息缓存提升性能
  • 🔒 安全发送:默认禁用消息发送,支持频道白名单
  • 🌐 代理支持:配置代理服务器支持
  • Go 语言实现:高性能、低资源占用

工具列表

1. conversations_history

功能:从频道或 DM 中检索消息历史

参数

  • channel_id (string, 必需) - 频道 ID(可从 channels_list 获取)
  • include_activity_messages (boolean, 可选) - 是否包含活动消息(加入/离开通知等)
  • cursor (string, 可选) - 分页游标,用于获取下一页结果
  • limit (integer, 可选) - 返回消息的最大数量

示例

1
2
3
4
5
{
"channel_id": "C01234567",
"include_activity_messages": false,
"limit": 50
}

返回:消息列表,包含消息内容、发送者、时间戳等信息

Slack MCP Server message addition demo showcasing message posting capabilities
向 Slack 频道发送消息

2. conversations_replies

功能:获取线程中的回复消息

参数

  • channel_id (string, 必需) - 频道 ID
  • thread_ts (string, 必需) - 线程时间戳,标识父消息
  • include_activity_messages (boolean, 可选) - 是否包含活动消息
  • cursor (string, 可选) - 分页游标
  • limit (integer, 可选) - 返回消息的最大数量

示例

1
2
3
4
5
{
"channel_id": "C01234567",
"thread_ts": "1234567890.123456",
"limit": 20
}

3. conversations_add_message

功能:向频道或线程发送消息(默认禁用,需配置启用)

参数

  • channel_id (string, 必需) - 目标频道 ID
  • thread_ts (string, 可选) - 如果要回复线程,提供线程时间戳
  • payload (string, 必需) - 消息内容(支持 Slack 块格式)
  • content_type (string, 可选) - 内容类型:text 或 blocks

安全说明

  • 默认禁用,通过 SLACK_MCP_ADD_MESSAGE_TOOL 环境变量配置
  • 可设置为 enabled 启用全部频道,或指定频道 ID 白名单

示例

1
2
3
4
5
{
"channel_id": "C01234567",
"payload": "Hello from MCP!",
"content_type": "text"
}

4. conversations_search_messages

功能:在工作空间中搜索消息,支持多种过滤条件

参数

  • query (string, 必需) - 搜索查询文本
  • channel_id (string, 可选) - 限制搜索到特定频道
  • user_id (string, 可选) - 限制搜索到特定用户的消息
  • after (string, 可选) - 搜索此日期之后的消息(YYYY-MM-DD 格式)
  • before (string, 可选) - 搜索此日期之前的消息(YYYY-MM-DD 格式)
  • only_threads (boolean, 可选) - 仅搜索线程消息
  • cursor (string, 可选) - 分页游标
  • limit (integer, 可选) - 返回结果的最大数量

示例

1
2
3
4
5
6
{
"query": "bug fix",
"channel_id": "C01234567",
"after": "2025-10-01",
"limit": 30
}

5. channels_list

功能:检索工作空间的频道列表

参数

  • channel_types (array, 可选) - 频道类型过滤(public_channel, private_channel, im, mpim)
  • sort (string, 可选) - 排序方式
  • limit (integer, 可选) - 返回频道的最大数量
  • cursor (string, 可选) - 分页游标

示例

1
2
3
4
{
"channel_types": ["public_channel", "private_channel"],
"limit": 100
}

资源

slack://<workspace>/channels

  • 格式:CSV
  • 描述:工作空间所有频道的目录信息
  • 用途:获取频道列表、ID、名称等元数据

slack://<workspace>/users

  • 格式:CSV
  • 描述:工作空间所有用户的目录信息
  • 用途:获取用户列表、ID、名称、状态等信息

配置方式

认证模式

Stealth 模式

使用浏览器令牌运行,无需额外权限和 Bot 安装:

1
2
3
# 必需的环境变量
SLACK_MCP_XOXC_TOKEN=xoxc-your-token-here
SLACK_MCP_XOXD_TOKEN=xoxd-your-cookie-here

如何获取令牌

  1. 在浏览器中登录 Slack
  2. 打开开发者工具(F12)
  3. 切换到 Network 标签
  4. 查找包含 xoxcxoxd 的请求
  5. 从请求头中提取令牌值

OAuth 模式(推荐)

使用用户 OAuth 令牌,更安全的访问方式:

1
2
# 必需的环境变量
SLACK_MCP_XOXP_TOKEN=xoxp-your-oauth-token

完整环境变量配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 认证相关(至少需要一种模式)
SLACK_MCP_XOXC_TOKEN=xoxc-your-token # Stealth 模式
SLACK_MCP_XOXD_TOKEN=xoxd-your-cookie # Stealth 模式
SLACK_MCP_XOXP_TOKEN=xoxp-your-token # OAuth 模式(推荐)

# 服务器配置
SLACK_MCP_PORT=8080 # 监听端口(默认:8080)
SLACK_MCP_HOST=localhost # 监听地址(默认:localhost)
SLACK_MCP_TRANSPORT=stdio # 传输模式:stdio/sse/http

# 代理配置
SLACK_MCP_PROXY=http://proxy:8080 # 出站请求代理

# 消息发送配置
SLACK_MCP_ADD_MESSAGE_TOOL=disabled # disabled/enabled/C01,C02(频道白名单)

# 缓存配置(推荐启用)
SLACK_MCP_USERS_CACHE=true # 用户缓存
SLACK_MCP_CHANNELS_CACHE=true # 频道缓存

# 日志配置
SLACK_MCP_LOG_LEVEL=info # debug/info/warn/error

Claude Desktop 配置

claude_desktop_config.json 中添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"mcpServers": {
"slack": {
"command": "/path/to/slack-mcp-server",
"env": {
"SLACK_MCP_XOXP_TOKEN": "xoxp-your-token",
"SLACK_MCP_USERS_CACHE": "true",
"SLACK_MCP_CHANNELS_CACHE": "true",
"SLACK_MCP_ADD_MESSAGE_TOOL": "disabled"
}
}
}
}

Docker 部署

1
2
3
4
5
6
7
8
9
10
11
12
# 使用 OAuth 模式
docker run -p 8080:8080 \
-e SLACK_MCP_XOXP_TOKEN="xoxp-your-token" \
-e SLACK_MCP_USERS_CACHE="true" \
-e SLACK_MCP_CHANNELS_CACHE="true" \
slack-mcp-server

# 使用 Stealth 模式
docker run -p 8080:8080 \
-e SLACK_MCP_XOXC_TOKEN="xoxc-your-token" \
-e SLACK_MCP_XOXD_TOKEN="xoxd-your-cookie" \
slack-mcp-server

使用场景

1. 团队沟通监控与分析

实时监控和分析团队频道中的重要讨论。

场景描述

  • 监控关键项目频道的消息动态
  • 识别重要讨论和决策过程
  • 统计团队沟通活跃度

实施步骤

  1. 使用 channels_list 获取所有项目频道
  2. 使用 conversations_history 定期检索新消息
  3. 使用 conversations_search_messages 搜索关键词
  4. 分析消息频率、参与度等指标

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
// 获取最近24小时的消息
const messages = await conversations_history({
channel_id: "C01234567",
limit: 100
});

// 搜索bug相关讨论
const bugs = await conversations_search_messages({
query: "bug OR error OR crash",
after: "2025-10-01",
limit: 50
});

2. 知识库构建与检索

从 Slack 历史消息中提取和组织团队知识。

场景描述

  • 将 Slack 讨论转化为可搜索的知识库
  • 快速找到历史技术方案和决策记录
  • 新员工快速了解项目历史

实施步骤

  1. 启用用户和频道缓存以提高准确性
  2. 使用 conversations_history 提取历史消息
  3. 使用 conversations_replies 获取完整讨论线程
  4. 使用 conversations_search_messages 实现语义搜索

最佳实践

  • 定期同步消息到本地数据库
  • 对消息内容进行向量化处理
  • 建立标签和分类系统

3. 自动化工作流与智能响应

根据特定条件触发自动化操作和消息响应。

场景描述

  • 监控告警频道,自动创建工单
  • 根据关键词触发自动回复
  • 定期发送团队报告和提醒

实施步骤

  1. 启用 conversations_add_message 工具
  2. 配置允许发送消息的频道白名单
  3. 监听特定频道的新消息
  4. 基于规则触发自动响应

安全配置

1
2
# 仅允许向特定频道发送消息
SLACK_MCP_ADD_MESSAGE_TOOL=C01234567,C89012345

4. 跨平台数据同步

将 Slack 数据同步到其他系统。

场景描述

  • 同步到 Notion 或 Confluence 知识库
  • 导出到数据分析平台
  • 备份重要频道的历史消息

实施步骤

  1. 使用 channels_list 获取所有频道
  2. 对每个频道使用 conversations_history 获取消息
  3. 格式转换并导出到目标系统
  4. 定期增量同步更新

技术架构

传输协议

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌─────────────────┐
│ MCP Client │
│ (Claude/IDE) │
└────────┬────────┘

┌────┴────┐
│ │
┌───▼──┐ ┌──▼───┐ ┌───────┐
│Stdio │ │ SSE │ │ HTTP │
└───┬──┘ └──┬───┘ └───┬───┘
│ │ │
└─────────┼──────────┘

┌───────▼────────┐
│ Slack MCP │
│ Server (Go) │
└───────┬────────┘

┌───────▼────────┐
│ Slack API │
└────────────────┘

认证流程

Stealth 模式

1
浏览器 → 提取 xoxc/xoxd → 配置环境变量 → MCP Server → Slack API

OAuth 模式

1
Slack OAuth → 获取 xoxp token → 配置环境变量 → MCP Server → Slack API

缓存机制

1
2
3
4
5
首次启动 → 拉取用户列表 → 缓存到内存
→ 拉取频道列表 → 缓存到内存

后续请求 → 使用缓存数据 → 提升搜索准确性
→ 定期刷新缓存 → 保持数据同步

与其他 MCP 服务器对比

特性 Slack MCP Discord MCP Teams MCP
平台 Slack Discord Microsoft Teams
认证方式 Stealth/OAuth Bot Token OAuth
搜索功能 ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐
企业支持 ✅ 完整 ⭐⭐ ✅ 完整
性能 ⭐⭐⭐⭐⭐ Go ⭐⭐⭐⭐ ⭐⭐⭐
缓存机制 ✅ 内置 ❌ 无 ⭐⭐
消息发送 ✅ 可配置 ✅ 是 ✅ 是

最佳实践

1. 安全性优先

1
2
3
4
5
6
7
# ✅ 好的做法
# 使用环境变量或密钥管理服务
export SLACK_MCP_XOXP_TOKEN=$(vault read -field=token secret/slack)

# ❌ 避免的做法
# 不要在代码或配置文件中硬编码令牌
SLACK_MCP_XOXP_TOKEN=xoxp-1234567890 # 危险!

2. 启用缓存以提升性能

1
2
3
4
5
6
7
8
# 推荐配置
SLACK_MCP_USERS_CACHE=true
SLACK_MCP_CHANNELS_CACHE=true

# 缓存的好处:
# - 提升消息搜索准确性
# - 减少 API 调用次数
# - 加快用户和频道信息查询

3. 谨慎配置消息发送

1
2
3
4
5
6
7
8
# 生产环境推荐:禁用或使用白名单
SLACK_MCP_ADD_MESSAGE_TOOL=disabled

# 如果需要发送消息,使用频道白名单
SLACK_MCP_ADD_MESSAGE_TOOL=C01234567,C89012345

# 测试环境可以全局启用
SLACK_MCP_ADD_MESSAGE_TOOL=enabled

4. 合理使用分页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// ✅ 好的做法:使用分页处理大量数据
let cursor = null;
const allMessages = [];

do {
const response = await conversations_history({
channel_id: "C01234567",
limit: 100,
cursor: cursor
});

allMessages.push(...response.messages);
cursor = response.next_cursor;
} while (cursor);

// ❌ 避免的做法:一次请求全部数据
const response = await conversations_history({
channel_id: "C01234567",
limit: 10000 // 可能失败或超时
});

5. OAuth 模式优于 Stealth 模式

生产环境

  • ✅ 使用 OAuth 模式(xoxp token)
  • ✅ 定期轮换令牌
  • ✅ 使用最小权限原则

开发/测试环境

  • ⭐ Stealth 模式可用于快速测试
  • ⚠️ 不建议长期使用

6. 设置合理的日志级别

1
2
3
4
5
6
7
8
# 开发环境
SLACK_MCP_LOG_LEVEL=debug

# 生产环境
SLACK_MCP_LOG_LEVEL=info

# 故障排查
SLACK_MCP_LOG_LEVEL=debug

常见问题

Q: 如何获取 xoxc 和 xoxd 令牌?

步骤

  1. 在浏览器中登录 Slack 工作空间
  2. 打开开发者工具(Chrome: F12 或 Cmd+Option+I)
  3. 切换到 Network(网络)标签
  4. 在 Slack 中执行任何操作(如切换频道)
  5. 在请求列表中查找包含 xoxc 的请求
  6. 在 Request Headers 中找到:
    • Authorization: Bearer xoxc-... (复制 xoxc 值)
    • Cookie: d=xoxd-... (复制 xoxd 值)

Q: 如何获取 OAuth 令牌(xoxp)?

方法1:通过 Slack App

  1. 创建 Slack App:https://api.slack.com/apps
  2. 配置 OAuth 权限:
    • channels:history - 读取公开频道消息
    • channels:read - 查看频道信息
    • groups:history - 读取私有频道消息
    • im:history - 读取 DM 消息
    • chat:write - 发送消息(如需要)
  3. 安装 App 到工作空间
  4. 复制 User OAuth Token(以 xoxp- 开头)

方法2:使用现有令牌

  • 如果有管理员权限,可以在 Slack App 管理页面找到

Q: 缓存有什么作用?为什么推荐启用?

缓存的重要性

  • 提升搜索准确性:消息搜索时能正确匹配用户名和频道名
  • 减少 API 调用:避免重复请求用户和频道信息
  • 提高响应速度:本地缓存比 API 请求快得多
  • 增强功能完整性:某些功能依赖缓存数据

不启用缓存的影响

  • ❌ 搜索功能受限
  • ❌ 用户名显示为 ID
  • ❌ 频道过滤不准确

Q: 如何限制消息发送到特定频道?

1
2
3
4
5
6
7
8
# 方法1:完全禁用(最安全)
SLACK_MCP_ADD_MESSAGE_TOOL=disabled

# 方法2:只允许特定频道
SLACK_MCP_ADD_MESSAGE_TOOL=C01234567,C89012345,C56789012

# 方法3:允许所有频道(谨慎)
SLACK_MCP_ADD_MESSAGE_TOOL=enabled

Q: 企业工作空间是否支持?

完全支持

  • 支持企业网格工作空间
  • 支持 SAML SSO
  • 支持企业级安全策略
  • 可配置代理服务器

注意事项

  • 某些企业策略可能限制 API 访问
  • 可能需要 IT 部门批准
  • 建议使用 OAuth 模式而非 Stealth 模式

Q: 性能如何?可以处理大量消息吗?

性能指标(基于 Go 实现):

  • ✅ 内存占用低(<50MB)
  • ✅ CPU 占用低
  • ✅ 支持高并发请求
  • ✅ 可处理百万级消息

优化建议

  1. 启用缓存减少 API 调用
  2. 使用分页处理大量数据
  3. 合理设置 limit 参数
  4. 考虑使用本地数据库存储历史消息

Q: 如何排查连接问题?

调试步骤

  1. 启用 debug 日志:
1
SLACK_MCP_LOG_LEVEL=debug ./slack-mcp-server
  1. 检查令牌有效性:
1
2
curl -H "Authorization: Bearer xoxp-your-token" \
https://slack.com/api/auth.test
  1. 检查网络连接:
1
2
# 如果使用代理
export SLACK_MCP_PROXY=http://your-proxy:8080
  1. 查看错误日志:
  • 401: 令牌无效或过期
  • 403: 权限不足
  • 429: API 调用频率限制

评分详情

维度 评分 说明
功能性 4.7/5.0 功能全面,覆盖主要使用场景
文档质量 4.5/5.0 文档清晰,示例丰富
性能 4.8/5.0 Go 实现,性能优秀
安全性 4.5/5.0 支持多种认证,消息发送可控
易用性 4.4/5.0 配置简单,但令牌获取需要技巧
维护状态 4.6/5.0 活跃维护,更新及时
综合评分 4.6/5.0 优秀的 Slack 集成方案

总结

Slack MCP Server 是一个功能强大、性能优秀的企业级 Slack 工作空间集成方案。它通过 Model Context Protocol 为 AI 应用提供了与 Slack 深度交互的能力,适合构建智能客服、知识库、工作流自动化等应用。

推荐指数: ⭐⭐⭐⭐⭐ (4.6/5)

适合你的情况

  • ✅ 需要程序化访问 Slack 数据
  • ✅ 构建团队知识库和搜索系统
  • ✅ 实现工作流自动化
  • ✅ 需要企业级功能支持
  • ✅ 对性能有较高要求

不适合的情况

  • ❌ 只需要简单的 Webhook 功能
  • ❌ 不需要历史消息检索
  • ❌ 无法获取 Slack 令牌
  • ❌ 实时流式消息处理(考虑 WebSocket 方案)

相关资源


更新时间: 2025-10-14
数据来源: GitHub, 质量评分: 4.6/5.0

© 2026 Generative AI Discovery All Rights Reserved.
Theme by hiero