infinitecampus-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| IC_1_NAME | No | Name for district 1 (e.g., anoka) | |
| IC_2_NAME | No | Name for district 2 (e.g., another district) | |
| IC_3_NAME | No | Name for district 3 (e.g., another district) | |
| IC_1_BASE_URL | No | Base URL for district 1 (e.g., https://anoka.infinitecampus.org) | |
| IC_1_DISTRICT | No | District identifier for district 1 (e.g., anoka) | |
| IC_1_PASSWORD | No | Password for district 1 | |
| IC_1_USERNAME | No | Username for district 1 (e.g., parent@example.com) | |
| IC_2_BASE_URL | No | Base URL for district 2 | |
| IC_2_DISTRICT | No | District identifier for district 2 | |
| IC_2_PASSWORD | No | Password for district 2 | |
| IC_2_USERNAME | No | Username for district 2 | |
| IC_3_BASE_URL | No | Base URL for district 3 | |
| IC_3_DISTRICT | No | District identifier for district 3 | |
| IC_3_PASSWORD | No | Password for district 3 | |
| IC_3_USERNAME | No | Username for district 3 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ic_healthcheckA | Resolves the credential the way real tools do, then makes one authenticated request to your Infinite Campus portal. Reports which source supplied the credential, whether your Infinite Campus portal accepted it, the round-trip time, and a plain-English hint distinguishing 'no credential' from 'credential rejected' from 'a your Infinite Campus portal-side problem'. Read-only; never returns the credential itself. Call this when a real tool fails and you want to know which hop broke. |
| ic_list_districtsA | List Infinite Campus districts configured for this MCP server. Returns names + base URLs (no credentials). |
| ic_list_studentsA | List students enrolled under the parent account for a given district. |
| ic_get_scheduleA | Get a student's class schedule for a given date (default: today). |
| ic_list_assignmentsA | List a student's assignments. The IC endpoint returns the full term history (~hundreds of items); date and missing filters are applied client-side. For a single course, pass courseId (the sectionID from ic_get_schedule). |
| ic_list_gradesB | List a student's term grades and in-progress course grades. |
| ic_list_attendanceA | List a student's absences and tardies (per-course summary grouped by term). Auto-resolves enrollmentID from the student record. |
| ic_list_behaviorA | List a student's behavior events / referrals. Returns FeatureDisabled if the district has the behavior module turned off (detected via displayOptions or a 404 backstop). |
| ic_list_food_serviceA | List a student's lunch balance and recent food-service transactions. Returns FeatureDisabled if the district has the module turned off (detected via displayOptions or a 404 backstop). |
| ic_list_messagesA | List all parent-visible messages from three IC sources combined: (1) prism notifications (assignment alerts, grade postings, attendance alerts), (2) Messenger 2.0 inbox (teacher messages, district announcements with newMessage/actionRequired flags), and (3) portal userNotice announcements. Each section has its own count and items; if any source errors, that section contains an error field and the others still return normally. The |
| ic_get_messageA | Fetch the HTML body of an inbox message and return it parsed into { subject, date, body, url }. Takes a |
| ic_list_documentsA | List a student's available documents (report cards, transcripts, schedules). Returns metadata only — use ic_download_document to fetch the file. Returns FeatureDisabled if the district has the module turned off. |
| ic_download_documentA | Download a student's document (PDF) to disk. documentId is the url field returned by ic_list_documents. Returns FeatureDisabled if the district has the module turned off. |
| ic_list_school_daysA | List a student's school days (instructional calendar) grouped by term. Returns one entry per enrollment, with term boundaries (Q1-Q4 start/end dates) and the school days inside each term — including comments like 'Teacher Workday' or 'Spring Break'. Use since/until to narrow the range. |
| ic_list_attendance_eventsA | List individual attendance events (absences, tardies, early releases) for a student. Each event has a code, description, excuse reason, and optional human-readable comments. Auto-resolves enrollmentID from the student record. Use since/until to filter by date and excusedOnly to show only excused events. |
| ic_list_recent_gradesA | List recently-graded assignments for a student. Server-side filtered by scoreModifiedDate. Pass since=YYYY-MM-DD to set the cutoff; defaults to 14 days ago. |
| ic_list_teachersA | List a student's teachers (per enrolled section) and assigned counselor(s). Combines two endpoints (section/contacts and studentCounselor/byUser). Response field shapes may vary slightly by district — core fields (firstName, lastName, email) are consistent; additional fields are passed through. |
| ic_list_assessmentsA | List a student's standardized test scores (state, national, district tests). Auto-resolves calendarID from each of the student's enrollments and returns one entry per enrollment. The shape of individual test records varies by district and test type — fields are passed through unchanged. |
| ic_list_feesA | List a student's fee assignments (charges owed) and running balance/surplus. Combines two endpoints: fee assignments and totalSurplus. Returns FeatureDisabled only if both endpoints 404; if only one works, returns that side with warning: 'PartialSuccess' and an issues[] explaining which endpoint failed. |
| ic_get_featuresA | List the district's displayOptions feature-flag allow-list for each of a student's enrollments. Each enrollment's |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Most tools map cleanly to a distinct Infinite Campus module (fees, behavior, food service, documents, etc.), and the detailed descriptions reinforce those boundaries. Two pairs create moderate confusion risk: ic_list_attendance vs ic_list_attendance_events (summary vs individual events) and ic_list_grades vs ic_list_recent_grades (term grades vs recently-graded assignments, despite the misleading name).
All tools share a consistent ic_ prefix and nearly all follow ic_<verb>_<noun> with list_ for collections and get_/download_ for single items, which is a readable and predictable pattern. Deviations include ic_healthcheck (noun-only) and the misleading ic_list_recent_grades, which actually returns assignments rather than grades.
20 tools is on the heavy end of the 16–25 borderline range, though each maps to a distinct SIS module, making the count defensible for Infinite Campus's broad feature surface. Some near-duplicates (attendance summary vs events; assignment history vs recent grades) slightly inflate the count and could have been merged or more clearly separated.
The read-only parent-portal surface is thoroughly covered: every major module (assessments, attendance, behavior, calendar, documents, fees, food service, grades, assignments, messages, schedule, teachers) has a dedicated tool, and messages/documents have complete list-then-fetch pairs. Gaps are minor — no explicit mark-as-read for messages, no student profile detail beyond the roster list, and no write operations (likely by design).