SchoolMessenger MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SchoolMessenger MCP Draft an absence for Emma tomorrow with the reason 'doctor appointment'."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SchoolMessenger MCP
Absence-only MCP server for SchoolMessenger SafeArrival.
This server is intentionally narrow. It can list attendance-enabled students, list absence types/reasons, list existing absences, draft an absence, submit a previously drafted absence, draft an absence cancellation, and cancel a previously drafted cancellation only when the caller provides the exact confirmation phrase returned by the draft tool.
Configuration
Use environment variables:
export SCHOOLMESSENGER_REGION=ca
export SCHOOLMESSENGER_USERNAME='parent@example.com'
export SCHOOLMESSENGER_PASSWORD='...'
schoolmessenger-mcpOr use the existing local credentials file:
export SCHOOLMESSENGER_REGION=ca
export SCHOOLMESSENGER_CREDS_FILE=~/.config/schoolmessenger.ca/creds.yml
export SCHOOLMESSENGER_ACCOUNT=default
schoolmessenger-mcpCredential YAML shape:
default:
username: parent@example.com
password: passwordDo not commit credentials.
Related MCP server: schoolpass-mcp
Tools
list_studentslist_absence_optionslist_absencesdraft_absencesubmit_absencedraft_cancel_absencecancel_absence
Safety
draft_absence performs local validation and returns a human-readable confirmation phrase.
submit_absence refuses to call SchoolMessenger unless the phrase exactly matches a draft stored
in the current MCP process.
draft_cancel_absence looks up an existing absence, returns a human-readable cancellation summary,
and provides a CANCEL ABSENCE <draft_id> confirmation phrase. cancel_absence refuses to call
SchoolMessenger unless that phrase exactly matches a cancellation draft stored in the current MCP
process.
The server never logs OAuth tokens or passwords.
Codex Desktop Example
{
"mcpServers": {
"schoolmessenger": {
"command": "python3",
"args": ["-m", "schoolmessenger_mcp.server"],
"env": {
"SCHOOLMESSENGER_REGION": "ca",
"SCHOOLMESSENGER_CREDS_FILE": "~/.config/schoolmessenger.ca/creds.yml",
"SCHOOLMESSENGER_ACCOUNT": "default"
}
}
}
}API Notes
Discovery notes are in docs/api.md.
Available Tools
7 toolscancel_absenceC
Cancel a previously drafted absence cancellation after exact confirmation.
Inputs: draft_id (required), confirmation_phrase (required). Returns: object
draft_absenceB
Draft an absence and return the confirmation phrase required for submit_absence.
Inputs: reason (required), absence_type (required), date, comment, +5 more. Returns: object
draft_cancel_absenceB
Draft cancellation of an existing absence and return the required confirmation phrase.
Inputs: absence_id (required), to_date, from_date, customer_id. Returns: object
list_absence_optionsC
List absence types and reasons for a student selector or the only available student.
Inputs: student. Returns: object
list_absencesC
List existing absences for a date range.
Inputs: to_date, from_date, unexplained_only. Returns: object
list_studentsA
List attendance-enabled students available to the configured account.
Inputs: no named parameters. Returns: object
submit_absenceB
Submit a previously drafted absence after exact confirmation.
Inputs: draft_id (required), confirmation_phrase (required). Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
The tools are mostly distinct: listing students, absence options, absences, drafting, submitting, and canceling. However, 'draft_cancel_absence' and 'cancel_absence' overlap somewhat, as both relate to cancellations, but the context (draft vs submit) helps disambiguate.
Mostly consistent verb_noun pattern (list_*, draft_*, submit_*, cancel_*). The only minor deviation is draft_cancel_absence, which is a compound verb but still understandable.
7 tools is well-scoped for a school attendance management server. Each tool serves a clear purpose in the workflow without redundancy.
The workflow covers listing options, listing existing data, drafting, submitting, and canceling (both full and drafted cancellations). This seems complete for the stated domain of managing absences.
Maintenance
Related MCP Connectors
Read absences, time entries and balances; run the time clock and request absences in Timebutler.
Read Papershift absences, vacation, time tracking and shifts; request and review absences.
Read students, rolls and attendance; create and update students, contacts and houses in Orah.
Read Shiftbase rosters, timesheets, absences and availability; schedule shifts and review absences.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables managing school attendance records and interacting with GitHub repositories, including committing files, fetching repository information, and marking student attendance status through natural language.ISC
- AlicenseAqualityAmaintenanceEnables parents to view and manage their child's school arrival and dismissal details, including calendar, pickup changes, drivers, and school information, using the SchoolPass REST API.11507 npmMIT
- AlicenseAqualityAmaintenanceEnables querying AlphaPortal student information, assigned bus stops, live bus GPS locations, and arrival/departure notifications, with confirm-gated updates to notification preferences and walk-zone radius.16505 npmMIT
- AlicenseCqualityCmaintenanceEnables an agent to read and act on a Norwegian school parent portal through its unofficial API, covering message threads and attachments, timetables, absences, consent forms, news and scheduling events. Tokens are stored locally, and raw GET tools allow further endpoint exploration.122MIT