Inspiration

What it does

How we built it

Challenges we ran into

Accomplishments that we're proud of

What we learned

What's next for Agent-Native School ERP: Powered by WebMCP

Project Story

Inspiration Traditional School ERP systems are notoriously complex, packed with dense menus, multi-step forms, and steep learning curves. We realized that teachers and school administrators spend hours navigating these clunky interfaces instead of focusing on what truly matters: education. When WebMCP was introduced, we saw the perfect opportunity to bridge the gap between complex databases and human intent. We wanted to transform the UX from "navigational" to "conversational," allowing educators to manage an entire school through simple natural language.

What it does Our project is a full-stack, Agent-Native School Management System. It allows AI agents (like ChatGPT) to act as an administrative co-pilot directly within the browser. Once an administrator logs securely into the dashboard, the app exposes 7 powerful WebMCP tools:

search_student_records mark_attendance check_pending_fees get_class_summary get_class_students generate_invoice add_student Instead of clicking through five different screens to find pending fees and generate an invoice, an administrator can simply type: "Find all Grade 3 students with pending fees and generate their invoices." The AI agent automatically chains the WebMCP tools to complete the workflow in seconds.

How we built it We adopted a robust full-stack architecture:

Frontend: React and Vite, deployed on Netlify. Backend: Java Spring Boot, deployed on Render. Database: PostgreSQL hosted on Supabase. WebMCP Integration: We used the window.document.modelContext.registerTool API inside a secure, authenticated React useEffect hook. We ensured that tools are strictly exposed only after a successful JWT/Session login. Each tool is equipped with a strict JSON schema for input validation, and the execute function securely passes the user's authentication token/cookies to our Spring Boot backend. Challenges we ran into Building a production-ready WebMCP app came with serious hurdles:

Supabase Connection Limits: Our Spring Boot's default HikariCP connection pool quickly exhausted the Supabase free tier's 15 concurrent connections limit, causing FATAL: EMAXCONNSESSION errors during deployment. We solved this by strictly limiting the maximum-pool-size and managing idle timeouts. Cross-Domain Authentication: Because our frontend was on Netlify and backend on Render, the browser blocked our session cookies, throwing 400 Bad Request errors. We had to dive deep into Spring Security to configure Cross-Site cookies using SameSite=None and Secure=true. Strict CORS Policies: Managing wildcard origins with credentials proved difficult until we upgraded our configuration to use allowedOriginPatterns. AI Form-Filling Limitations: We learned that headless browsers used by AI agents sometimes struggle with complex SPA login forms, which required us to optimize our DOM structure for agent readability. Accomplishments that we're proud of Successfully building and integrating 7 diverse read and write WebMCP tools in a short span of time. Achieving a secure architecture where AI agents operate strictly within the bounds of human authentication (tools are hidden behind the login screen). Successfully deploying a complex 3-tier architecture (Netlify + Render + Supabase) that runs seamlessly in the cloud. What we learned We gained a profound understanding of the new WebMCP specifications and how the document.modelContext interacts with the browser's DOM. We also learned how to write strict JSON schemas that prevent AI hallucinations, ensuring the agent always sends exactly what the Spring Boot backend expects.

What's next for Agent-Native School ERP: Powered by WebMCP We plan to expand the agent's capabilities by adding WebMCP tools for generating report cards, scheduling parent-teacher meetings, and eventually integrating an automated WhatsApp notification system for parents directly triggered by the AI agent's actions.

Share this project:

Updates

Submission history