关于 slack-mcp-server
slack-mcp-server 是一个用于访问 Slack API 的 MCP 服务,让 AI 助手可以通过统一接口读取频道、发送消息和搜索内容。它同时支持 Stdio 与 Streamable HTTP 两种传输方式。
主要功能
- 01频道与消息读取工具
- 02消息发送与线程回复
- 03表情反应添加
- 04用户资料批量查询
- 05支持多条件的消息搜索
- 06可选的安全搜索模式
适用场景
- 01让 AI 助手汇总频道近期消息
- 02通过 AI 助手在线程中回复或添加反应
- 03按用户、日期和频道筛选搜索历史消息
MCP 相关
该项目是 MCP 服务,向 MCP 客户端暴露 slack_list_channels、slack_post_message、slack_search_messages 等 Slack 工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
slack-mcp-server
一个用于访问 Slack API 的 MCP(Model Context Protocol) 服务。此服务允许 AI 助手通过标准化接口与 Slack API 交互。
传输方式支持
此服务支持传统和现代 MCP 传输方式:
- Stdio 传输(默认):基于进程的通信方式,用于本地集成
- Streamable HTTP 传输:基于 HTTP 的通信方式,用于 Web 应用和远程客户端
功能
可用工具:
slack_list_channels- 分页列出工作区中的公开频道slack_post_message- 在 Slack 频道中发布新消息slack_reply_to_thread- 回复 Slack 中的特定消息线程slack_add_reaction- 为消息添加表情回应slack_get_channel_history- 获取频道中的近期消息slack_get_thread_replies- 获取消息线程中的所有回复slack_get_users- 获取工作区中所有用户的基本个人资料信息slack_get_user_profiles- 批量获取多位用户的个人资料信息(适用于批量操作)slack_search_messages- 使用强大的筛选条件搜索工作区中的消息:- 基本查询搜索
- 位置筛选条件:
in_channel - 用户筛选条件:
from_user、with - 日期筛选条件:
before(YYYY-MM-DD)、after(YYYY-MM-DD)、on(YYYY-MM-DD)、during(例如,“July”“2023”) - 内容筛选条件:
has(表情回应)、is(已保存/线程) - 按相关性评分或时间戳排序
快速开始
安装
npm install @ubie-oss/slack-mcp-server
注意:此项目现已托管在 GitHub Registry,因此你需要提供 PAT。
配置
你需要设置以下环境变量:
SLACK_BOT_TOKEN:Slack Bot User OAuth TokenSLACK_USER_TOKEN:Slack User OAuth Token(某些功能需要此令牌,例如消息搜索)SLACK_SAFE_SEARCH(可选):设为true时,会自动从搜索结果中排除私密频道、私信和群组私信。此设置由服务端强制执行,客户端无法覆盖。
你也可以创建 .env 文件来设置这些环境变量:
SLACK_BOT_TOKEN=xoxb-your-bot-token
SLACK_USER_TOKEN=xoxp-your-user-token
SLACK_SAFE_SEARCH=true # Optional: Enable safe search mode
使用方法
启动 MCP 服务
Stdio 传输(默认):
npx @ubie-oss/slack-mcp-server
Streamable HTTP 传输:
npx @ubie-oss/slack-mcp-server -port 3000
你也可以使用 node 运行已安装的模块:
# Stdio transport
node node_modules/.bin/slack-mcp-server
# HTTP transport
node node_modules/.bin/slack-mcp-server -port 3000
命令行选项:
-port <number>:在指定端口上使用 Streamable HTTP 传输启动-h, --help:显示帮助信息
客户端配置
用于 Stdio 传输(Claude Desktop 等):
{
"slack": {
"command": "npx",
"args": [
"-y",
"@ubie-oss/slack-mcp-server"
],
"env": {
"NPM_CONFIG_//npm.pkg.github.com/:_authToken": "<your-github-pat>",
"SLACK_BOT_TOKEN": "<your-bot-token>",
"SLACK_USER_TOKEN": "<your-user-token>",
"SLACK_SAFE_SEARCH": "true"
}
}
}
用于 Streamable HTTP 传输(Web 应用):
启动服务:
SLACK_BOT_TOKEN=<your-bot-token> SLACK_USER_TOKEN=<your-user-token> npx @ubie-oss/slack-mcp-server -port 3000
连接到:http://localhost:3000/mcp
详细的客户端示例请参阅 examples/README.md。
实现模式
此服务采用以下实现模式:
-
使用 Zod 模式定义请求和响应
- 请求模式:定义输入参数
- 响应模式:定义仅包含必要字段的响应
-
实现流程:
- 使用 Zod 模式验证请求
- 调用 Slack WebAPI
- 使用 Zod 模式解析响应,将其限制为必要字段
- 以 JSON 格式返回
例如,slack_list_channels 的实现会使用 ListChannelsRequestSchema 解析请求,调用 slackClient.conversations.list,并使用 ListChannelsResponseSchema 解析响应后返回。
开发
可用脚本
npm run dev- 在开发模式下启动服务并启用热重载npm run build- 为生产环境构建项目npm run start- 启动生产服务npm run lint- 运行代码检查(ESLint 和 Prettier)npm run fix- 自动修复代码检查问题
贡献
- Fork 此仓库
- 创建功能分支
- 运行测试和代码检查:
npm run lint - 提交更改
- 推送到分支
- 创建 Pull Request
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。