返回市场
松弛-MCP服务器

松弛-MCP服务器

作者:korotovsky926 星标更新:2025-10-30

项目介绍

技术文档摘要

Slack MCP Server

信任评分

适用于Slack工作区的Model Context Protocol (MCP)服务器。最强大的MCP Slack服务器——支持Stdio、SSE和HTTP传输方式,代理设置,私信(DM),群组私信(Group DM),智能历史记录抓取(按日期或数量),可以通过OAuth运行,也可以在完全隐身模式下运行,无需任何权限和范围。

[!重要] 我们需要您的支持!每月有超过30,000名工程师访问此仓库,其中已有9,000多人正在使用它。

如果您欣赏我们贡献者为此项目所做的努力,请考虑给这个仓库点个星。

功能丰富的Slack MCP服务器具有以下特性:

  • 隐身和OAuth模式:无需额外权限或机器人安装即可运行服务器(隐身模式),或者使用安全的OAuth令牌进行访问,无需刷新或从浏览器中提取令牌(OAuth模式)。
  • 企业工作区支持:可能与企业级Slack设置集成。
  • 频道和线程支持,使用#名称 @查找:从频道和线程中获取消息,包括活动消息,并通过名称(例如#general)或ID检索频道。
  • 智能历史记录:通过日期(d1, 7d, 1m)或消息数量分页获取消息。
  • 搜索消息:使用各种过滤器(如日期、用户和内容)在频道、线程和私信中搜索消息。
  • 安全的消息发布:默认情况下禁用conversations_add_message工具以确保安全。可以通过环境变量启用它,并可选地限制特定频道。
  • 私信和群组私信支持:检索直接消息和群组直接消息。
  • 嵌入用户信息:在消息中嵌入用户信息,以便更好地理解上下文。
  • 缓存支持:缓存用户和频道以加快访问速度。
  • Stdio/SSE/HTTP传输及代理支持:使用任何支持Stdio、SSE或HTTP传输的MCP客户端,如果需要,可以配置其通过代理路由出站请求。

分析演示

分析

添加消息演示

添加消息

工具

1. conversations_history:

根据channel_id从频道(或私信)中获取消息,响应中的最后一行/列用于分页的cursor参数(如果非空)

  • 参数:
    • channel_id(字符串,必需):频道ID,格式为Cxxxxxxxxxx,或以#...@...开头的名称,例如#general@username_dm
    • include_activity_messages(布尔值,默认为false):如果为true,则响应将包含活动消息,如channel_joinchannel_leave。默认为布尔值false。
    • cursor(字符串,可选):分页的游标。使用响应中最后一行和列的值作为上一次请求返回的next_cursor字段。
    • limit(字符串,默认为"1d"):要获取的消息的最大时间范围(例如1d - 1天,1w - 1周,30d - 30天,90d - 90天,这是免费层级历史记录的默认限制)或消息数量(例如50)。当提供cursor时必须为空。

2. conversations_replies:

根据channelIDthread_ts获取对话中的消息线程,响应中的最后一行/列用于分页的cursor参数(如果非空)。

  • 参数:
    • channel_id(字符串,必需):频道ID,格式为Cxxxxxxxxxx,或以#...@...开头的名称,例如#general@username_dm
    • thread_ts(字符串,必需):线程父消息或线程中消息的唯一标识符。ts必须是现有消息的时间戳,格式为1234567890.123456,该消息有0或多条回复。
    • include_activity_messages(布尔值,默认为false):如果为true,则响应将包含活动消息,如'channel_join'或'channel_leave'。默认为布尔值false。
    • cursor(字符串,可选):分页的游标。使用响应中最后一行和列的值作为上一次请求返回的next_cursor字段。
    • limit(字符串,默认为"1d"):要获取的消息的最大时间范围(例如1d - 1天,1w - 1周,30d - 30天,90d - 90天,这是免费层级历史记录的默认限制)或消息数量(例如50)。当提供cursor时必须为空。

3. conversations_add_message

向公共频道、私人频道或直接消息(DM,或IM)对话中添加消息,通过channel_idthread_ts

