Slack MCP服务器

一个基于服务器发送事件(SSE)传输的Slack API集成服务器,允许AI助手通过简单的HTTP接口与Slack工作区交互。

  • by dVelopment
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 dvelopment/slack-mcp-server-sse

使用说明

带SSE传输的Slack MCP服务器

模型上下文协议(MCP)服务器,使用服务器-事件(SSE)传输提供Slack API集成。该服务器允许AI助手通过简单的基于HTTP的界面与Slack工作区进行交互。

特性

  • SSE 运输:使用服务器发送事件(SSE)而不是stdio,启用通过HTTP/HTTPS的通信
  • Slack API集成:提供对Slack API基本功能的访问
  • 简单的Web界面:包括一个基本的web UI和健康检查端点
  • Docker支持:使用Docker完全容器化,便于部署
  • TypeScript实现:使用TypeScript构建,实现类型安全和更好的开发人员体验
  • 跨平台兼容性:适用于支持SSE传输的任何MCP客户端

先决条件

  • Node.js 18或更高版本
  • 具有适当权限的Slack Bot令牌
  • Slack团队ID
  • Docker(可选,用于容器化部署)

环境变量

变量 描述 默认值
SLACK_BOT_TOKEN 您的Slack Bot用户OAuth令牌(以开头 xoxb-) 必需
SLACK_TEAM_ID 您的Slack工作区/团队ID 必需
PORT 服务器将运行的端口 3000

安装说明

获取Slack Bot令牌和团队ID

  1. 创建Slack应用程序:

    • 访问 Slack应用程序页面
    • 点击“创建新应用”
    • 选择“从头开始”
    • 命名您的应用程序并选择您的工作区
  2. 配置Bot令牌范围:

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

    • 点击“安装到工作区”并授权应用程序
    • 保存以开头的“Bot用户OAuth令牌” xoxb-
  4. 获取您的团队ID:

    • 在web浏览器中打开Slack
    • 登录后,在浏览器中检查URL
    • URL的格式如下: https://app.slack.com/client/T01234567/...
    • 您的团队ID是以T开头的字符串(例如。, T01234567)

地方发展

  1. 克隆存储库
  2. 安装依赖项:
    npm install
    
  3. 创建一个 .env 文件基于 .env.example:
    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. 创建一个 .env 如上所示,使用您的Slack凭据进行文件
  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容器注册表,请参阅 医生.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包装器一起使用

要将此服务器与Claude MCP包装器一起使用:

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

许可证

麻省理工学院