← Projects

Schoology MCP Experiment

Independent MCP experiment that grouped selected Schoology assignments into ChatGPT briefings with source links.

Fall 2025 · AI tooling · Completed experiment

Presentation title slide reading Apps SDK and Schoology on a blue green gradient background
Presentation title card framing the experiment.

Stack

Stack: MCP · ChatGPT Apps SDK · Python · FastAPI · SQLite · SQLAlchemy

An independent MCP experiment: the server maintained a local mirror and returned selected assignment information to ChatGPT, grouped into briefings with direct source links.

Log

  1. DevDay drop

    Watched OpenAI introduce the Apps SDK. The Spotify demo showed a useful shape: ask in natural language, let a tool do the work, then render something richer than text inside ChatGPT. That made me wonder whether assignment information could use the same flow.

    OpenAI DevDay stage showing a Spotify app rendered inside ChatGPT
    A public DevDay demo that sparked the idea.
  2. Reading the protocol

    Pulled up the MCP shape. A host speaks one protocol; servers expose tools and resources; the host does not depend on the backing source. The local assignment mirror fit behind that boundary.

    MCP architecture diagram with Claude Desktop as the host connected through MCP Protocol to file system, GitHub, Slack, Bluesky, and Google Maps MCP servers
    A general MCP reference diagram; the same host-and-server boundary fit this experiment.
  3. Pattern catalog

    The Apps SDK's Pizzaz demo worked like a layout cookbook. The useful shape here was a grouped list: a count at the top, assignments organized by time window, and direct links to their original sources.

    Apps SDK Pizzaz Connector mockups showing ranked pizza list, map pins, horizontal restaurant cards, and stacked photo albums
    Reference layouts from the Apps SDK's Pizzaz demo.
  4. The pain, named

    Wrote down the friction in my own workflow: the information I wanted was spread across the feed and assignment materials, so I had to keep looking around. The experiment was to bring selected information together in a brief, linked view.

  5. Problem, mapped

    The slow part was getting from a busy dashboard to a useful list. Grouping selected assignments into one briefing gave me a clearer starting point while keeping the original links close.

  6. Architecture sketch

    Drew the pipeline before writing code: source, synchronizer, database, MCP server, then ChatGPT. The server answered from its local mirror, so each tool call did not need to wait for a live crawl.

    Horizontal architecture diagram showing Schoology flowing into a Synchronizer, then a database, then an MCP Server, then ChatGPT
    Implementation pipeline: sync into the local mirror, then return selected information through MCP.
  7. MCP wiring

    The MCP server exposed queries for relevant assignments and course materials. Each call returned selected information from the local mirror as a structured result ChatGPT could explain or format.

  8. Widget render

    The Apps SDK turned the result into a briefing: assignments grouped by time window, each with a direct link to its original source. ChatGPT handled the summary; the links kept the source close.

  9. Demo day

    The demo returned selected assignments grouped by time window, with direct links to their sources. A course-material query brought back a short, organized list with links to relevant source items. The experiment made a useful starting point in ChatGPT while keeping the original source one click away.

  10. What's next

    Next ideas were a grade-tracking dashboard, an assignment planner, and alerts when grades or due dates changed. They were roadmap concepts, each requiring another query and widget over the mirrored data.

    Future roadmap concept cards for grade tracking, assignment planning, and alerts
    Future concepts, beyond the current experiment.

Result

Grouped assignment briefings with direct source links.

What I learned

The interesting part was shaping selected assignment information into something ChatGPT could brief me on. MCP supplied a boundary, the server's local mirror supplied structured results, and the Apps SDK gave the answer a useful form. The experiment made a helpful starting point while keeping source links close.

Related