注意:默认情况下禁用消息发布以确保安全。要启用,请设置SLACK_MCP_ADD_MESSAGE_TOOL环境变量。如果设置为逗号分隔的频道ID列表,则仅允许这些特定频道发布消息。详情见下方环境变量部分。

  • 参数:
    • channel_id(字符串,必需):频道ID,格式为Cxxxxxxxxxx,或以#...@...开头的名称,例如#general@username_dm
    • thread_ts(字符串,可选):线程父消息或线程中消息的唯一标识符。ts必须是现有消息的时间戳,格式为1234567890.123456,该消息有0或多条回复。可选,如果没有提供则消息将被添加到频道本身,否则将被添加到线程。
    • payload(字符串,必需):指定内容类型格式的消息负载。示例:'Hello, world!' 对于text/plain或'# Hello, world!' 对于text/markdown。
    • content_type(字符串,默认为"text/markdown"):消息的内容类型。默认为'text/markdown'。允许的值:'text/markdown','text/plain'。

4. conversations_search_messages

使用过滤器在公共频道、私人频道或直接消息(DM,或IM)对话中搜索消息。所有过滤器都是可选的,如果没有提供,则需要search_query

  • 参数:
    • search_query(字符串,可选):用于筛选消息的搜索查询。示例:'营销报告'或Slack消息的完整URL,例如'https://slack.com/archives/C1234567890/p1234567890123456',则工具将返回与给定URL匹配的单条消息,此时忽略其他所有参数。
    • filter_in_channel(字符串,可选):通过ID或名称筛选特定频道中的消息。示例:C1234567890#general。如果没有提供,则搜索所有频道。
    • filter_in_im_or_mpim(字符串,可选):通过ID或名称筛选直接消息(DM)或多人员直接消息(MPIM)对话中的消息。示例:D1234567890@username_dm。如果没有提供,则搜索所有DM和MPIM。
    • filter_users_with(字符串,可选):通过ID或显示名称筛选特定用户在线程和私信中的消息。示例:U1234567890@username。如果没有提供,则搜索所有线程和私信。
    • filter_users_from(字符串,可选):通过ID或显示名称筛选来自特定用户的消息。示例:U11234567890@username。如果没有提供,则搜索所有用户。
    • filter_date_before(字符串,可选):筛选发送日期早于特定日期的消息,格式为YYYY-MM-DD。示例:2023-10-01JulyYesterdayToday。如果没有提供,则搜索所有日期。
    • filter_date_after(字符串,可选):筛选发送日期晚于特定日期的消息,格式为YYYY-MM-DD。示例:2023-10-01JulyYesterdayToday。如果没有提供,则搜索所有日期。
    • filter_date_on(字符串,可选):筛选发送日期为特定日期的消息,格式为YYYY-MM-DD。示例:2023-10-01JulyYesterdayToday。如果没有提供,则搜索所有日期。
    • filter_date_during(字符串,可选):筛选发送日期在特定时间段内的消息,格式为YYYY-MM-DD。示例:JulyYesterdayToday。如果没有提供,则搜索所有日期。
    • filter_threads_only(布尔值,默认为false):如果为true,则响应将仅包含来自线程的消息。默认为布尔值false。
    • cursor(字符串,默认为""):分页的游标。使用响应中最后一行和列的值作为上一次请求返回的next_cursor字段。
    • limit(数字,默认为20):要返回的最大项目数。必须是一个介于1和100之间的整数。

5. channels_list:

获取频道列表

  • 参数:
    • channel_types(字符串,必需):逗号分隔的频道类型。允许的值:mpimimpublic_channelprivate_channel。示例:public_channel,private_channel,im
    • sort(字符串,可选):排序类型。允许的值:popularity - 按每个频道的成员/参与者数量排序。
    • limit(数字,默认为100):要返回的最大项目数。必须是一个介于1和1000之间的整数(最大999)。
    • cursor(字符串,可选):分页的游标。使用响应中最后一行和列的值作为上一次请求返回的next_cursor字段。

资源

Slack MCP服务器暴露两个特殊目录资源,便于访问工作区元数据:

1. slack://<workspace>/channels — 频道目录

