使用说明
带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 dev
Docker部署
使用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
许可证
麻省理工学院
