带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
- 创建Slack应用程序:
- 访问 Slack应用程序页面 - 点击“创建新应用” - 选择“从头开始” - 命名您的应用程序并选择您的工作区
- 配置Bot令牌范围:
- 导航到应用程序设置中的“OAuth和权限” - 添加以下范围: - channels:history -查看公共频道中的消息和其他内容 - channels:read -查看基本频道信息 - chat:write -以应用程序的身份发送消息 - reactions:write -在消息中添加表情符号反应 - users:read -查看用户及其基本信息
- 将应用程序安装到工作区:
- 点击“安装到工作区”并授权应用程序 - 保存以开头的“Bot用户OAuth令牌” xoxb-
- 获取您的团队ID:
- 在web浏览器中打开Slack - 登录后,在浏览器中检查URL - URL的格式如下: https://app.slack.com/client/T01234567/... - 您的团队ID是以T开头的字符串(例如。, T01234567)
地方发展
- 克隆存储库
- 安装依赖项:
npm install- 创建一个
.env文件基于.env.example:
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 devDocker部署
使用Docker Compose(推荐)
- 创建一个
.env如上所示,使用您的Slack凭据进行文件 - 构建并运行容器:
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许可证
麻省理工学院

