list_announcements
Retrieve all announcements for a specific Canvas course by providing the course ID.
Instructions
Course announcements.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| course_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |
Implementation Reference
- canvas_local_mcp/server.py:96-98 (handler)The handler function for the list_announcements tool. It takes a course_id and calls the Canvas API endpoint /api/v1/courses/{course_id}/discussion_topics with only_announcements=True.
def list_announcements(course_id: int) -> list[dict]: """Course announcements.""" return _get(f"/api/v1/courses/{course_id}/discussion_topics", only_announcements=True) - canvas_local_mcp/server.py:95-95 (registration)The registration decorator @mcp.tool() that registers list_announcements as an MCP tool.
@mcp.tool() - canvas_local_mcp/server.py:30-49 (helper)The _get helper function used by list_announcements to make HTTP GET requests to the Canvas API, handling pagination.
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