# pickuppatrol-mcp [Health: Active]

**Category:** 🎓 Education  
**Repository:** https://github.com/chrischall/pickuppatrol-mcp  
**GitHub Stars:** 0  
**npm Downloads (last month):** 2424  
**Views:** 2  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/pickuppatrol-mcp

## Description
Read and change your children's school dismissal plans in PickUp Patrol

## Tools
Capabilities this server exposes over MCP:

- **pup_get_session** — The signed-in account and the students linked to it
- **pup_list_students** — Every student with their weekly defaults and review flag
- **pup_get_student** — One student in full
- **pup_get_default_plans** — A student's weekly default plan, day by day
- **pup_list_plans** — Day-by-day plans across a date range
- **pup_get_plan** — One student, one date — including whether it is locked
- **pup_list_transportations** — A school's dismissal options and the rules each imposes
- **pup_get_school** — School profile, notify times, cutoff times, settings
- **pup_list_non_school_days** — Dates no plan can be set for, and dates already changed
- **pup_list_car_numbers** — Car numbers the school issued to this account
- **pup_healthcheck** — Credentials sign in and the API answers; on failure, `error.kind` says which hop broke (`edge_blocked`, `credential_rejected`, …)
- **pup_set_plan** — Dismissal for one or more specific dates, or clears them back to the default
- **pup_set_default_plans** — The weekly default plan, or clears every default
- **pup_mark_defaults_reviewed** — The school's "defaults need review" prompt

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

```json
"mcpServers": {
  "pickuppatrol-mcp": {
    "command": "npx",
    "args": ["-y","@chrischall/pickuppatrol-mcp"],
    "env": {
      "PICKUPPATROL_USERNAME": "",
      "PICKUPPATROL_PASSWORD": ""
    }
  }
}
```

**Requires environment variables:** `PICKUPPATROL_USERNAME`, `PICKUPPATROL_PASSWORD` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What pickuppatrol-mcp MCP server does

The pickuppatrol-mcp MCP server exposes PickUp Patrol account and dismissal-plan operations as MCP tools. It can identify the signed-in account and linked students, inspect weekly defaults, retrieve plans for individual dates or date ranges, and show school dismissal options. It also returns school profile data, notification and cutoff times, non-school dates, and car numbers assigned to the account.

Write operations cover one-off plans for selected dates, weekly default plans, and the school prompt indicating that defaults need review. The server asks for confirmation before making changes. It also checks transportation requirements before sending a write and reads the affected plans again afterward to report whether the transportation choice and note actually changed.

This fits the 🎓 Education category and is intended for accounts used to manage children’s school departures.

## How it works

The server signs in to `app.pickuppatrol.net` with the configured PickUp Patrol email and password. PickUp Patrol returns a session cookie rather than a JWT on the deployment described by the project, and the server retains the session in memory. It starts without credentials so an MCP host can complete an install-time probe; the missing configuration is reported when a tool is first called.

Read results are limited to known fields by default. Several read tools accept `raw: true` to return the underlying API record, including fields such as `SASId` or `SafetyFlag`. Notes, option hints, and school settings may contain text entered by guardians or staff, so these values are marked as untrusted content and should be treated as data rather than instructions.

Write confirmations use a preview and single-use token when the client cannot display an interactive prompt. Tokens are bound to the exact payload and expire. Before approval is applied, the server re-reads relevant data; if it changed, the draft is rejected and a new preview is produced.

## Setup and configuration

Install the pickuppatrol-mcp MCP server through an MCP host using the npm package and provide `PICKUPPATROL_USERNAME` and `PICKUPPATROL_PASSWORD` in the server environment. For local development, the project supports copying `.env.example` to `.env`.

Confirmation behavior can be adjusted with `MCP_CONFIRM_MODE`, `MCP_CONFIRM_ELICITATION`, `MCP_CONFIRM_TTL_SECONDS`, and `MCP_CONFIRM_SECRET`. The defaults require confirmation, keep tokens valid for 600 seconds, and generate a signing secret per process. Credentials are kept in host configuration or the local environment file and are not included in tool results or logs.

## Tools and capabilities

Available read tools include:

- Inspect the session, students, student details, weekly defaults, dated plans, transportations, school settings, non-school days, and car numbers.
- Run `pup_healthcheck` to test sign-in and API availability, with error categories describing the failed step.
- Request raw API records from supported read tools.

Available write tools include:

- Set or clear plans for specific dates.
- Set or clear weekly default plans.
- Mark default plans as reviewed.

## Limitations and notes

PickUp Patrol does not provide a published API in the project description; the server uses the reachable HTTPS JSON service behind the web application. A rejected sign-in is not retried because repeated failures may contribute to account lockout. The weekly-default update reads and rewrites the student record because the API lacks a dedicated default-plans endpoint.

A dated plan can represent only an override, so an empty transportation value does not necessarily mean the student has no effective plan for that weekday. The project also provides a separate shell-based skill using `curl` and `jq` for scripts or machines where an MCP server is not installed. The repository is licensed under MIT.

_Full upstream README: https://allmcps.com/mcp/pickuppatrol-mcp/readme_