获取工作区内所有频道的CSV目录,包括公共频道、私人频道、私信和群组私信。

  • URI: slack://<workspace>/channels
  • 格式: text/csv
  • 字段:
    • id: 频道ID(例如,C1234567890
    • name: 频道名称(例如,#general@username_dm
    • topic: 频道主题(如果有)
    • purpose: 频道目的/描述
    • memberCount: 频道中的成员数量

2. slack://<workspace>/users — 用户目录

获取工作区内所有用户的CSV目录。

  • URI: slack://<workspace>/users
  • 格式: text/csv
  • 字段:
    • userID: 用户ID(例如,U1234567890
    • userName: Slack用户名(例如,john
    • realName: 用户的真实姓名(例如,John Doe

安装指南

环境变量(快速参考)

变量必需?默认值描述
SLACK_MCP_XOXC_TOKEN是*nilSlack浏览器令牌(xoxc-...
SLACK_MCP_XOXD_TOKEN是*nilSlack浏览器cookie dxoxd-...
SLACK_MCP_XOXP_TOKEN是*nil用户OAuth令牌(xoxp-...)—替代xoxc/xoxd
SLACK_MCP_PORT13080MCP服务器监听的端口
SLACK_MCP_HOST127.0.0.1MCP服务器监听的主机
SLACK_MCP_API_KEYnilSSE和HTTP传输的Bearer令牌
SLACK_MCP_PROXYnil出站请求的代理URL
SLACK_MCP_USER_AGENTnil自定义User-Agent(针对企业级Slack环境)
SLACK_MCP_CUSTOM_TLSnil根据SLACK_MCP_USER_AGENT或默认User-Agent向Slack服务器发送自定义TLS握手。(针对企业级Slack环境)
SLACK_MCP_SERVER_CAnilCA证书路径
SLACK_MCP_SERVER_CA_TOOLKITnil注入HTTPToolkit CA证书到根信任存储以进行中间人调试
SLACK_MCP_SERVER_CA_INSECUREfalse信任所有不安全请求(不推荐)
SLACK_MCP_ADD_MESSAGE_TOOLnil通过设置为true来启用所有频道的消息发布,或设置为逗号分隔的频道ID列表以白名单特定频道,或在频道ID前使用!以允许除指定频道外的所有频道,而空值默认禁用发布。
SLACK_MCP_ADD_MESSAGE_MARKnil当启用conversations_add_message工具时,任何新发送的消息都将自动标记为已读。
SLACK_MCP_ADD_MESSAGE_UNFURLINGnil启用以让Slack展开发布的链接,或设置为逗号分隔的域名列表(例如github.com,slack.com)以仅对它们进行白名单展开。如果文本包含白名单和未知域名,出于安全原因将禁用展开。
SLACK_MCP_USERS_CACHE.users_cache.json用户缓存文件路径。用于缓存Slack用户信息以避免启动时重复调用API。
SLACK_MCP_CHANNELS_CACHE.channels_cache_v2.json频道缓存文件路径。用于缓存Slack频道信息以避免启动时重复调用API。
SLACK_MCP_LOG_LEVELinfostdout或stderr的日志级别。有效值为:debuginfowarnerrorpanicfatal

*您需要xoxpxoxc/xoxd令牌中的一个来进行身份验证。

限制矩阵 & 缓存

用户缓存频道缓存限制
:x::x:无缓存,无LLM上下文增强,无法使用用户数据,channels_list工具将完全不可用。conversations_*工具将具有有限的功能,您将无法通过@userHandle#channel-name搜索消息,也无法通过@userHandle#channel-name获取消息。
:white_check_mark::x:无频道缓存,channels_list工具将完全不可用。conversations_*工具将具有有限的功能,您将无法通过@userHandle#channel-name搜索消息,也无法通过@userHandle#channel-name获取消息。
:white_check_mark::white_check_mark:无限制,完全功能的Slack MCP服务器。

调试工具

# 使用stdio传输运行检查器
npx @modelcontextprotocol/inspector go run mcp/mcp-server.go --transport stdio

# 查看日志
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

安全

  • 切勿共享API令牌
  • 保护并保密.env文件

许可证

MIT许可 - 详见LICENSE文件。这不是官方的Slack产品。