返回市场
mattermost-mcp

mattermost-mcp

作者:pvev20 星标更新:2025-03-11

项目介绍

Mattermost MCP 服务器

用于 Mattermost API 的 MCP 服务器,使 Claude 和其他 MCP 客户端能够与 Mattermost 工作区进行交互。

功能

此 MCP 服务器提供了与 Mattermost 进行交互的工具,包括:

主题监控

该服务器包含一个主题监控系统,可以:

  • 监控指定频道中包含感兴趣主题的消息
  • 按可配置的时间表运行(使用 cron 语法)
  • 当讨论相关主题时发送通知
  • 在指定频道中提及您,当找到相关主题时

频道工具

  • mattermost_list_channels:列出工作区中的公共频道
  • mattermost_get_channel_history:获取频道中的最近消息

消息工具

  • mattermost_post_message:向频道发布新消息
  • mattermost_reply_to_thread:回复特定的消息线程
  • mattermost_add_reaction:给消息添加表情反应
  • mattermost_get_thread_replies:获取线程中的所有回复

监控工具

  • mattermost_run_monitoring:立即触发主题监控过程

用户工具

  • mattermost_get_users:获取工作区中的用户列表
  • mattermost_get_user_profile:获取用户的详细资料信息

设置

  1. 克隆此仓库:
git clone https://github.com/yourusername/mattermost-mcp.git
cd mattermost-mcp
  1. 安装依赖项:
npm install
  1. 配置服务器:

    该仓库包含一个带有占位符值的 config.json 文件。为了您的实际配置,请创建一个 config.local.json 文件(该文件被 git 忽略),并填写您的真实凭证:

    {
      "mattermostUrl": "https://your-mattermost-instance.com/api/v4",
      "token": "your-personal-access-token",
      "teamId": "your-team-id",
      "monitoring": {
        "enabled": false,
        "schedule": "*/15 * * * *",
        "channels": ["town-square", "off-topic"],
        "topics": ["tv series", "champions league"],
        "messageLimit": 50
      }
    }
    

    这种方法可以确保您的真实凭证不进入仓库,同时保持模板供他人使用。

  2. 构建服务器:

npm run build
  1. 运行服务器:
npm start

主题监控配置

监控系统可以通过以下选项进行配置:

  • enabled(布尔值):是否启用监控
  • schedule(字符串):检查新消息的 cron 表达式(例如,“*/15 * * * *”表示每15分钟一次)
  • channels(字符串数组):要监控的频道名称数组
  • topics(字符串数组):要在消息中查找的主题数组
  • messageLimit(数字):每次检查时分析的最近消息数量
  • notificationChannelId(字符串,可选):通知发送的频道ID。如果没有提供,则系统将自动使用直接消息频道。
  • userId(字符串,可选):在通知中提及的用户ID。如果没有提供,则系统将自动检测当前用户。

要启用监控,请将 enabled 设置为 true 在您的 config.local.json 文件中。

手动运行监控

您可以通过多种方式手动触发监控过程:

  1. 使用提供的脚本

    • ./run-monitoring-http.sh - 通过 HTTP 触发监控而不重启服务器(推荐)
    • ./run-monitoring.sh - 启动一个新的服务器实例并启用监控
    • ./trigger-monitoring.sh - 运行监控过程并退出(适用于 cron 作业)
    • ./view-channel-messages.js <channel-name> [count] - 查看频道中的最后几条消息
    • ./analyze-channel.js <channel-name> [count] - 分析频道中的消息统计
    • ./get-last-message.js <channel-name> - 获取频道中的最后一条消息
  2. 使用命令行界面 (CLI)

    • 当服务器正在运行时,在终端中键入以下命令之一:
      • run - 运行监控过程
      • monitor - 与 run 相同
      • check - 与 run 相同
    • 其他可用命令:
      • help - 显示可用命令
      • exit - 关闭服务器
  3. 使用 MCP 工具

    • 通过 MCP 接口使用 mattermost_run_monitoring 工具
    • 这将立即检查所有已配置的频道以查找您感兴趣的主题
  4. 使用命令行标志

    • 使用 --run-monitoring 标志启动服务器:
    npm start -- --run-monitoring
    
    • 这将在服务器启动后立即运行监控过程
    • 添加 --exit-after-monitoring 在监控过程完成后退出:
    npm start -- --run-monitoring --exit-after-monitoring
    
    • 这对于从 cron 作业运行监控过程很有用

工具详情

频道工具

mattermost_list_channels

  • 列出工作区中的公共频道
  • 可选输入:
    • limit(数字,默认:100,最大:200):返回的最大频道数
    • page(数字,默认:0):分页的页码
  • 返回:包含频道ID和信息的频道列表

