mcpField
R
remind-mcp

remind-mcp

本地服务
github.com/chrischall通信协作06 天前更新

关于 remind-mcp

remind-mcp 是面向 Remind 用户的 MCP 服务,可读取班级、聊天和消息,并管理通知设备。它通过浏览器获取会话凭据,之后使用服务器端请求;发送消息和更改通知设置前需确认。

主要功能

  1. 01查看账户、班级和聊天
  2. 02读取聊天消息及未读数
  3. 03查看通知设置和设备
  4. 04启用或停用通知设备
  5. 05发送消息前确认

适用场景

  1. 01查看班级和聊天中的未读消息
  2. 02读取某个聊天流的消息
  3. 03调整通知接收设备
  4. 04向班级或聊天发送消息

MCP 相关

向 MCP 客户端提供 Remind 的账户、班级、聊天、消息和通知设置工具,并支持发送消息及更改通知设备。会话从已登录浏览器获取并缓存,之后通过服务器端请求访问 GraphQL。写入操作需确认。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"chrischall-remind": {
"command": "npx",
"args": [
"-y",
"@chrischall/remind-mcp"
],
"env": {
"REMIND_COOKIE": "<REMIND_COOKIE>",
"REMIND_CSRF_TOKEN": "<REMIND_CSRF_TOKEN>",
"REMIND_WS_PORT": "<REMIND_WS_PORT>",
"REMIND_SESSION_FILE": "<REMIND_SESSION_FILE>"
}
}
}
}
启动命令npx -y @chrischall/remind-mcp
需要配置的环境变量
REMIND_COOKIE密钥Captured Cookie request header from a signed-in remind.com tab. Optional: the ContextMint Bridge extension captures it automatically.
REMIND_CSRF_TOKEN密钥Captured x-csrf-token request header value. Optional; paired with REMIND_COOKIE.
REMIND_WS_PORTfetchproxy bridge concentrator port (default 37149).
REMIND_SESSION_FILEPath to the cached session file. Defaults to MCP_DATA_DIR/HOME under .remind-mcp.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@chrischall/remind-mcp1.2.8

工具

10

收录的工具列表 · 更新于 1 周前

此工具无需参数。

详细介绍

remind-mcp

适用于 Remind 的 MCP 服务——读取你的班级、聊天和消息,并管理通知设置。

此项目由 AI 开发并维护。请自行斟酌使用。

Remind 公开了一个可从服务端访问的 GraphQL 端点,因此只有凭据需要浏览器:通过 ContextMint Bridge 浏览器扩展,从已登录的标签页中提取一次会话信息,此后的每次请求都只是普通的服务端 fetch。

安装

npx -y @chrischall/remind-mcp
{
  "mcpServers": {
    "remind": { "command": "npx", "args": ["-y", "@chrischall/remind-mcp"] }
  }
}

身份验证

从已登录的 remind.com 标签页中捕获两个请求头:完整的 Cookie 请求头和 x-csrf-token 值。你可以让 bridge 捕获它们(需要 ContextMint Bridge 浏览器扩展和已登录的标签页),也可以自行提供:

变量必需说明
REMIND_COOKIE否捕获的 Cookie 请求头。与下一个变量一起设置时会跳过 bridge;Remind 判定这组凭据已过期后,服务会回退到 bridge(如果没有 bridge,则提示你刷新这两个值)。
REMIND_CSRF_TOKEN否捕获的 x-csrf-token 值。
REMIND_WS_PORT否fetchproxy bridge 集中器端口(默认值为 37149)。
REMIND_SESSION_FILE否捕获的会话缓存位置。默认位于 $MCP_DATA_DIR/$HOME 下的 .remind-mcp 中。

