upcoming_events
Retrieve upcoming assignments and calendar events from all Canvas courses, covering roughly the next two weeks.
Instructions
Upcoming planner items (assignments, calendar events) across all courses. Canvas returns roughly the next two weeks.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- canvas_local_mcp/server.py:82-85 (handler)Tool handler for 'upcoming_events' - calls Canvas API /api/v1/users/self/upcoming_events to fetch upcoming planner items.
@mcp.tool() def upcoming_events() -> list[dict]: """Upcoming planner items (assignments, calendar events) across all courses. Canvas returns roughly the next two weeks.""" return _get("/api/v1/users/self/upcoming_events") - canvas_local_mcp/server.py:82-82 (registration)Registration via @mcp.tool() decorator from FastMCP, which registers 'upcoming_events' as an MCP tool.
@mcp.tool() - canvas_local_mcp/server.py:30-49 (helper)Helper function _get() that executes the actual HTTP GET request to the Canvas API, handling pagination via Link headers.
def _get(path: str, **params) -> Any: params.setdefault("per_page", 100) url = f"{BASE}{path}" out = [] with httpx.Client(headers=HEAD, timeout=30) as c: while url: r = c.get(url, params=params) r.raise_for_status() data = r.json() if isinstance(data, list): out.extend(data) else: return data url = None params = {} link = r.headers.get("Link", "") for part in link.split(","): if 'rel="next"' in part: url = part[part.find("<")+1:part.find(">")] return out