使用说明
Slack MCP服务器
一种模型上下文协议(MCP)服务器,提供对Slack对话、线程和工作区信息的编程访问。专为像Claude这样的人工智能助手设计,通过标准化的界面与您的Slack工作区进行交互。
什么是MCP?
这 模型上下文协议 是一个开放标准,使人工智能助手能够安全地访问外部数据源和工具。此服务器实现了MCP,使Claude可以直接访问您的Slack工作区。
特性
📨 消息操作
- 读取频道消息:通过灵活的基于时间的过滤从任何渠道获取最新消息
- 读取线程消息:访问完整的对话线程,包括所有回复
- 获取消息固定链接:生成指向特定消息的永久、可共享链接
🔍 发现和搜索
- 列出您的频道:枚举您所属的所有频道(公共、私有、DM、组DM)
- 搜索对话:使用Slack的搜索功能查找提及或涉及您的邮件
📊 元数据和上下文
- 获取频道信息:查看频道详细信息、主题、目的、成员数量和设置
- 获取用户信息:查找用户资料、电子邮件、标题、时区和状态信息
快速开始
选项1:从PyPI安装(推荐)
使用此MCP服务器的最简单方法是直接从PyPI安装:
# Install via pip
pip install slack-mcp-server-v2
# Or install via uvx (recommended for MCP servers)
uvx slack-mcp-server-v2
选项2:从源代码安装
# Clone the repository
git clone https://github.com/stevenvo/slack-mcp-server.git
cd slack-mcp-server
# Install dependencies
pip install -r requirements.txt
安装后,您需要设置身份验证(见下文)。
认证
选项1:用户令牌(推荐)
用户令牌使用您的个人Slack权限,可以访问您所属的所有频道。
- 首选https://api.slack.com/apps
- 创建新应用程序(或使用现有应用程序)
- 导航到“OAuth和权限”
- 添加以下内容 用户令牌范围:
channels:history-查看公共频道中的消息channels:read-查看基本频道信息groups:history-查看私人频道中的消息groups:read-查看基本私人频道信息im:history-查看直接消息中的消息im:read-查看基本DM信息mpim:history-查看组DM中的消息mpim:read-查看基本组DM信息users:read-查看用户信息search:read-搜索邮件
- 将应用程序安装到您的工作区
- 复制“用户OAuth令牌”(以开头
xoxp-)
选项2:机器人令牌
Bot Token的限制更为有限,但更易于设置以实现团队范围内的访问。
- 按照上述步骤1-2进行操作
- 添加 Bot令牌范围 相反(列表相同,但在bot部分)
- 安装应用程序
- 复制“Bot用户OAuth令牌”(以开头
xoxb-) - 邀请机器人加入您想要阅读的频道:
/invite @YourBotName
配置环境
创建一个 .env 文件:
cp .env.example .env
编辑 .env 并添加您的令牌:
# Use one of these:
SLACK_USER_TOKEN=xoxp-your-user-token-here
# OR
SLACK_BOT_TOKEN=xoxb-your-bot-token-here
Claude代码的配置
通过编辑您的 ~/.claude.json 文件:
使用PyPI包(推荐)
{
"mcpServers": {
"slack": {
"command": "uvx",
"args": ["slack-mcp-server-v2"],
"env": {
"SLACK_USER_TOKEN": "xoxp-your-user-token-here",
"SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
}
}
}
}
使用本地安装
如果从源代码安装:
{
"mcpServers": {
"slack": {
"command": "python",
"args": ["/path/to/slack-mcp-server/server.py"],
"env": {
"SLACK_USER_TOKEN": "xoxp-your-user-token-here",
"SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
}
}
}
}
使用Bot令牌
如果您更喜欢使用机器人令牌而不是用户令牌:
{
"mcpServers": {
"slack": {
"command": "uvx",
"args": ["slack-mcp-server-v2"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token-here",
"SLACK_WORKSPACE_URL": "https://your-workspace.slack.com"
}
}
}
}
备注:记得邀请你的机器人加入频道: /invite @YourBotName
验证安装
重新启动Claude Code并验证服务器是否正在运行:
claude mcp list
你应该看看 slack 在活动MCP服务器列表中。
可用工具
此服务器提供7个MCP工具用于与Slack交互:
📬 read_channel_messages
使用灵活的时间过滤从任何Slack频道检索最近的消息。
参数:
| 名称 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
channel_id |
string | ✅ | - | 空闲频道ID(例如。, C1234567890) |
lookback_hours |
编号 | ❌ | 24小时回顾过去 | |
limit |
编号 | ❌ | 100 | 要检索的最大消息数(最大值:1000) |
自然语言示例:
- “显示过去24小时内来自#general频道的消息”
- “读取来自信道C1234567890的最后48小时的消息”
- “从C070PDRHQS1获取最近50条消息”
退货: 带有时间戳、用户提及、线程指示器、反应和永久链接的格式化消息。
💬 read_thread_messages
阅读对话线程中的所有消息,包括父消息和所有回复。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
channel_id |
string | ✅ | 线程所在的通道ID |
thread_ts |
string | ✅ | 线程时间戳( ts 父消息的字段) |
自然语言示例:
- “读取通道C1234567890中时间戳为1699564800.123456的完整线程”
- “显示对消息ts 1699564800.123456的所有答复”
退货: 用父消息和所有回复完成线程,并用时间戳和反应格式化。
📋 get_channel_info
获取有关Slack频道的详细元数据。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
channel_id |
string | ✅ | 松弛频道ID |
自然语言示例:
- “获取有关频道C1234567890的信息”
- “显示#工程频道的详细信息”
退货: 频道名称、ID、创建日期、成员数、隐私状态、主题和目的。
👤 get_user_info
查找任何Slack用户的详细个人资料信息。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
user_id |
string | ✅ | Slack用户ID(例如。, U1234567) |
自然语言示例:
- “获取用户U1234567的信息”
- “显示@john.doe的详细信息”
退货: 用户的真实姓名、显示名称、电子邮件、标题、状态、时区和管理员/机器人标志。
📑 list_my_channels
列出您所属的所有频道,并支持不同的频道类型。
参数:
| 名称 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
types |
string | ❌ | public_channel,private_channel |
逗号分隔的通道类型 |
支持的类型:
public_channel-公共频道private_channel-私人频道mpim-组直接消息im-直接消息
自然语言示例:
- “列出我的所有频道”
- “显示我所在的所有私人频道”
- “列出我的所有DM”
退货: 频道名称、ID、成员计数和隐私指示器。
🔍 search_my_conversations
在所有提及或涉及你的对话中搜索消息。
参数:
| 名称 | 类型 | 必填 | 默认 | 描述 |
|---|---|---|---|---|
query |
string | ✅ | - | 搜索词 |
count |
编号 | ❌ | 20 | 结果数(最大值:100) |
自然语言示例:
- “在我的对话中搜索‘部署’”
- “查找上周提到‘bug修复’的消息”
- “搜索有关‘Q4计划’的消息”
退货: 将消息与频道名称、用户信息、时间戳和永久链接进行匹配。
🔗 get_message_permalink
生成指向特定Slack消息的永久、可共享链接。
参数:
| 名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
channel_id |
string | ✅ | 频道ID |
message_ts |
string | ✅ | 消息时间戳 |
自然语言示例:
- “获取频道C1234567890中消息1699564800.123456的永久链接”
- “生成指向此消息的链接”
退货: 即使工作区的URL发生变化,也能正常工作的永久URL。
用法示例
在Claude Code中配置后,您可以使用自然语言与Slack工作区进行交互。以下是一些示例查询:
读取消息
👤 "Show me the latest messages from #engineering"
🤖 [Claude fetches and displays recent messages with timestamps, users, and links]
👤 "What were the last 100 messages in the #product-updates channel from the past week?"
🤖 [Claude retrieves messages from the last 168 hours with limit of 100]
以下线索
👤 "Read the full thread that starts at timestamp 1699564800.123456 in channel C1234567890"
🤖 [Claude displays the entire conversation thread with all replies]
发现和搜索
👤 "List all channels I'm a member of"
🤖 [Claude shows all your public and private channels with member counts]
👤 "Search my Slack conversations for 'quarterly review'"
🤖 [Claude searches across all your messages and shows matches with context]
👤 "Find mentions of 'production deployment' in my conversations"
🤖 [Claude uses Slack search to find relevant messages]
获取上下文
👤 "Get info about channel C1234567890"
🤖 [Claude shows channel name, topic, member count, etc.]
👤 "Who is user U1234567?"
🤖 [Claude displays user profile with email, title, timezone]
👤 "Get me a permanent link to message 1699564800.123456 in #general"
🤖 [Claude generates a shareable permalink]
实用工作流程
跟进一个项目:
👤 "Show me all messages from #project-alpha in the last 3 days"
找出那个重要的决定:
👤 "Search for messages about 'API migration decision'"
获取入职背景:
👤 "List all channels I'm in and show me the purpose of each"
查找频道ID
方法1:从Slack URL
当你在频道中时,URL看起来像:
https://your-workspace.slack.com/archives/C1234567890/p1234567890
之后的部分 /archives/ 是频道ID: C1234567890
方法2:使用MCP服务器
问克劳德:
List all my channels
方法3:在Slack中单击鼠标右键
- 右键单击频道名称
- 点击“复制链接”
- 从URL中提取频道ID
需求
- python:3.10或更高
- Slack工作区:创建和配置Slack应用程序的管理员权限
- 克劳德代码:支持MCP的最新版本
- 操作系统:带WSL的macOS、Linux或Windows
故障排除
“缺少必需的作用域”错误
您的Slack应用程序需要配置正确的OAuth作用域。
解决方案:
- 首选https://api.slack.com/apps并选择您的应用程序
- 导航到“OAuth和权限”
- 确保已添加“身份验证”部分中列出的所有必需作用域
- 将应用程序重新安装到您的工作区
- 复制新令牌
“未找到频道”错误
对于Bot令牌:
# Invite the bot to the channel first
/invite @YourBotName
对于用户令牌:
- 确认您是该频道的成员
- 检查频道ID是否正确(请参阅“查找频道ID”部分)
“未通过身份验证”错误
检查您的配置:
# Verify token is set correctly (check ~/.claude.json)
cat ~/.claude.json | grep -A 5 "slack"
# Ensure no extra whitespace
echo "$SLACK_USER_TOKEN" | wc -c
常见问题:
- 令牌已过期或被撤销
- 令牌字符串中的额外空格或换行符
- 令牌类型错误(用户vs机器人)
- JSON中未正确引用令牌
MCP服务器未运行
验证服务器是否已加载:
# List all MCP servers
claude mcp list
# Check if slack server is running
claude mcp list | grep slack
检查日志是否有错误:
# View recent MCP server logs
tail -f ~/.claude/debug/*.log
# Filter for slack-related errors
tail -f ~/.claude/debug/*.log | grep -i slack
常见解决方案:
- 完全重新启动Claude代码
- 检查
~/.claude.json语法是有效的JSON - 验证Python版本:
python --version(必须为3.10+) - 手动测试服务器:
python server.py(如果从源安装)
SSL证书错误
如果您支持公司代理(如Zscaler):
# Set SSL certificate environment variable
export SSL_CERT_FILE=/path/to/your/ca-bundle.pem
export REQUESTS_CA_BUNDLE=/path/to/your/ca-bundle.pem
# Then reinstall
pip install slack-mcp-server-v2
速率限制
Slack API有费率限制。如果你打他们:
- 减少
limit参数在read_channel_messages - 增加
lookback_hours获取更少的消息 - 请等待几分钟,然后重试
利率限制指标:
Error: ratelimited
解决方案: 服务器将自动处理速率限制,但您可能需要等待。
安全与隐私
令牌安全
- 从不将令牌提交到版本控制 -The
.env默认情况下,文件被忽略 - 立即撤销受损代币 在https://api.slack.com/apps
- 使用环境变量 在生产中,永远不要硬编码令牌
- 定期旋转令牌 作为安全最佳实践的一部分
数据访问
用户令牌:
- 可以访问您在Slack中看到的所有内容
- 使用您的个人权限
- 查看您所属的所有频道
- 更便于个人使用
机器人令牌:
- 仅限于邀请机器人的渠道
- 与个人身份分离
- 更适合团队/共享设置
- 更精细的控制
企业环境
如果您在企业环境中使用此功能:
- 在创建Slack应用程序之前,请咨询您的IT/安全团队
- 了解数据保留和合规政策
- 考虑使用机器人令牌进行审计跟踪
- 可能需要SSL证书配置(请参阅故障排除)
局限性
- 只读:此服务器只读取数据,不能发布消息或修改内容
- 费率限制:受Slack的API速率限制(第3层:每分钟约50个请求)
- 令牌范围:只能访问令牌有权查看的频道/对话
- 消息历史记录:仅限于Slack工作区的邮件保留策略
贡献
欢迎投稿!以下是您可以提供帮助的方式:
报告问题
发现错误或有功能请求?
- 检查现有问题https://github.com/stevenvo/slack-mcp-server/issues
- 使用以下内容创建新问题:
- 问题/特征的清晰描述
- 复制步骤(针对bug)
- 预期行为与实际行为
- 您的环境(Python版本、操作系统、Claude代码版本)
拉取请求
- 分叉存储库
- 创建要素分支:
git checkout -b feature/amazing-feature - 进行更改
- 彻底测试
- 以明确的信息承诺:
git commit -m "Add amazing feature" - 推你的叉子:
git push origin feature/amazing-feature - 打开拉取请求
开发环境设置
# Clone your fork
git clone https://github.com/YOUR_USERNAME/slack-mcp-server.git
cd slack-mcp-server
# Install in development mode
pip install -e .
# Make changes and test
python server.py
更新日志
v0.1.0(2025-01-06)
- 初始版本
- 阅读Slack对话的7个核心工具
- 支持用户和机器人代币
- 发布到PyPI和MCP注册表
- 全面的文件
路线图
未来潜在的增强功能:
- []支持Slack企业网格
- []按用户或反应筛选消息
- []将对话导出为不同格式
- []支持Slack Connect频道
- []缓存以减少API调用
- []Webhook支持实时更新
欢迎提出建议 GitHub问题!
相关项目
- 模型上下文协议 -MCP规范
- MCP注册表 -浏览更多MCP服务器
- Slack Python SDK -底层库
- 克劳德代码 -支持MCP的AI助手
支持
- 文档:你在读!
- 问题: https://github.com/stevenvo/slack-mcp-server/issues
- 讨论: https://github.com/stevenvo/slack-mcp-server/discussions
- 松弛API文档: https://api.slack.com/docs
许可证
MIT许可证-请参阅 许可证 文件以获取详细信息。
版权所有(c)2025吴
由以下材料制成❤️ 对于MCP社区
如果你觉得这有用,请⭐ 在GitHub上标记存储库!