使用说明
slack-mcp服务器
免责声明
该项目包括 代码 最初由Anthropic开发,并在MIT许可证下发布。dudztroyer添加了大量修改和新功能,并根据Apache许可证2.0版获得许可。
概述
用于与Slack工作区交互的模型上下文协议(MCP)服务器。此服务器提供列出频道、发布消息(具有可选的标记格式)、回复线程(具有可选标记格式),添加反应,获取频道历史记录,获取线程回复和管理用户的工具。
可用工具
-
slack_list_channels
- 列出工作区中的公共或预定义频道
- 可选输入:
limit(数字,默认值:100,最大值:200):要返回的最大通道数cursor(string):下一页的分页光标
- 返回:通道列表及其ID和信息
-
slack_post_message
- 在Slack频道发布新消息
- 所需输入:
channel_id(string):要发布的频道的IDtext(string):要发布的消息文本
- 返回:消息发布确认和时间戳
-
slack_reply_to_tothread
- 回复特定消息线程
- 所需输入:
channel_id(string):包含线程的通道thread_ts(string):父消息的时间戳text(string):回复文本
- 返回:回复确认和时间戳
-
slack_add_action
- 在消息中添加表情符号反应
- 所需输入:
channel_id(string):包含消息的通道timestamp(string):要响应的消息时间戳reaction(字符串):不带冒号的表情符号名称
- 返回:反应确认
-
slack_get_channel_历史
- 从频道获取最新消息
- 所需输入:
channel_id(string):通道ID
- 可选输入:
limit(数字,默认值:10):要检索的邮件数
- 返回:消息及其内容和元数据的列表
-
slack_get_thread_replys
- 获取消息线程中的所有回复
- 所需输入:
channel_id(string):包含线程的通道thread_ts(string):父消息的时间戳
- 返回:回复列表及其内容和元数据
-
slack_get_users
- 获取包含基本配置文件信息的工作区用户列表
- 可选输入:
cursor(string):下一页的分页光标limit(数字,默认值:100,最大值:200):可返回的最大用户数
- 返回:用户及其基本配置文件的列表
-
slack_get_user_profile
- 获取特定用户的详细个人资料信息
- 所需输入:
user_id(string):用户的ID
- 返回:详细的用户配置文件信息
-
slack_post_markdown_message
- 在启用了标记格式的Slack频道上发布新消息
- 所需输入:
channel_id(string):要发布的频道或用户的IDtext(string):带有markdown格式的消息文本(mrkdwn)。支持 粗体, 斜体,code,code blocks、>引用、<@user_id>提及、<#channel_id>频道链接和<url|链接文本>链接
- 返回:消息发布确认和时间戳
-
slack_reply_to_tothread_markdown
- 在Slack中回复特定消息线程,并启用标记格式
- 所需输入:
channel_id(string):包含线程的通道的IDthread_ts(string):父消息的时间戳,格式为“1234567890.123456”。不带句点的格式的时间戳可以通过添加句点进行转换,使其后面有6个数字text(string):带有markdown格式的回复文本(mrkdwn)。支持 粗体, 斜体,code,code blocks、>引用、<@user_id>提及、<#channel_id>频道链接和<url|链接文本>链接
- 返回:回复确认和时间戳
Slack机器人设置
要使用此MCP服务器,您需要创建一个Slack应用程序,并为其配置必要的权限:
1.创建Slack应用程序
- 访问 Slack应用程序页面
- 点击“创建新应用”
- 选择“从头开始”
- 命名您的应用程序并选择您的工作区
2.配置Bot令牌作用域
导航到“OAuth和权限”并添加以下范围:
channels:history-查看公共频道中的消息和其他内容channels:read-查看基本频道信息chat:write-以应用程序的身份发送消息reactions:write-在消息中添加表情符号反应users:read-查看用户及其基本信息users.profile:read-查看用户的详细资料
3.将应用程序安装到工作区
- 点击“安装到工作区”并授权应用程序
- 保存以开头的“Bot用户OAuth令牌”
xoxb-
4.获取您的团队ID
获取您的团队ID(以 T)通过以下方式 本指南
5.将机器人添加到频道(可选)
为了让机器人访问私人频道或发布消息,您可能需要使用以下方式邀请它访问特定频道 /invite @your-bot-name
特性
- 多种运输支持:支持stdio和流式HTTP传输
- 现代MCP SDK:更新为使用最新的MCP SDK(v1.13.2)和现代API
- 全面的Slack集成:全套Slack操作,包括:
- 列出频道(具有预定义的频道支持)
- 发布消息(纯文本和markdown格式)
- 回复帖子(纯文本和markdown格式)
- 添加反应
- 获取频道历史记录
- 获取线程回复
- 列出用户
- 获取用户资料
安装
地方发展
npm install
npm run build
全球安装(NPM)
npm install -g dudztroyer/slack-mcp-server
配置
设置以下环境变量:
export SLACK_BOT_TOKEN="xoxb-your-bot-token"
export SLACK_TEAM_ID="your-team-id"
export SLACK_CHANNEL_IDS="channel1,channel2,channel3" # Optional: predefined channels
export AUTH_TOKEN="your-auth-token" # Optional: Bearer token for HTTP authorization (Streamable HTTP transport only)
用法
命令行选项
slack-mcp [options]
Options:
--transport <type> Transport type: 'stdio' or 'http' (default: stdio)
--port <number> Port for HTTP server when using Streamable HTTP transport (default: 3000)
--token <token> Bearer token for HTTP authorization (optional, can also use AUTH_TOKEN env var)
--help, -h Show this help message
本地使用示例
使用slack-mcp命令(全局安装后)
# Use stdio transport (default)
slack-mcp
# Use stdio transport explicitly
slack-mcp --transport stdio
# Use Streamable HTTP transport on default port 3000
slack-mcp --transport http
# Use Streamable HTTP transport on custom port
slack-mcp --transport http --port 8080
# Use Streamable HTTP transport with custom auth token
slack-mcp --transport http --token mytoken
# Use Streamable HTTP transport with auth token from environment variable
AUTH_TOKEN=mytoken slack-mcp --transport http
直接使用节点(用于开发)
# Use stdio transport (default)
node dist/index.js
# Use stdio transport explicitly
node dist/index.js --transport stdio
# Use Streamable HTTP transport on default port 3000
node dist/index.js --transport http
# Use Streamable HTTP transport on custom port
node dist/index.js --transport http --port 8080
# Use Streamable HTTP transport with custom auth token
node dist/index.js --transport http --token mytoken
# Use Streamable HTTP transport with auth token from environment variable
AUTH_TOKEN=mytoken node dist/index.js --transport http
运输类型
标准运输
- 用例:命令行工具和直接集成
- 沟通:标准输入/输出流
- 默认:是的
可流式HTTP传输
- 用例:远程服务器和基于web的集成
- 沟通:带有可选服务器发送事件流的HTTP POST请求
- 特性:
- 会话管理
- 双向通信
- 可恢复连接
- RESTful API端点
- 承载令牌身份验证
身份验证(仅限流式HTTP传输)
使用Streamable HTTP传输时,服务器支持承载令牌身份验证:
- 命令行:使用
--token <token>指定自定义令牌 - 环境变量:设置
AUTH_TOKEN=<token>作为退路 - 自动生成:如果两者都没有提供,则生成随机令牌
命令行选项优先于环境变量。使用以下命令在HTTP请求中包含令牌 Authorization: Bearer <token> 头球
故障排除
如果遇到权限错误,请验证:
- 所有必需的范围都已添加到您的Slack应用程序中
- 应用程序已正确安装到您的工作区
- 令牌和工作区ID已正确复制到您的配置中
- 该应用程序已添加到它需要访问的频道中
发展
构建
npm run build
观看模式
npm run watch
创建发布
该项目包括一个可以通过GitHub Actions手动触发的自动发布工作流:
如何创建发布
- 导航到GitHub操作:转到GitHub存储库中的“操作”选项卡
- 选择发布工作流:点击“创建发布”工作流
- 运行工作流:单击“运行工作流”按钮
- 配置版本:
- 版本凹凸类型:从中选择
patch,minor,或major
- 版本凹凸类型:从中选择
发布工作流的作用是什么
自动发布过程利用 changelogen 处理大部分发布过程:
- 质量检查:确保所有测试通过并成功构建代码
- Changelogen发布:用途
changelogen --release --push和changelogen gh release致:- 从常规提交生成漂亮的变更日志
- 凹凸版本
package.json根据您的选择 - 创建并推送git标签
- 提交并推动所有更改
- 使用变更日志作为发布说明创建GitHub版本
- 分配和资产:将分发存档添加到GitHub版本中
- 触发下游:自动触发:
- 将包发布到GitHub包注册表(
publish.yml)
- 将包发布到GitHub包注册表(
版本凹凸类型
- 补丁 (
1.0.0→1.0.1):Bug修复和细微更改 - 次要的 (
1.0.0→1.1.0):不破坏现有功能的新功能 - 主修 (
1.0.0→2.0.0):突破性变化
改进变更日志的常规承诺
发布工作流使用 changelogen 哪种方法最有效 常规承诺。要获得最漂亮、信息量最大的变更日志,请将提交消息格式化为:
feat: add new slack reaction tool-新功能fix: resolve channel history pagination issue-Bug修复docs: update README with Docker instructions-文档更改chore: update dependencies-维护任务refactor: simplify error handling logic-代码重构perf: optimize message processing-性能改进
这将导致正确分类和格式化的变更日志条目。
API端点(可流式HTTP传输)
使用Streamable HTTP传输时,服务器会公开以下端点:
POST /mcp-客户端到服务器通信GET /mcp-服务器到客户端通知(服务器发送的事件流)DELETE /mcp-会话终止
与以前版本的更改
- 更新MCP SDK:从v1.0.1升级到v1.13.2
- 现代API:从低级服务器类迁移到高级McpServer类
- Zod验证:使用Zod添加了正确的模式验证
- 运输灵活性:添加了对流式HTTP传输的支持
- 命令行接口:添加了用于传输选择的CLI参数
- 会话管理:为HTTP传输实现了正确的会话处理
- 更好的错误处理:改进了错误处理和日志记录