omnivox-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OMNIVOX_CONFIG | Yes | Contents of config.json from the omnivox-connection auth app, as base64 (base64 -w0 config.json) or raw JSON. | |
| OMNIVOX_COOKIES | Yes | Contents of cookies.json from the omnivox-connection auth app, as base64 (base64 -w0 cookies.json) or raw JSON. | |
| OMNIVOX_DATA_DIR | No | Data directory for config, cookies, browser profile, and access key. | /tmp/omnivox |
| BROWSER_LAUNCH_ARGS | No | Extra Chrome flags. Chrome runs as root in the container and needs the sandbox disabled. | --no-sandbox --disable-setuid-sandbox |
| BROWSER_REFRESH_INTERVAL | No | Minutes between automatic page refreshes to keep the Omnivox session alive. Recommended: 10. | |
| ENABLE_EXTERNAL_SERVICE_LINKS | No | When true, enables get-service-link, which returns pre-authenticated links to web-only Omnivox services. Off by default because these links log into the full web portal. | false |
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 |
|---|---|
| get-overviewA | Dashboard of what's actionable right now: today's schedule, per-course new items (documents, announcements, assignments, grades) with delta tracking, new MIO messages, upcoming evals, notifications, and featured college news. Best starting point to see what needs attention. |
| get-termsA | Get the list of available academic terms (sessions) and the current default term, with human-readable names. |
| get-calendarA | Retrieve the real day-by-day calendar: classes, holidays, day swaps, cancelled classes, exams and deadlines. Prefer this over get-schedule for what happens on a given day. Exam and assignment dates only appear if the teacher entered them on Lea, so read the course syllabus for the full picture. |
| get-college-documentsA | List the official documents the college has sent to the student (admission letters, enrollment confirmations, notices, acknowledgments). Read-only: a mandatory document that has not been opened blocks every Lea tool until the student opens it in Omnivox themselves, and opening it is recorded on the student file, so this tool only names the document. Use it when another tool reports a mandatory college document block. |
| get-college-listA | Retrieve the list of colleges available to the user. |
| get-college-newsB | Retrieve the latest news and announcements from the college. |
| get-online-formsA | List the online forms the college publishes in Omnivox (workshop registrations, course withdrawal requests, surveys, sign-ups), with whether each one is currently open. Read-only: filling a form stays in the Omnivox web portal. |
| get-absencesA | Retrieve absence summaries for all courses in a given term or the current term. |
| get-course-announcementsC | Retrieve announcements (communiqués) for a specific course. |
| get-assignment-detailA | Full detail of one assignment: deadline, instructions, what is in the hand-in deposit, teacher documents and corrected copies, with the file IDs get-assignment-file-link needs. A file in the deposit means something was uploaded, not that the work is finished. |
| get-assignment-submit-linkA | Get a short link that opens the Omnivox hand-in page for an assignment, already logged in. Give it to the user so they can upload their file in their own browser — this tool never submits anything itself. Link expires after 15 minutes. Fails if online submission is closed for the assignment, or if the server has no public URL (MCP_SERVER_URL). |
| get-course-assignmentsA | List the assignments of a course with their deadline and what is in the hand-in deposit. A file in the deposit means something was uploaded, not that the work is finished. Incomplete by nature: many teachers never post assignments here, so an empty list does not mean there is no homework. Cross-check the course syllabus from get-course-documents. |
| get-assignments-summaryA | Per-course assignment counts for a term, with the titles Lea still lists as to hand in. Only counts assignments teachers posted on Lea; an empty summary does not mean the student is caught up. Use get-course-assignments for deadlines and deposit contents. |
| get-cancelled-classesA | Retrieve upcoming cancelled class sessions with time, course, teacher, room and any teacher comment. |
| get-course-infoB | Retrieve info about a specific course. Includes the course identity and teacher names. |
| get-course-documentsC | Retrieve a list of documents for a specific course. |
| get-grades-summaryA | Retrieve a list of grades summaries for the user's courses in a given term or the current term. |
| get-course-evalsA | Retrieve evaluations, grades and course summary for a specific course. Ungraded evaluations show no mark. Evaluations the teacher has not entered in Lea will not appear at all, so reconcile the list against the course syllabus. |
| get-courses-summaryB | Retrieve a summary of courses for a given term or the current term. |
| get-teachersA | Fallback tool to get all teachers for a term. Returns names, departments, offices, phone numbers, and MIO IDs, but does NOT include which course each teacher teaches. Prefer get-course-people to look up teachers for a specific course — only use this tool if get-course-people fails or you need the full roster. |
| get-mio-attachment-linkA | Fetch a MIO message attachment. In HTTP mode with MCP_SERVER_URL set, returns a browser link that expires after 15 minutes; otherwise saves the file locally and returns its path. Get attachment IDs from read-mio-message. |
| get-course-peopleA | List teachers and students for a specific course (max 75 results). Returns recipient IDs usable with send-mio-message. |
| create-mio-folderC | Create a new custom folder in MIO (internal messaging). |
| delete-mio-messageA | Move a MIO message to trash (not permanent). Use restore-mio-message to undo. |
| flag-mio-messageC | Set flag indicators (important, mark_unread) on a MIO message. |
| get-mio-foldersA | Retrieve the list of MIO (internal messaging) folders and their unread counts. Folder IDs are string constants like SEARCH_FOLDER_MioRecu; pass them as folder_id to the other MIO tools. |
| get-mio-messagesB | Retrieve MIO messages from a folder. Supports pagination via last_id. |
| move-mio-messageB | Move a MIO message to a different folder. |
| read-mio-messageA | Retrieve and read the full content of a single MIO message by its ID, from any folder. Returns the complete message body as plain text. |
| reply-mio-messageA | Reply to a MIO message. Sends to the original sender, quotes the original under the reply and links the thread. |
| restore-mio-messageA | Restore a deleted MIO message from trash back to the inbox. |
| search-mio-messagesC | Search MIO messages by text. |
| search-peopleA | Search for people (students, teachers, employees) by name. Useful to find recipient IDs for sending MIO messages. |
| send-mio-messageA | Send a new MIO message. Use search-people first to get the recipient_id. Supports sending to multiple recipients at once. |
| get-scheduleA | Retrieve the static weekly class schedule (timetable) for a given term or the current term. Same every week: it does not reflect holidays, day swaps or cancelled classes. Use get-calendar for those. |
| get-service-linkA | Get a pre-authenticated link to an Omnivox web-only service (lockers, transcript, progression chart, advisor appointments, ...). These services have no API here, so the link is how to reach them. Open it yourself to read the page for the user, or give it to the user. Any action on the page needs the user's explicit authorization for that specific action. It logs the browser into the user's full Omnivox account, so treat it like a password. Expires after 15 minutes. |
| get-assignment-file-linkA | Fetch an assignment file (teacher document, student submission, or corrected copy). In HTTP mode with MCP_SERVER_URL set, returns a browser link that expires after 15 minutes; otherwise saves the file locally and returns its path. Get file IDs and roles from get-assignment-detail. |
| get-document-linkB | Fetch a Lea document. In HTTP mode with MCP_SERVER_URL set, returns a browser link that expires after 15 minutes; otherwise saves the file locally and returns its path. Marks the document as read on Omnivox, so use get-course-documents first if you are only browsing. |
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 38 tools
Most tools target a clearly distinct resource+action, and the descriptions proactively disambiguate the risky pairs (get-schedule vs get-calendar, get-courses-summary vs get-grades-summary vs get-assignments-summary, get-teachers vs get-course-people as an explicit fallback). The main residual confusion is the cluster of five 'link' tools (get-document-link, get-assignment-file-link, get-assignment-submit-link, get-mio-attachment-link, get-service-link), which share a shape and expiry behavior and only differ by resource.
Every name is lowercase kebab-case verb_noun: get-* for reads, and clear action verbs for mutations (send-, reply-, delete-, move-, flag-, restore-, create-, search-). No camelCase or snake_case mixing, and the verb choice consistently signals read vs write.
38 tools is heavy even for a server spanning three subsystems (MIO messaging, Lea courses, college services). Several clusters could be consolidated — e.g. the five link-fetching tools could be one parameterized tool, and the summary tools (courses/grades/assignments) could share a parameterized surface — so the count is above what the scope strictly needs.
Coverage is strong: MIO has full lifecycle (list, search, read, send, reply, move, flag, trash, restore, folders, attachments) and the Lea/college side covers courses, people, documents, announcements, assignments, evals, grades, absences, calendar, forms and service links. Minor gaps remain — notifications are only surfaced inside get-overview with no dedicated retrieval tool, and there is no way to access a single announcement or document body without fetching the file.