Inspiration

Students juggle several deadlines at once, and most planners only list tasks. They don't tell you whether you have enough time. I wanted a tool that takes your deadlines and returns a realistic day-by-day plan.

What it does

CampusPilot MCP is an MCP (Model Context Protocol) server for the Alexa+ track with four tools:

  • add_assignment: saves an assignment or exam with a due date and hours needed
  • list_assignments: shows tasks sorted by due date, with days remaining
  • create_study_plan: spreads study hours across the days before each deadline, and prints a WARNING if there isn't enough time
  • generate_quiz: turns study notes into fill-in-the-blank questions with an answer key (rule-based, not AI)

Bad input is rejected with clear error messages instead of crashing, for example an invalid date such as "tomorrow", zero study hours, or notes that are too short.

The server runs over Streamable HTTP (node server.js --http) at http://127.0.0.1:3000/mcp, and connects with MCP spec 2025-11-25. It also runs over stdio for the MCP Inspector.

How I built it

JavaScript on Node.js with the official MCP SDK (@modelcontextprotocol/sdk) and Zod for input validation. Assignments are saved to a local JSON file so they persist between sessions. I tested every tool with the MCP Inspector.

The study planner fills the days just before each deadline first, respects the daily hour limit, and reports any shortfall.

Challenges

This was my first MCP project. I had to learn how MCP tools are registered, how stdio and Streamable HTTP transports differ, how to fix Windows PowerShell blocking npm scripts, and how to clean a Git repository. I also had to make the planner handle several deadlines competing for the same days.

What I learned

How to build and test an MCP server, validate inputs, handle errors, and publish an open-source project.

What's next

Connecting the server to a voice experience, and using an AI model to write richer quiz questions.

Code

https://github.com/01fe25bec314-coder/campuspilot-mcp (MIT license)

Built With

Share this project:

Updates

Submission history