omnivox-mcp

Exposes Omnivox student portal data through MCP tools and REST endpoints via Puppeteer.

4|1|Updated Jan 27, 2026
One-click install
npx skills add https://github.com/Beat-YT/omnivox-mcp --skill omnivox-mcp-beat-yt
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: omnivox-mcp
Source: https://github.com/Beat-YT/omnivox-mcp
Command: npx skills add https://github.com/Beat-YT/omnivox-mcp --skill omnivox-mcp-beat-yt

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @modelcontextprotocol/sdk, express, puppeteer, zod, tsx, dotenv, jsdom.

What problem does it solve? Quebec college students using Omnivox/Lea have no official API, so assistants and scripts cannot access grades, schedules, assignments, or MIO messages. This Skill runs a self-hosted server that logs into Omnivox once through a persistent Puppeteer browser and exposes the entire portal as structured tools. ## Core Features & Use Cases - 34 MCP tools plus REST gateway: Covers LEA courses, grades, evaluations, schedule, calendar, documents, assignments, absences, and MIO messaging, with every tool also available as a plain HTTP endpoint and an OpenAPI 3.1 spec at GET /openapi.json. - Delta tracking and document access: Tools annotate what changed since the last call, and document/assignment download links let an agent fetch and read syllabi, assignment sheets, and attachments. - Raw Omnivox proxy: The /Mobl/* route forwards any request through the authenticated session for direct access to the undocumented mobile API. - Use Case: A student asks their assistant "what's due this week and how did I do on my last exam?" The assistant calls get-overview, reads new grades against class averages, checks the calendar, and reads the course syllabus to map exam week numbers to real dates. ## Quick Start Clone the repository, run npm install, authenticate once with the omnivox-connection Electron app to save cookies.json and config.json into the data folder, then run npm start and connect your MCP client to http://localhost:3000/mcp?key=YOUR_KEY.

Frequently Asked Questions about omnivox-mcp

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I connect an AI assistant to Omnivox student data?▼

Run the Omnivox MCP server with npm start after authenticating once through the bundled Electron app. Connect any MCP client to http://localhost:3000/mcp?key=YOUR_KEY, or use the REST tool gateway at POST /tools/{tool-name} with the x-mcp-auth header for non-MCP assistants.

What tools does the Omnivox MCP server provide?▼

It provides 34 tools covering LEA courses, grades, evaluations, schedule, calendar, documents, assignments, absences, college news, and MIO messaging. Call GET /tools or GET /openapi.json on a running server for the live catalog with input schemas.

Does Omnivox MCP work with two-factor authentication?▼

Yes, Omnivox's 2-Step Verification is fully compatible. You complete MFA once during login in the Electron app, and the resulting session cookies are stored like any browser session. The project never sees or stores your password or MFA codes.

Why does get-calendar not show all my exam dates?▼

The calendar only shows evaluations professors explicitly posted on Lea, and many professors never enter them. The skill instructs agents to download and read each course syllabus via get-course-documents and get-document-link, then map syllabus week numbers to real dates.

Can I run Omnivox MCP in Docker?▼

Yes, a Dockerfile and docker-compose.example.yml are included. Authenticate once with the Electron app, mount your data folder into the container at /data/omnivox, and set BROWSER_LAUNCH_ARGS to --no-sandbox --disable-setuid-sandbox since Chrome runs as root.

What are the limitations of Omnivox MCP?▼

One instance supports one Omnivox account, and sessions eventually expire requiring re-login with npm run reset. Lea data is incomplete by default since professors may not post assignments or exams, so syllabi must be read for the full picture. Assignment submission cannot be automated.