关于 Slack MCP Server with SSE Transport
这是一款 TypeScript MCP 服务,通过 HTTP 上的 SSE 让 AI 助手访问 Slack 工作区功能。它提供频道、消息、线程、表情回应和用户信息工具,并支持 Docker 部署。
主要功能
- 01通过 HTTP/HTTPS 使用 SSE 传输
- 02列出公开频道
- 03发送消息并回复线程
- 04读取频道历史和线程回复
- 05为消息添加表情回应
- 06获取用户及个人资料
适用场景
- 01检索频道列表和近期消息
- 02发布动态或回复线程
- 03为 Slack 消息添加回应
- 04查询工作区用户及个人资料
MCP 相关
通过 `/sse` 端点向 MCP 客户端提供 Slack API 工具。客户端需要支持 SSE 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
使用 SSE 传输的 Slack MCP 服务
一个使用 Server-Sent Events(SSE)传输方式提供 Slack API 集成的模型上下文协议(MCP)服务。该服务允许 AI 助手通过简单的基于 HTTP 的接口与 Slack 工作区交互。
功能
- SSE 传输:使用 Server-Sent Events(SSE)代替 stdio,通过 HTTP/HTTPS 进行通信
- Slack API 集成:提供对 Slack API 核心功能的访问
- 简易 Web 界面:包含基础 Web UI 和运行状况检查端点
- Docker 支持:使用 Docker 完整容器化,便于部署
- TypeScript 实现:使用 TypeScript 构建,确保类型安全并改善开发体验
- 跨平台兼容性:适用于任何支持 SSE 传输的 MCP 客户端
先决条件
- Node.js 18 或更高版本
- 具有适当权限的 Slack 机器人令牌
- Slack 团队 ID
- Docker(可选,用于容器化部署)
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
SLACK_BOT_TOKEN | Slack 机器人用户 OAuth 令牌(以 xoxb- 开头) | 必填 |
SLACK_TEAM_ID | Slack 工作区/团队 ID | 必填 |
PORT | 服务运行的端口 | 3000 |
设置说明
获取 Slack 机器人令牌和团队 ID
-
创建 Slack 应用:
- 访问 Slack 应用页面
- 点击“Create New App”
- 选择“From scratch”
- 为应用命名并选择工作区
-
配置机器人令牌权限范围:
- 在应用设置中前往“OAuth & Permissions”
- 添加以下权限范围:
channels:history- 查看公开频道中的消息和其他内容channels:read- 查看频道基本信息chat:write- 以应用身份发送消息reactions:write- 为消息添加表情符号回应users:read- 查看用户及其基本信息
-
将应用安装到工作区:
- 点击“Install to Workspace”并授权应用
- 保存以
xoxb-开头的“Bot User OAuth Token”
-
获取团队 ID:
- 在 Web 浏览器中打开 Slack
- 登录后,查看浏览器中的 URL
- URL 格式类似于:
https://app.slack.com/client/T01234567/... - 团队 ID 是以 T 开头的字符串(例如,
T01234567)
本地开发
- 克隆代码库
- 安装依赖项:
npm install - 根据
.env.example创建.env文件:SLACK_BOT_TOKEN=xoxb-your-slack-bot-token SLACK_TEAM_ID=your-slack-team-id PORT=3000 - 构建 TypeScript 代码:
npm run build - 启动服务:
npm start
如需在开发时自动重新加载:
npm run dev
Docker 部署
使用 Docker Compose(推荐)
- 按上述说明创建包含 Slack 凭据的
.env文件 - 构建并运行容器:
docker compose up --build
使用预构建映像
docker run -p 3000:3000 \
-e SLACK_BOT_TOKEN=xoxb-your-slack-bot-token \
-e SLACK_TEAM_ID=your-slack-team-id \
ghcr.io/dvelopment/slack-mcp-server-sse:latest
有关更详细的 Docker 说明,包括发布到 GitHub Container Registry,请参阅 DOCKER.md。
服务端点
- SSE 端点:
/sse- 连接此端点以接收 SSE 事件 - 运行状况检查:
/health- 简单的运行状况检查端点(返回{"status":"ok"}) - 主页:
/- 显示服务信息的简单 HTML 页面
可用的 Slack API 工具
| 工具名称 | 描述 | 必需参数 |
|---|---|---|
slack_list_channels | 分页列出工作区中的公开频道 | 无(可选:limit、cursor) |
slack_post_message | 向 Slack 频道发送新消息 | channel_id、text |
slack_reply_to_thread | 回复 Slack 中的指定消息串 | channel_id、thread_ts、text |
slack_add_reaction | 为消息添加表情回应 | channel_id、timestamp、reaction |
slack_get_channel_history | 获取频道中的近期消息 | channel_id(可选:limit) |
slack_get_thread_replies | 获取消息串中的所有回复 | channel_id、thread_ts |
slack_get_users | 获取工作区中所有用户的列表 | 无(可选:cursor、limit) |
slack_get_user_profile | 获取特定用户的详细个人资料信息 | user_id |
连接到服务
Node.js 客户端示例
// Replace with your server URL
const SERVER_URL = 'http://localhost:3000/sse';
// Create EventSource to connect to the SSE endpoint
const eventSource = new EventSource(SERVER_URL);
// Handle connection open
eventSource.onopen = () => {
console.log('Connected to SSE server');
};
// Handle messages
eventSource.onmessage = (event) => {
console.log('Received message:', event.data);
try {
const data = JSON.parse(event.data);
console.log('Parsed data:', data);
} catch (error) {
console.log('Raw message (not JSON):', event.data);
}
};
// Handle errors
eventSource.onerror = (error) => {
console.error('SSE connection error:', error);
eventSource.close();
};
完整的客户端示例请参阅 examples 目录:
examples/client.js- Node.js 客户端示例examples/browser-client.html- 浏览器客户端示例
与 Claude MCP Wrapper 搭配使用
要将此服务与 Claude MCP wrapper 搭配使用:
claude_mcp_wrapper.sh -y docker run -i --rm -e SLACK_BOT_TOKEN -e SLACK_TEAM_ID mcp/slack
或使用基于 SSE 的连接:
claude_mcp_wrapper.sh -y http://localhost:3000/sse
许可证
MIT
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。