# remind-mcp [Health: Active]

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/chrischall/remind-mcp  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/remind-mcp

## Description
Read Remind classes, chats and messages, and manage notification settings.

## Tools
Capabilities this server exposes over MCP:

- **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.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

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

## Documentation & README

# remind-mcp

MCP server for [Remind](https://www.remind.com) — 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.

## Install

```bash
npx -y @chrischall/remind-mcp
```

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

## Authentication

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.

## Tools

| 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.

## Without the server

`skills/remind-fpx/` is a shell-only skill covering the same read surface with `fpx` + `curl` —
no MCP process required.

## Notes

- An expired session returns **HTTP 200** with `errors[0].message = "Unauthorized"`; the same
  string also means "your account may not do that" (scheduled messages are owner/teacher-only).
- An unknown field reports as `Internal service error`, not a field error — introspect rather
  than guess. `docs/REMIND-API.md` is the capture log.

## Development

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

## License

MIT

