Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for canvas-mcp by vishalsachdev

Pod holds 20 of 49 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to canvas-mcp by vishalsachdev.

Most discussed

Feature request: Integrate UDOIT accessibility recommendations remediation for Canvas course content

Add tools to: apply UDOIT Advantage recommendations to improve course content accessibility

Thank you!

Read the thread · 2025-09-30 · closed · external user · 15 comments

[Bug]: peer review tools still not working

Bug Description

I had previously put in a ticket and it was marked resolve; however, the issue still stands. When i use the get_my_peer_reviews_todo it says no pending peer reviews. This is not true as I have a peer review assigned to me, the other person submitted, and it was after the due date of the assignment. I even tried prompting with the course and assignmnt id that has the peer review and that did not work

Steps to Reproduce

  1. configure canvas mcp
  2. ask for assigned peer…

Read the thread · 2026-08-10 · closed · external user · 11 comments

[Feature]: add tools for Canvas Quizzes

[!IMPORTANT] Scope has changed since this was filed — read the comments before writing code.

@zqian confirmed New Quizzes is the priority, not Classic. These are two different products on two different API roots (/api/quiz/v1 vs /api/v1) and the Classic REST endpoints in the link below do not work against New Quizzes. Anything built purely from this original description will target the wrong system.

Current plan is a tiered breakdown (Tier A read layer → C1…

Read the thread · 2026-07-29 · open · external user · 9 comments

[Bug]: Create announcement tool

Bug Description

I previously submitted issue #220. I am testing as a student. Now it is saying it cannot create an announcement but it is posting it as a dicussion instead. It does not confirm whether I want a discussion post made.

Steps to Reproduce

  1. Configure canvas mcp
  2. prompt to create announcement
  3. see it post a discussion rather than announcement.

Expected Behavior

It would give me a 403 error since I am a student and not post a discussion.

Actual Behavior

it…

Read the thread · 2026-08-12 · closed · external user · 8 comments

[Bug]: call search_canvas_tools for peer review but did not get MCP tools related to Peer Reviews

Bug Description

search_canvas_tools helps find available Canvas API tools by keyword, especially when you’re not sure which Canvas function to use.

However, when I asked search canvas tools for peer reviews, the answer is not related to peer review tools:

Image

Steps to Reproduce

  1. ask how to use search_canvas_tools
  2. MCP returns `search_canvas_tools…

Read the thread · 2026-08-11 · closed · external user · 5 comments

[Bug]: rubric not showing in assignment page after association

Bug Description

After associate rubric with an assignment, the rubric is not showing up in assignment detail page

Steps to Reproduce

  1. select a rubric in Canvas Rubrics tool, record down the rubric id
  2. issue the MCP call like "associate rubric 361 with assignment 5030 in course 505"
  3. The MCP returns success message "Rubric 361 has been successfully associated with Assignment 2 (ID: 5030) in course UIUC_MCP_Test_Course (505)."
  4. However, when I go to the assignment 5030 page, I…

Read the thread · 2026-07-30 · closed · external user · 5 comments

Make the execute_typescript sandbox uid configurable (TS_SANDBOX_UID_GID)

Follow-up to #157 and PR #317, from the Codex review of #317.

PR #317 pins the execute_typescript container to --user 65532:65532. That is the right default (a fixed, unprivileged uid that a container escape cannot turn into root, and it maps cleanly under rootless podman). It does assume the read-only /workspace bind mount and the image's own tooling are readable by that uid.

Two environments break that assumption, and in both the container fails before user code starts, with a…

Read the thread · 2026-08-30 · closed · 4 comments

mcp-remote clients re-login hourly — request offline_access scope for refresh token

Problem

The mcp-remote client config we generate requests Entra scope api://<app>/access_as_user without offline_access. Entra therefore issues an access token (~1h) but no refresh token. When the access token expires, mcp-remote must redo the full interactive browser OAuth flow.

Worse: if a stale mcp-remote process is still running from a prior session, the reconnect hangs instead of re-prompting.

Evidence (observed 2026-06-26 from a client)

Read the thread · 2026-06-26 · closed · 4 comments

Most recent

[Feature]: Provide option to disable accessibility checkers if not using UDOIT/UFIXIT

Problem Statement

It looks like the 4 accessibility checkers require having UDOIT/UFIXIT available which is an optional addon that we don't have. These should be disabled if not available.

I think it would probably be nice to support other accessibility checkers in the future but seems like that's the only one currently? Canvas has some new accessibility checker but I'm not sure if it has an API. Other a11y checkers possibly have an API or some way to tell if the course was scanned but…

Read the thread · 2026-08-26 · closed · external user · 1 comment

[Feature]: use confirmation token for delete tools

Problem Statement

Currently the following delete tools are included:

Note there is only one tool, delete_announcement_with_confirmation, uses confirmation token

Can we use the confirmation token for the rest of delete_ tools? delete_announcement can be removed

Also can we add delete_assignment_with_confirmation…

Read the thread · 2026-08-21 · closed · external user · 2 comments

[Feature]: add configuration to limit # of tools based on Canvas user role

Problem Statement

Azure platform enforced max # of MCP tools as 128. We need to combine Canvas MCP connector with other connectors for more system integrations, and keep the total combined MCP tools within the 128 limit.

Can we add a configuration variable like "CANVAS_USER_ROLE" in this Canvas MCP server? So only student-facing MCP tools will be turned on if CANVAS_USER_ROLE = Student, and teacher-facing MCP tools will be offered when CANVAS_USER_ROLE = Teacher, etc.

Proposed…

Read the thread · 2026-08-20 · closed · external user · 3 comments

[Feature]: add support for content migration

Problem Statement

Instructor reuse course materials; institutions provide course template with well-structured content materials.

It would be helpful to support course import or content migration in MCP.

Proposed Solution

The Canvas Content Migration API can be used.

For example, if choose to import all content from the source course, the following payload can be used:

course_id:…

[Read the thread](https://github.com/vishalsachdev/canvas-mcp/issues/309) · 2026-08-19 · closed · external user · 2 comments

### [Bug]: send_peer_review_reminders probably should not be doing reminders through the internal Inbox

### Bug Description

In Canvas UI, Peer Review Reminders appear to be done by sending an empty POST back to the same peer review to refresh the `updated_at`, a function the students can't do. This triggers an update to the students and sets the updated time. 

<img width="526" height="169" alt="Image" src="https://github.com/user-attachments/assets/8d30a58c-a613-49e0-9440-a57ffb13a61b" />

In the MCP for `send_peer_review_reminders` it does this reminder more direct by using the…

[Read the thread](https://github.com/vishalsachdev/canvas-mcp/issues/303) · 2026-08-18 · closed · external user · 0 comments

### Feature: optional cookie-based auth for Canvas instances that don't issue API tokens

### Problem

canvas-mcp authenticates with a Canvas API token created at **Account → Settings → New Access Token**. Some institutions disable or hide that page for students and route all access through SSO, so those users can't mint a token at all, which means they can't use canvas-mcp today even though they have a perfectly good logged-in Canvas session in their browser.

### Proposal

Add an **opt-in** auth mode that reuses the same session the browser uses, without changing the default…

[Read the thread](https://github.com/vishalsachdev/canvas-mcp/issues/299) · 2026-08-17 · closed · external user · 2 comments

### 91 of 99 tools emit their payload twice via an information-free output schema

**91 of our 99 tools return `-> str`** (counted by AST over `src/canvas_mcp/tools/`;
the other 8 return `dict[str, Any]`). For every one of those 91, FastMCP
auto-generates a wrapper output schema and emits the payload **twice** — once as
`content`, once as `structuredContent`.

Reproduced in the project venv against the pinned fastmcp 3.4.4:

outputSchema: {'properties': {'result': {'type': 'string'}}, 'required': ['result'], 'type': 'object',…

Read the thread · 2026-08-10 · closed · 1 comment

Tool failures never set isError — clients cannot distinguish a Canvas error from an empty result

Tool failures are reported as ordinary successful results. There are zero occurrences of isError or ToolError anywhere in src/ (verified by grep), against 150 return "Error ..." paths across the tool modules.

The MCP spec is explicit that this is the wrong shape. From the 2026-07-28 tools spec, "Error Handling": API failures, input validation errors and business logic errors "are reported in tool results…

Read the thread · 2026-08-10 · closed · 2 comments

[Bug]: created announcement was not saved in Canvas

Bug Description

Based on request in course 505, create announcement with title: "announcement 2 from MCP" with message "testing for announcement creation", the Canvas MCP reported the new announcement has been created successfully, and returned the new announcement id. However, the new announcement is not listed in Canvas course site, and the subsequent request could not retrieve it either.

<img width="717" height="486" alt="Image"…

Read the thread · 2026-08-08 · closed · external user · 2 comments

npm setup wizard configures clients against the retired mcp.illinihunt.org endpoint

What

npx canvas-mcp setup writes an MCP server block pointing at https://mcp.illinihunt.org/mcp into every client config it touches (cli/lib/config-writer.js:12, used at lines 90 and 102).

That host is retired, and it currently has no DNS record — so the wizard produces a config that cannot work, while also storing the user's Canvas API token alongside it.

Evidence

# The repo already documents the endpoint as retired
grep -n "retired" README.md            # -> line 268…

[Read the thread](https://github.com/vishalsachdev/canvas-mcp/issues/249) · 2026-08-08 · closed · 1 comment

### [Security]: course-authored page content is returned verbatim into model context (prompt-injection surface)

## Summary

`get_page_content` returns Canvas's page `body` verbatim, including `<script>`, `<link>`, and arbitrary attributes. That content is authored by anyone with page-edit rights in the course and flows straight into the calling model's context, where instructions embedded in it are indistinguishable from the user's own request.

Surfaced while investigating #233 (which turned out not to be a filtering bug — the opposite: nothing is filtered).

## Evidence

Verified against a live Canvas…

[Read the thread](https://github.com/vishalsachdev/canvas-mcp/issues/239) · 2026-08-08 · closed · 2 comments

### [Bug]: list announcements for course returns extra records like discussion topics

### Bug Description

When asked to "return announcements for course <course_id>", the returned records includes discussion topics, too.

### Steps to Reproduce

1. issue command "return announcements in course ID"
2. notice the returned records includes partial list of course announcements, along with several course discussion items. 
3. Notice also some author field values are also wrong, for example, the discussion topics titled as "HI" were not created by me

<img width="725" height="362"…

[Read the thread](https://github.com/vishalsachdev/canvas-mcp/issues/238) · 2026-08-08 · closed · external user · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/vishalsachdev/canvas-mcp/issues).