io.github.chrischall/schoolpass-mcp
SchoolPass for Claude — students, arrival/dismissal calendar, pickup changes, and school info
التثبيت
أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: .cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).
schoolpass-mcpclaude mcp add schoolpass-mcp -e 'SCHOOLPASS_EMAIL=<SCHOOLPASS_EMAIL>' -e 'SCHOOLPASS_PASSWORD=<your schoolpass_password>' -e 'SCHOOLPASS_SCHOOL_CODE=<SCHOOLPASS_SCHOOL_CODE>' -e 'SCHOOLPASS_API_HOST=<SCHOOLPASS_API_HOST>' -e 'SCHOOLPASS_TIMEZONE=<SCHOOLPASS_TIMEZONE>' -e 'SCHOOLPASS_SESSION_CACHE=<SCHOOLPASS_SESSION_CACHE>' -e 'SCHOOLPASS_SESSION_FILE=<SCHOOLPASS_SESSION_FILE>' -- npx -y schoolpass-mcp@1.0.10
{
"mcpServers": {
"schoolpass-mcp": {
"command": "npx",
"args": [
"-y",
"schoolpass-mcp@1.0.10"
],
"env": {
"SCHOOLPASS_EMAIL": "<SCHOOLPASS_EMAIL>",
"SCHOOLPASS_PASSWORD": "<your schoolpass_password>",
"SCHOOLPASS_SCHOOL_CODE": "<SCHOOLPASS_SCHOOL_CODE>",
"SCHOOLPASS_API_HOST": "<SCHOOLPASS_API_HOST>",
"SCHOOLPASS_TIMEZONE": "<SCHOOLPASS_TIMEZONE>",
"SCHOOLPASS_SESSION_CACHE": "<SCHOOLPASS_SESSION_CACHE>",
"SCHOOLPASS_SESSION_FILE": "<SCHOOLPASS_SESSION_FILE>"
}
}
}
}
متغيرات البيئة
SCHOOLPASS_EMAILYour SchoolPass parent account email address.SCHOOLPASS_PASSWORDسري Your SchoolPass parent account password.SCHOOLPASS_SCHOOL_CODEThe numeric school id (AppCode) SchoolPass uses to select your school.SCHOOLPASS_API_HOSTOptional regional API host override (default busapi-east16-ss.school-pass.net).SCHOOLPASS_TIMEZONEThe school's IANA timezone (e.g. America/New_York), used for the "today" default of the calendar and pickup-change reads. Defaults to the server's local zone; set it when the server runs elsewhere (a hosted server runs in UTC, so evening defaults would otherwise point at tomorrow).SCHOOLPASS_SESSION_CACHESet to false to disable the on-disk session cache and re-authenticate on every process start. Defaults to enabled.SCHOOLPASS_SESSION_FILEAbsolute path for the session cache file. Defaults to $MCP_DATA_DIR/.schoolpass-mcp/session.json.
التوثيق
مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.
schoolpass-mcp
MCP server for SchoolPass — read AND change your child's school arrival & dismissal from a parent account. Talks to the SchoolPass REST API used by the SchoolPass web and mobile apps, authenticating server-side with your own parent email and password (no browser, no extension).
Developed and maintained by AI (Claude Code). Use at your own discretion.
Parent-scoped: read tools plus a confirm-gated dismissal-change write/cancel.
Tools
| Tool | What it does |
|---|---|
schoolpass_healthcheck | Reachability + authentication, reported separately. |
schoolpass_whoami | The parent identity the server signed in as. |
schoolpass_list_students | Your linked students — name, grade, home dismissal location, aftercare. |
schoolpass_get_profile | The parent account profile. |
schoolpass_list_drivers | Authorized pickup drivers; include_carpool: true adds their carpools (other families' contact/vehicle fields dropped unless view: "full"). |
schoolpass_get_calendar | A student's arrival/dismissal calendar over a date range. |
schoolpass_list_pickup_changes | Pickup/dismissal changes for a student on a date. |
schoolpass_list_dismissal_locations | The school's dismissal locations, with ids. |
schoolpass_get_school_info | Basic school info and per-school config. |
schoolpass_submit_dismissal_change | Submit a dismissal/arrival change (confirm-gated: preview + single-use confirmToken). |
schoolpass_cancel_dismissal_change | Cancel a change, back to default (confirm-gated: preview + confirmToken). |
Configuration
| Env var | Required | Notes |
|---|---|---|
SCHOOLPASS_EMAIL | yes | Your SchoolPass parent account email. |
SCHOOLPASS_PASSWORD | yes | Your SchoolPass password. |
SCHOOLPASS_SCHOOL_CODE | yes | The numeric school id (the AppCode / appCode value; e.g. 1183). |
SCHOOLPASS_API_HOST | no | Regional API host override (default busapi-east16-ss.school-pass.net). Must be an https *.school-pass.net host — the password is sent there, so http:// or any other domain is refused. |
SCHOOLPASS_TIMEZONE | no | The school's IANA timezone (e.g. America/New_York), used for the "today" default of the calendar and pickup-change reads. Defaults to the server's local zone; set it when the server runs elsewhere (a hosted server runs in UTC, so evening defaults would otherwise point at tomorrow). |
MCP_CONFIRM_MODE | no | How the two writes confirm on a client that cannot show a prompt: ask-user (default — preview + token, the user approves in chat), auto (the model may use the token after reviewing the preview), or refuse. |
MCP_CONFIRM_ELICITATION | no | off never shows a confirmation prompt, so every client gets the MCP_CONFIRM_MODE behaviour. Set it for a client that says it can show prompts but never does (the write hangs — opencode 2.0.x). Default on; any other value is treated as on, with a warning on stderr. |
MCP_CONFIRM_TTL_SECONDS | no | How long a confirm token stays valid (default 600). |
MCP_CONFIRM_SECRET | no | HMAC key for confirm tokens; set only if tokens must survive a restart. On mcp-host the host supplies a stable per-child key (MCP_HOST_CONFIRM_SECRET) and spent tokens are recorded under MCP_DATA_DIR, so an approval survives an idle restart. |
Finding your school id and region host: sign into your school's
<school>.school-pass.net portal, open the new SchoolPass app, and read
appCode (the id) and apiUrl (the host) from its browser localStorage.
Install
{
"mcpServers": {
"schoolpass": {
"command": "npx",
"args": ["-y", "schoolpass-mcp"],
"env": {
"SCHOOLPASS_EMAIL": "you@example.com",
"SCHOOLPASS_PASSWORD": "your-password",
"SCHOOLPASS_SCHOOL_CODE": "1183"
}
}
}
}
Notes
- Parent scope only. A parent token cannot reach admin routes (visitor
management, carline operations, reports, bus routing); those return
403. - Never retry a rejected login. SchoolPass fronts its login with reCAPTCHA; repeated failures can get the account challenged. A password SchoolPass refuses (400/401) is tried once per process: later calls return the same error without contacting SchoolPass until the configured credentials change or the server restarts. A CDN/WAF block page (CloudFront, Cloudflare, …) is not a refusal: it is reported as an edge block, never latched, and never spends or discards the stored session.
- No credentials, still boots. The server starts without configuration and
answers
tools/list; the config error surfaces on the first tool call.
Without the server: curl
The SchoolPass API is reachable server-side, so a one-off shell read needs no
MCP process — see the bundled schoolpass-curl skill
(skills/schoolpass-curl/) for a curl + jq recipe set.
Development
npm install
npm test # tsc typecheck + unit + boot tests
npm run build # tsc + esbuild bundle
node --env-file=.env scripts/live-check.mjs # live read-only check (needs .env)
License
MIT
الأسئلة الشائعة
ما هو io.github.chrischall/schoolpass-mcp؟
SchoolPass for Claude — students, arrival/dismissal calendar, pickup changes, and school info
كيف أثبّت io.github.chrischall/schoolpass-mcp؟
يعمل على جهازك. في Claude Code: claude mcp add schoolpass-mcp -e 'SCHOOLPASS_EMAIL=<SCHOOLPASS_EMAIL>' -e 'SCHOOLPASS_PASSWORD=<your schoolpass_password>' -e 'SCHOOLPASS_SCHOOL_CODE=<SCHOOLPASS_SCHOOL_CODE>' -e 'SCHOOLPASS_API_HOST=<SCHOOLPASS_API_HOST>' -e 'SCHOOLPASS_TIMEZONE=<SCHOOLPASS_TIMEZONE>' -e 'SCHOOLPASS_SESSION_CACHE=<SCHOOLPASS_SESSION_CACHE>' -e 'SCHOOLPASS_SESSION_FILE=<SCHOOLPASS_SESSION_FILE>' -- npx -y schoolpass-mcp@1.0.10. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.
هل يحتاج io.github.chrischall/schoolpass-mcp إلى مفتاح API؟
نعم. يتطلب SCHOOLPASS_PASSWORD، وتضبطها في إعداداته.
هل io.github.chrischall/schoolpass-mcp مفتوح المصدر؟
نعم. شيفرته متاحة على GitHub بترخيص MIT.
من يصون io.github.chrischall/schoolpass-mcp؟
ينشره chrischall. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.
من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.