mcpField
S
Slack MCP Server with SSE Transport

Slack MCP Server with SSE Transport

本地服务
github.com/dVelopment通信协作081 周前更新

关于 Slack MCP Server with SSE Transport

这是一款 TypeScript MCP 服务,通过 HTTP 上的 SSE 让 AI 助手访问 Slack 工作区功能。它提供频道、消息、线程、表情回应和用户信息工具,并支持 Docker 部署。

主要功能

  1. 01通过 HTTP/HTTPS 使用 SSE 传输
  2. 02列出公开频道
  3. 03发送消息并回复线程
  4. 04读取频道历史和线程回复
  5. 05为消息添加表情回应
  6. 06获取用户及个人资料

适用场景

  1. 01检索频道列表和近期消息
  2. 02发布动态或回复线程
  3. 03为 Slack 消息添加回应
  4. 04查询工作区用户及个人资料

MCP 相关

通过 `/sse` 端点向 MCP 客户端提供 Slack API 工具。客户端需要支持 SSE 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"slack-mcp-server-sse": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"compose"
]
}
}
}
启动命令docker run -i --rm compose

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocicompose

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

使用 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_TOKENSlack 机器人用户 OAuth 令牌(以 xoxb- 开头)必填
SLACK_TEAM_IDSlack 工作区/团队 ID必填
PORT服务运行的端口3000

设置说明

获取 Slack 机器人令牌和团队 ID
  1. 创建 Slack 应用:

    • 访问 Slack 应用页面
    • 点击“Create New App”
    • 选择“From scratch”
    • 为应用命名并选择工作区
  2. 配置机器人令牌权限范围:

    • 在应用设置中前往“OAuth & Permissions”
    • 添加以下权限范围:
      • channels:history - 查看公开频道中的消息和其他内容
      • channels:read - 查看频道基本信息
      • chat:write - 以应用身份发送消息
      • reactions:write - 为消息添加表情符号回应
      • users:read - 查看用户及其基本信息
  3. 将应用安装到工作区:

    • 点击“Install to Workspace”并授权应用
    • 保存以 xoxb- 开头的“Bot User OAuth Token”
  4. 获取团队 ID:

    • 在 Web 浏览器中打开 Slack
    • 登录后,查看浏览器中的 URL
    • URL 格式类似于:https://app.slack.com/client/T01234567/...
    • 团队 ID 是以 T 开头的字符串(例如,T01234567)
本地开发
  1. 克隆代码库
  2. 安装依赖项:
    npm install
    
  3. 根据 .env.example 创建 .env 文件:
    SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
    SLACK_TEAM_ID=your-slack-team-id
    PORT=3000
    
  4. 构建 TypeScript 代码:
    npm run build
    
  5. 启动服务:
    npm start
    

如需在开发时自动重新加载:

npm run dev
Docker 部署
使用 Docker Compose(推荐)
  1. 按上述说明创建包含 Slack 凭据的 .env 文件
  2. 构建并运行容器:
    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

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。