mattermost_get_channel_history

  • 获取频道中的最近消息
  • 必需输入:
    • channel_id(字符串):频道的ID
  • 可选输入:
    • limit(数字,默认:30):要检索的消息数
    • page(数字,默认:0):分页的页码
  • 返回:包含消息内容和元数据的消息列表

消息工具

mattermost_post_message

  • 向 Mattermost 频道发布新消息
  • 必需输入:
    • channel_id(字符串):要发布的频道ID
    • message(字符串):要发布的消息文本
  • 返回:消息发布确认和ID

mattermost_reply_to_thread

  • 回复特定的消息线程
  • 必需输入:
    • channel_id(字符串):包含线程的频道
    • post_id(字符串):父消息的ID
    • message(字符串):回复文本
  • 返回:回复确认和ID

mattermost_add_reaction

  • 给消息添加表情反应
  • 必需输入:
    • channel_id(字符串):包含消息的频道
    • post_id(字符串):要反应的消息ID
    • emoji_name(字符串):没有冒号的表情名称
  • 返回:反应确认

mattermost_get_thread_replies

  • 获取消息线程中的所有回复
  • 必需输入:
    • channel_id(字符串):包含线程的频道
    • post_id(字符串):父消息的ID
  • 返回:包含回复内容和元数据的回复列表

用户工具

mattermost_get_users

  • 获取工作区用户的列表及其基本资料信息
  • 可选输入:
    • limit(数字,默认:100,最大:200):返回的最大用户数
    • page(数字,默认:0):分页的页码
  • 返回:包含基本资料的用户列表

mattermost_get_user_profile

  • 获取特定用户的详细资料信息
  • 必需输入:
    • user_id(字符串):用户的ID
  • 返回:详细的用户资料信息

与 Claude Desktop 结合使用

在您的 claude_desktop_config.json 中添加以下内容:

{
  "mcpServers": {
    "mattermost": {
      "command": "node",
      "args": [
        "/path/to/mattermost-mcp/build/index.js"
      ]
    }
  }
}

故障排除

如果您遇到权限错误,请验证:

  1. 您的个人访问令牌具有必要的权限
  2. 令牌正确复制到您的配置中
  3. Mattermost URL 和团队ID是正确的

HTTP 端点

服务器暴露了用于远程控制的 HTTP 端点:

  • 运行监控http://localhost:3456/run-monitoring

    • 立即触发监控过程
    • 返回带有成功/错误信息的 JSON 响应
  • 检查状态http://localhost:3456/status

    • 返回关于服务器和监控状态的信息
    • 适用于健康检查

您可以使用这些端点与 curl 或任何 HTTP 客户端:

# 触发监控
curl http://localhost:3456/run-monitoring

# 检查状态
curl http://localhost:3456/status

实用脚本

run-monitoring-http.sh

此脚本通过 HTTP 端点触发监控过程:

./run-monitoring-http.sh

这是推荐的手动触发监控的方式,因为它:

  • 不会重启服务器
  • 不会干扰计划的监控
  • 可靠地从任何终端运行

view-channel-messages.js

此脚本允许您查看任何频道中的最新消息:

# 查看频道中的消息(频道名称是必需的)
node view-channel-messages.js <channel-name>

# 查看特定数量的消息
node view-channel-messages.js <channel-name> <message-count>

# 示例:查看频道中的最后10条消息
node view-channel-messages.js general 10

该脚本将显示:

  • 频道信息(名称、目的、总消息数)
  • 最近的消息及其时间戳和用户名
  • 如果频道不存在,它将列出所有可用频道

analyze-channel.js

此脚本提供了频道中消息的详细统计:

# 分析频道中的消息(频道名称是必需的)
node analyze-channel.js <channel-name>

# 分析特定数量的消息
node analyze-channel.js <channel-name> <message-count>

# 示例:分析频道中的最后50条消息
node analyze-channel.js general 50

该脚本将显示:

  • 频道信息和元数据
  • 总消息数(包括系统消息)
  • 用户消息与系统消息的分解
  • 按用户的消息数
  • 频道中的最近消息

get-last-message.js

此脚本仅检索频道中的最新消息:

# 获取频道中的最新消息(频道名称是必需的)
node get-last-message.js <channel-name>

# 示例:获取 general 频道中的最新消息
node get-last-message.js general

该脚本将显示:

  • 发送者的用户ID和用户名
  • 消息的时间戳
  • 消息的全文内容

许可证

此 MCP 服务器根据 MIT 许可证授权。