关于 Slack MCP Server
Slack MCP Server 让 LLM 搜索、读取和管理工作区内容。它结合操作工具、工作区资源和面向常见团队流程的提示词。
主要功能
- 01浏览频道及频道详情
- 02读取消息和讨论串
- 03搜索工作区消息
- 04列出用户和共享文件
- 05添加或移除消息表情回应
- 06工作区资源与流程提示词
适用场景
- 01查找特定主题的讨论
- 02查看近期频道动态
- 03汇总每日站会信息
- 04查询工作区成员或频道
MCP 相关
向 MCP 客户端提供 Slack 工作区工具,可操作频道、消息、用户、文件和表情回应,并提供工作区资源与流程提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Slack MCP 服务
一个全面的模型上下文协议(MCP)服务,可让大模型与 Slack 工作区交互。此服务提供搜索、读取和管理 Slack 内容的工具,以及用于获取工作区信息的资源和适用于常见工作流的提示词。
功能
🛠️ 工具(11 个)
- 频道管理
slack_list_channels- 浏览公开和私密频道slack_get_channel_info- 获取详细的频道信息slack_list_bookmarks- 列出频道中的书签
- 消息操作
slack_list_messages- 读取频道和讨论串中的消息slack_list_threads- 查找讨论串slack_search_messages- 搜索整个工作区
- 用户管理
slack_get_user_info- 获取详细的用户信息slack_list_users- 列出工作区用户
- 内容与回应
slack_list_files- 浏览共享文件slack_add_reaction- 添加表情回应slack_remove_reaction- 移除表情回应
📚 资源(4 个)
slack://workspace- 工作区信息slack://me- 当前机器人用户信息slack://users- 完整的用户目录slack://channels- 所有可访问的频道
💡 提示词(5 个)
find_recent_discussions- 搜索有关特定主题的讨论channel_activity_summary- 总结频道活动team_member_activity- 查看团队成员的参与情况daily_standup_helper- 收集每日站会信息knowledge_search- 查找机构知识
快速开始
1. 创建 Slack 应用
- 前往 api.slack.com/apps,然后点击“Create New App”
- 选择“From scratch”,并为应用命名
- 选择要安装应用的工作区
2. 配置 OAuth 权限范围
在应用设置中,前往“OAuth & Permissions”,并添加以下机器人令牌权限范围:
必要权限范围:
channels:read- 查看频道基本信息channels:history- 查看公开频道中的消息groups:read- 查看私密频道的基本信息groups:history- 查看私密频道中的消息users:read- 查看工作区中的人员users:read.email- 查看电子邮件地址team:read- 查看工作区信息
实现完整功能所需的其他权限范围:
im:read- 查看私信im:history- 查看私信中的消息mpim:read- 查看群组私信mpim:history- 查看群组私信中的消息search:read- 搜索消息files:read- 查看文件reactions:read- 查看表情回应reactions:write- 添加和移除回应bookmarks:read- 查看书签
3. 安装应用
- 在“OAuth & Permissions”中,点击“Install to Workspace”
- 复制“Bot User OAuth Token”(以
xoxb-开头)
4. 配置 Claude Desktop
将以下内容添加到 Claude Desktop 配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"slack": {
"command": "npx",
"args": ["-y", "@sergdev1/slack-mcp-server"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-your-bot-token",
"SLACK_TEAM_ID": "T01234567"
}
}
}
}
使用示例
使用工具
"Search for messages about the deployment"
"List all channels I have access to"
"Show me threads in #engineering from the last week"
"Get information about user U1234567890"
"Add a thumbsup reaction to message 1234567890.123456 in channel C1234567890"
使用资源
资源可帮助快速访问常用信息:
"Check the workspace resource for company info"
"Look at the users resource to see all team members"
"Review the channels resource for a complete channel list"
使用提示词
提示词可为常见任务提供引导式工作流:
"Use the find_recent_discussions prompt to search for budget talks"
"Run the channel_activity_summary for #general and #random"
"Execute daily_standup_helper for the #engineering channel"
"Use knowledge_search to find our deployment process"
详细 API 参考
工具
slack_list_channels
列出 Slack 工作区中的频道。
参数:
exclude_archived(布尔值,可选):排除已归档的频道(默认值:true)types(字符串,可选):频道类型(默认值:"public_channel,private_channel")limit(数字,可选):要返回的频道数量上限(默认值:100)cursor(字符串,可选):分页游标
slack_search_messages
搜索工作区中的消息。
参数:
query(字符串,必填):包含 Slack 修饰符的搜索查询count(数字,可选):每页结果数(默认值:20)page(数字,可选):页码(默认值:1)highlight(布尔值,可选):是否高亮匹配项(默认值:true)sort(字符串,可选):按 'score' 或 'timestamp' 排序(默认值:'score')sort_dir(字符串,可选):排序方向,'asc' 或 'desc'(默认值:'desc')
搜索修饰符:
from:@username- 来自特定用户的消息in:#channel- 特定频道中的消息after:2024-01-01- 日期之后的消息before:2024-12-31- 日期之前的消息has:link- 包含链接的消息has:file- 包含文件的消息
slack_add_reaction / slack_remove_reaction
管理消息上的表情符号回应。
参数:
channel(字符串,必填):频道 IDtimestamp(字符串,必填):消息时间戳name(字符串,必填):不带冒号的表情符号名称(例如,'thumbsup')
资源
通过 URI 访问资源,并返回 JSON 数据:
- slack://workspace:返回工作区 ID、名称、域名和企业信息
- slack://me:返回机器人用户 ID、名称和身份验证详情
- slack://users:返回所有活跃用户及其个人资料
- slack://channels:返回所有可访问频道及其元数据
提示词
每个提示词都接受参数,并为大模型返回结构化消息:
find_recent_discussions
topic(字符串,必填):要搜索的主题days(字符串,可选):回溯天数(默认值:"7")
channel_activity_summary
channel_names(字符串,必填):以逗号分隔的频道名称hours(字符串,可选):要分析的小时数(默认值:"24")
高级配置
环境变量
SLACK_BOT_TOKEN(必填):你的 Slack 机器人令牌SLACK_TEAM_ID(可选):用于团队信息的工作区 ID
安全最佳实践
-
令牌安全
- 切勿将令牌提交到版本控制系统
- 使用环境变量存储敏感数据
- 定期轮换令牌
-
频道访问权限
- 必须将机器人邀请到私有频道:
/invite @your-bot-name - 私信需要用户明确授权
- 必须将机器人邀请到私有频道:
-
速率限制
- 遵守 Slack 的速率限制
- 对重试实施指数退避
- 缓存频繁访问的数据
开发
项目结构
slack-mcp-server/
├── src/
│ ├── index.ts # Main server entry point
│ ├── slack-client.ts # Slack API client wrapper
│ ├── tools.ts # Tool implementations
│ ├── resources.ts # Resource handlers
│ ├── prompts.ts # Prompt definitions
│ └── types.ts # TypeScript interfaces
├── package.json
├── tsconfig.json
└── README.md
从源代码构建
# Clone the repository
git clone https://github.com/sergdev1/slack-mcp-server.git
cd slack-mcp-server
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run dev
测试
# Set your Slack token
export SLACK_BOT_TOKEN="xoxb-your-bot-token"
export SLACK_TEAM_ID="T01234567" # Optional
# Run the server
npm test
# Use MCP Inspector for testing
npx @modelcontextprotocol/inspector
扩展服务
添加新工具:
- 在
tools.ts中定义架构 - 实现处理函数
- 使用
server.tool()注册
添加新资源:
- 在
resources.ts中定义处理函数 - 使用
server.resource()注册
添加新提示词:
- 在
prompts.ts中定义模板 - 使用
server.prompt()注册
故障排除
常见问题
“channel_not_found” 错误
- 确保机器人是该频道的成员
- 确认使用的是频道 ID,而不是名称
- 确认频道未被归档
“missing_scope” 错误
- 为你的应用添加所需的 OAuth 权限范围
- 将应用重新安装到工作区
- 某些权限范围需要管理员批准
未返回消息
- 确认机器人具有对应频道类型的历史记录权限范围
- 检查时间范围参数
- 确保指定范围内的频道有消息
搜索无法使用
- 需要
search:read权限范围 - 搜索索引可能会有延迟
- 检查查询语法是否有效
调试模式
通过设置以下内容启用调试日志:
DEBUG=slack-mcp-server npm run dev
贡献
欢迎贡献!请:
- Fork 此仓库
- 创建功能分支(
git checkout -b feature/amazing-feature) - 提交更改(
git commit -m 'Add amazing feature') - 推送到该分支(
git push origin feature/amazing-feature) - 创建 Pull Request
代码风格
- 使用 TypeScript 确保类型安全
- 遵循现有代码模式
- 为公共 API 添加 JSDoc 注释
- 为新功能编写测试
许可证
MIT 许可证 - 详情请参阅 LICENSE 文件
致谢
- 基于 Model Context Protocol 构建
- 使用 Slack Web API
- 由 @slack/web-api 提供支持
更新日志
v2.0.0
- 新增 8 个工具(搜索、用户、文件、回应)
- 新增 4 个资源,便于快速访问数据
- 新增 5 个适用于常见工作流的提示词
- 改进错误处理和验证
- 改进 TypeScript 类型
- 模块化代码架构
v1.0.0
- 首次发布
- 基础频道、消息和线程工具
为 MCP 社区倾心打造 ❤️
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。