Read Remind classes, chats and messages, and manage notification settings.
MCP server for Remind — read your classes, chats and messages, and manage notification settings.
This project was developed and is maintained by AI. Use at your own discretion.
Remind exposes a single GraphQL endpoint that is reachable server-side, so only the credential needs a browser: the session is lifted once from a signed-in tab through the fetchproxy bridge, and every request after that is a plain server-side fetch.
npx -y @chrischall/remind-mcp
{
"mcpServers": {
"remind": { "command": "npx", "args": ["-y", "@chrischall/remind-mcp"] }
}
}
Two headers are captured from a signed-in remind.com tab: the full Cookie header and the
x-csrf-token value. Either let the bridge capture them (needs the Transporter Chrome
extension and a signed-in tab), or supply them yourself:
| Variable | Required | Description |
|---|---|---|
REMIND_COOKIE | no | Captured Cookie request header. Skips the bridge when set with the next one. |
REMIND_CSRF_TOKEN | no | Captured x-csrf-token value. |
REMIND_WS_PORT | no | fetchproxy bridge concentrator port (default 37149). |
REMIND_SESSION_FILE | no | Where the captured session is cached. Defaults to $MCP_DATA_DIR/$HOME under .remind-mcp. |
The server boots without either, so a host's install-time tools/list probe succeeds; the
error surfaces on the first tool call instead.
The browser is needed once. A captured session is cached (mode 0600) and reused across
restarts, and every call after the bootstrap is a plain server-side fetch. This matters because
the capture completes only while the signed-in tab is actually issuing a /graphql request — so
without the cache, a restart would sit waiting unless you happened to be using Remind.
| Tool | |
|---|---|
remind_me | The signed-in account. |
remind_list_entities | Classes and chats with unread counts — start here, it yields the uuids. |
remind_get_classes | Full class detail by uuid. |
remind_list_chats | Conversation streams and their permissions (canSend). |
remind_get_messages | Messages in a chat stream. |
remind_get_notification_settings | Preferences and delivery devices. |
remind_set_notification_devices | Enable/disable delivery devices. Confirm-gated. |
remind_send_message | Send to a chat or class. Confirm-gated. |
remind_graphql | Arbitrary read-only GraphQL; introspection is enabled. Mutations refused. |
remind_healthcheck | Verify the session still authenticates. |
Write tools take confirm: true. Without it they make no network call and return a dry-run
preview of the exact payload.
skills/remind-fpx/ is a shell-only skill covering the same read surface with fpx + curl —
no MCP process required.
errors[0].message = "Unauthorized"; the same
string also means "your account may not do that" (scheduled messages are owner/teacher-only).Internal service error, not a field error — introspect rather
than guess. docs/REMIND-API.md is the capture log.npm install && npm run build && npm test
npm run test:coverage
MIT
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y @chrischall/remind-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-chrischall-remind-mcp": {
"command": "npx",
"args": [
"-y",
"@chrischall/remind-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup reference@chrischall/remind-mcpnpmio.github.chrischall/remind-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.