用途
Mattermost MCP 服务器为 Mattermost API 提供 MCP 接口,使 Claude 和其他 MCP 客户端能够与 Mattermost 工作区进行交互。
主要能力
- 列出频道(支持分页、是否包含私有频道和私信)
- 读取频道历史消息(支持按数量、页码、日期范围、游标分页)
- 读取话题串回复(包含根帖)
- 发布、编辑消息
- 管理话题串与表情回应
- 下载帖子附件(可指定保存路径,图片可内联返回)
- 话题监控:按 cron 计划监控指定频道中是否出现关注的话题,并在相关话题被讨论时发送通知
使用方式
支持三种运行方式:
- 使用 npx(推荐,无需安装)
- 全局安装
- 克隆并构建
配置优先级从高到低为:CLI 参数(--url、--token、--team-id)、环境变量(MATTERMOST_URL、MATTERMOST_TOKEN、MATTERMOST_TEAM_ID)、config.local.json(本地覆盖,gitignored)、config.json(默认配置)。
浏览器登录(无需令牌)
MATTERMOST_TOKEN 为可选。未设置令牌时,服务器通过可见的 Chromium 窗口登录 Mattermost,并保存会话令牌。设置令牌后则使用静态模式:不打开浏览器窗口、不下载 Chromium、不创建 ~/.config/mattermost-mcp。
仅配置 MATTERMOST_URL 和 MATTERMOST_TEAM_ID(不设令牌)即可使用浏览器登录。调用任意 Mattermost 工具时,服务器打开 Chromium 登录页,用户按常规方式登录(密码、SSO、MFA),限时 5 分钟。会话有效后窗口自动关闭,工具调用返回结果。等待期间每 10 秒发送进度通知。窗口仅在工具调用时打开,不会在服务器启动或后台监控时打开。
Chromium 自动下载:首次登录时,服务器为 Playwright 1.63.0 下载 Chromium 和 ffmpeg(macOS arm64 上约 183 MiB)到 ~/.config/mattermost-mcp/browsers。首次调用耗时较长:下载限时 10 分钟,登录的 5 分钟在下载完成后开始。代理或镜像环境可设置 HTTPS_PROXY、HTTP_PROXY、NO_PROXY、PLAYWRIGHT_DOWNLOAD_HOST 或 PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT。不使用共享 Playwright 缓存。下载失败时错误信息包含原因和手动命令。Linux 缺少 Chromium 系统库时需一次性执行 install-deps 命令。
存储位置
所有内容位于 ~/.config/mattermost-mcp/(权限 0700):
- browsers/:登录窗口的 Chromium 构建
- profile/:包含 Mattermost 会话的 Chromium 配置文件(与令牌同等敏感,cookie 未加密,应排除在 dotfiles 同步和备份之外)
- token:会话令牌(权限 0600),绑定服务器地址
- login.lock 和 login.lock.break:短期锁文件,允许多个服务器进程共享一个登录窗口
- tmp/:Chromium 下载的临时文件,安装后删除
若 ~/.config 或主目录属于其他用户,或对组/其他用户可写且无 sticky 位,服务器拒绝使用该目录。
登录窗口安全
Chromium 窗口启用沙箱,因为会渲染其他用户编写的 Mattermost 内容。仅在系统不支持沙箱时设置 MATTERMOST_MCP_DISABLE_CHROMIUM_SANDBOX=1,此时每次打开窗口都会记录警告。MATTERMOST_URL 应使用 https:// 地址;使用 http:// 且主机不是 localhost、127.0.0.1 或 [::1] 时,启动会记录警告。
重置会话
仅移除会话(下次工具调用重新打开登录窗口)或移除全部(包括 Chromium,下次登录重新下载)。两条命令在登录窗口打开时执行均安全。
多客户端
同一机器上的 Claude Code、opencode 等客户端共享一个令牌文件和一个登录窗口。多个客户端同时需要登录时只打开一个窗口,所有等待的调用在登录后继续。
后台话题监控
后台监控从不打开窗口。服务器启动时若无已保存会话:
- 若未设置 monitoring.userId 或 monitoring.notificationChannelId,监控无法查找它们,计划不会启动。需调用 mattermost_run_monitoring:它会按需登录、启动计划并运行一次监控。通过其他工具登录不会启动计划,之后需调用 mattermost_run_monitoring 或重启服务器。
- 若两者均已设置,计划立即启动,首次登录前的运行会以 [AUTHENTICATION_REQUIRED] 跳过。
客户端超时
首次工具调用可能耗时数分钟(Chromium 下载加最多 5 分钟登录)。每 10 秒的进度通知可让传递 progressToken 并据此重置超时的客户端保持调用。opencode 需将 mcp.mattermost.timeout 和 experimental.mcp_timeout 设为 360000(6 分钟)。不传递 progressToken 的客户端可能在下载期间取消首次调用,下载会停止并在下次调用时重新开始。
其他限制
- 每个操作系统用户对应一个 Mattermost 服务器。其他服务器的令牌文件会被忽略。地址比较前会规范化,/api/v4、末尾斜杠和主机大小写不影响。
- 不同 MATTERMOST_URL 的客户端同时登录时,等待的调用会得到 LOGIN_NOT_COMPLETED,第二个服务器的窗口仅在再次调用工具时打开。
- 不要为服务器启用 DEBUG=pw:*,Playwright 调试输出会打印 cookie。
- 不支持 Windows。
工具参数摘要
- 列出频道:limit(默认 100)、page(默认 0)、include_private(默认 false)
- 获取频道历史:channel_id(必填)、limit(未指定或 0 返回全部)、page(默认 0,仅当 limit>0 时使用)、since_date、before_date、before_post_id、after_post_id
- 带附件的帖子在 mattermost_get_channel_history 和 mattermost_get_thread_replies(含 root_post)中包含 file_ids 和 files(id、name、extension、size、mime_type,图片还有 width/height)
- 编辑帖子:mattermost_edit_post 接受 post_id 和 message。仅帖子作者或有权限者可编辑,403 返回提示,其他错误返回服务器原文。两个工具在发送请求前拒绝非 26 字符的 post_id。
- 下载文件:file_id(必填)、output_path(未设置则保存到系统临时目录 mattermost-mcp/{file_id}_{name};目录或末尾带 / 或 \ 则保存到其中;其他路径视为文件路径;~ 展开为主目录;已存在文件会被覆盖)、inline(默认 false,仅 image/png、image/jpeg、image/gif、image/webp 且不超过 1 MB 内联返回)
获取凭据
- Mattermost API URL 通常为 https://your-mattermost-domain.com/api/v4
- 个人访问令牌:账户设置 > 安全 > 个人访问令牌 > 创建令牌
- 团队 ID:在 Mattermost 中打开团队,使用浏览器开发者工具(F12)查看 Network 中 teams/ 相关 API 调用,或使用 Mattermost API
故障排除
- 缺少配置错误:确保通过 CLI 参数、环境变量或配置文件提供 Mattermost URL 和团队 ID。令牌非必需。
- 权限错误:确认 Mattermost 用户(令牌所有者或浏览器登录用户)具有必要权限、令牌正确、URL 和团队 ID 正确。浏览器登录切换用户需重置会话后再次调用工具。
- 浏览器登录问题:错误以方括号代码开头。
- [BROWSER_INSTALLATION_FAILED]:自动下载 Chromium 失败,错误含原因。可手动安装 Chromium 作为后备。若错误提到活动的 __dirlock,等待其他安装完成或按错误文本删除。
- [BROWSER_SYSTEM_DEPENDENCIES_MISSING](Linux):需一次性安装系统库。
- [BROWSER_SANDBOX_UNAVAILABLE](Linux):尽可能启用沙箱,否则设置 MATTERMOST_MCP_DISABLE_CHROMIUM_SANDBOX=1。
- [LOGIN_WINDOW_CLOSED]、[LOGIN_TIMEOUT]、[LOGIN_NOT_COMPLETED]:窗口关闭、登录超时或另一客户端登录未完成,再次调用工具。
- [LOGIN_PROFILE_BUSY]:另一 Chromium 窗口占用登录配置文件,关闭后重试。
- [AUTHENTICATION_REQUIRED](监控日志):后台监控不打开登录窗口,调用任意 Mattermost 工具登录。
- [STATE_DIRECTORY_UNSAFE]:状态目录或 ~/.config 或主目录权限不安全,按错误文本修复。
适用场景
适用于需要在 Claude 等 MCP 客户端中操作 Mattermost 工作区的用户,包括读取频道消息、发布内容、管理话题串、下载附件,以及按计划监控特定话题并接收通知。
限制
- 不支持 Windows。
- 浏览器登录模式首次调用耗时较长,且依赖 Chromium 下载。
- 会话目录包含未加密 cookie,需注意保护。
- 每个操作系统用户仅对应一个 Mattermost 服务器。
- 部分客户端可能因超时取消首次调用。