从 ContextMint Bridge 的发布页面安装:在 Chrome 中,解压 Chrome 版本并以未打包扩展的方式加载(chrome://extensions → 开发者模式 → 加载已解压的扩展程序)。Safari 版本尚不可用(它将随 ContextMint 应用一同发布,目前该应用尚无公开下载),因此请暂时使用 Chrome。

ContextMint Bridge 是 fetchproxy 浏览器扩展的新名称,由同一位维护者维护——fetchproxy 自己的 README 中也指向它。其源代码已公开,地址为 https://github.com/nullnet-app/contextmint-bridge:你可以自行构建,也可以用旁边发布的 .sha256 文件校验发布的 zip 文件(shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256)。

即使没有这两项,服务也能启动,因此主机在安装时进行的 tools/list 探测会成功;错误只会在首次调用工具时出现。

**浏览器只需使用一次。**捕获的会话会被缓存(模式为 0600),并在重启后继续使用;引导完成后的每次调用都只是普通的服务端 fetch。这一点很重要,因为只有在已登录的标签页实际发起 /graphql 请求时,捕获才会完成——因此,如果没有缓存,重启后服务就会一直等待,除非你恰好正在使用 Remind。

缓存有使用期限:使用或存储前会从 Cookie jar 中移除分析和同意 Cookie;记录会绑定到捕获时通过身份验证的 Remind 账号(me.uuid)——如果恢复的会话返回的是其他账号或没有账号,就会丢弃该会话并重新捕获;并且最多每隔 7 天就会从浏览器重新捕获一次。通过环境变量提供的会话永远不会从缓存中恢复。

工具

工具
remind_me已登录的账号。
remind_list_entities班级和聊天及其未读计数——从这里开始,它会返回 uuid。
remind_get_classes按 uuid 获取完整的班级详情。
remind_list_chats对话流及其权限(canSend)。
remind_get_messages获取聊天流中的消息。
remind_get_notification_settings偏好设置和消息送达设备。
remind_set_notification_devices启用或停用消息送达设备。会先请你确认。
remind_send_message向聊天或班级发送消息。会先请你确认。
remind_graphql执行任意只读 GraphQL 查询;已启用内省。拒绝执行变更操作。
remind_healthcheck验证会话是否仍通过身份验证;失败时,error.kind 会标明出问题的环节(no_credential、credential_rejected、edge_blocked、http、timeout、transport)。

确认

写入工具会在发送任何内容前要求你确认。能够显示确认提示词的客户端(Claude Code)会显示提示词。否则,首次调用不会发起网络请求,而是返回确切负载的预览以及一个 confirmToken;只有使用该令牌和相同参数再次调用,才会执行写入。令牌只能使用一次,两次调用之间任何参数发生变化都会使令牌失效。

变量默认值
MCP_CONFIRM_MODEask-user在无法显示确认提示词的客户端(claude.ai、Claude Desktop)上,写入操作的行为。ask-user:分两步执行——首次调用不做任何操作,并返回预览和令牌;模型必须先在聊天中取得你的批准,然后才能使用该令牌再次调用。auto:同样分两步执行,但模型查看预览后可以自行使用令牌。refuse:在此类客户端上拒绝写入。能够显示提示词的客户端(Claude Code)始终会收到实际提示,除非 MCP_CONFIRM_ELICITATION=off。无法识别的值按 refuse 处理。
MCP_CONFIRM_ELICITATIONonoff 表示绝不显示确认提示词,因此所有客户端都采用 MCP_CONFIRM_MODE 的行为。对于声称能够显示提示词却从不显示的客户端(写入会一直挂起——opencode 2.0.x),请设置此项。任何其他值均按 on 处理,并在 stderr 上显示警告。
MCP_CONFIRM_TTL_SECONDS600令牌的有效时长。
MCP_CONFIRM_SECRET每个进程随机生成签名密钥;只有在令牌必须在服务重启后继续有效时才设置。在 mcp-host 上,宿主会为每个子进程提供稳定的密钥(MCP_HOST_CONFIRM_SECRET),已使用的令牌会记录在 MCP_DATA_DIR 下,因此空闲重启后批准仍然有效。

无需服务

skills/remind-fpx/ 是一个仅使用 shell 的技能,借助 fpx + curl 提供相同的读取功能——无需运行 MCP 进程。

说明

  • 会话过期时会返回 HTTP 200,且 errors[0].message = "Unauthorized";相同的字符串也表示“你的帐户可能无权执行此操作”(定时消息仅限所有者/教师操作)。
  • 未知字段会返回 Internal service error,而不是字段错误——请先检查再操作,不要猜测。docs/REMIND-API.md 是记录捕获结果的日志。

开发

npm install && npm run build && npm test
npm run test:coverage

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。