Skip to main content
Glama

Canvas MCP

Read-only FastMCP server for Canvas LMS study data.

This project is configured for CIAM Canvas by default:

https://ciam.instructure.com

Configuration

Set these environment variables before starting the server:

export CANVAS_BASE_URL="https://ciam.instructure.com"
export CANVAS_API_TOKEN="your-canvas-token"

Do not commit real Canvas tokens.

Related MCP server: canvas-lms

Install

cd /Users/zihanwang/Documents/Codex/canvas-mcp
uv sync --extra dev

Run

cd /Users/zihanwang/Documents/Codex/canvas-mcp
uv run canvas-mcp

The server speaks MCP over stdio.

MCP Client Config

Use this shape in an MCP client config. Replace your-canvas-token with your token in your local config only.

{
  "mcpServers": {
    "canvas": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/zihanwang/Documents/Codex/canvas-mcp",
        "run",
        "canvas-mcp"
      ],
      "env": {
        "CANVAS_BASE_URL": "https://ciam.instructure.com",
        "CANVAS_API_TOKEN": "your-canvas-token"
      }
    }
  }
}

Tools

  • canvas_self: current Canvas user.

  • canvas_courses: visible courses, defaulting to active enrollments.

  • canvas_course_assignments: assignments for a course.

  • canvas_upcoming_events: upcoming calendar events.

  • canvas_todo: todo items for the current user.

  • canvas_course_modules: modules and module items for a course.

  • canvas_course_pages: wiki pages for a course, with optional search.

  • canvas_course_files: files for a course, with optional folder filtering.

  • canvas_submissions: assignment submissions or visible course submissions.

  • canvas_raw_get: read-only escape hatch for /api/v1/... Canvas paths.

Local Verification

cd /Users/zihanwang/Documents/Codex/canvas-mcp
uv run pytest -v
uv run python -c "from canvas_mcp.server import mcp; print(mcp.name)"

Expected output from the smoke test:

Canvas LMS

Live API Smoke Test

After setting CANVAS_API_TOKEN, this should return your Canvas user profile:

cd /Users/zihanwang/Documents/Codex/canvas-mcp
uv run python - <<'PY'
from canvas_mcp.client import CanvasClient, CanvasConfig

client = CanvasClient(CanvasConfig.from_env())
try:
    print(client.get("users/self", paginate=False))
finally:
    client.close()
PY

Available Tools

10 tools
canvas_course_assignmentsC

List assignments for a Canvas course.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes
include_submissionsNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits such as pagination, authorization needs, or data limits. It only says 'List assignments,' offering no insight beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence, making it concise yet underinformative. It earns its place but could easily include more details without losing brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations, output schema, and parameter documentation, the description is notably incomplete. It fails to inform the agent about return structure, limits, or side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the parameters (course_id, include_submissions). The agent gets no hints about how or when to use these parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (list) and resource (assignments for a course), effectively distinguishing it from sibling tools like canvas_course_files or canvas_course_modules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, nor any context about prerequisites, filtering, or scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_course_filesB

List files for a Canvas course, optionally scoped to a folder.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes
folder_idNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must convey behavioral traits. It states it lists files but does not disclose whether it is read-only, pagination behavior, ordering, or required permissions. Minimal transparency beyond basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no extraneous information. Front-loads the purpose and optionality efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations, and only two parameters. The description lacks details on return data, pagination, file details, or error conditions. Insufficient for an agent to fully understand the tool's behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should add meaning. It mentions optional folder scoping but does not explain course_id or folder_id semantics, valid values, or format. Barely adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb "List" and resource "files for a Canvas course" with optional scoping to a folder. It distinguishes from sibling tools like canvas_course_assignments and canvas_course_modules by focusing specifically on files.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidelines on when to use this tool versus alternatives. The description does not mention exclusions, prerequisites, or context for choosing this over other course-level tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_course_modulesC

List modules and module items for a Canvas course.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description must bear the burden. It implies a read operation but fails to disclose authentication, rate limits, or any side effects. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with no wasted words. Very concise, though could be enriched without harming brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the single parameter and no output schema, the description is minimally adequate. It lists the tool's purpose but lacks details on response format, pagination, or scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%; no parameter descriptions. The description does not explain 'course_id' beyond its name, though the parameter is self-explanatory. Fails to add meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'modules and module items for a Canvas course'. It distinguishes from siblings by specifying modules rather than assignments or files, but does not explicitly contrast with other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like canvas_course_assignments or canvas_course_pages. Only states function without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_course_pagesB

List wiki pages for a Canvas course.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes
search_termNo

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It indicates a read operation ('List') but does not disclose details like pagination, ordering, or result format. It is minimal but not misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. It front-loads the essential purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema, annotations, and only 2 parameters, the description is too brief. It does not describe the return value, any limits (e.g., pagination), or how search_term affects results, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning parameters (course_id and search_term) are not explained in the description. The description adds no meaning beyond what the schema provides, and does not compensate for the low coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (List) and the resource (wiki pages for a Canvas course). It distinguishes itself from sibling tools like canvas_course_assignments and canvas_course_modules which list different entity types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It lacks any mention of when-not-to-use or which sibling tool might be more appropriate for specific needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_coursesC

List Canvas courses visible to the configured token.

ParametersJSON Schema
NameRequiredDescriptionDefault
enrollment_stateNoactive

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states that it lists visible courses, but does not disclose potential pagination, rate limits, performance implications, or that the enrollment_state parameter filters results. This is minimal disclosure for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but omits critical parameter information. It is appropriately front-loaded with the purpose, but the lack of detail reduces its effectiveness for agent usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (1 optional parameter, no output schema), the description is incomplete. It does not explain the return format, pagination, or how the enrollment_state parameter works. For a tool with no annotations, more context is needed to ensure correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description does not mention the enrollment_state parameter at all. The agent receives no explanation of what values are valid or how the parameter affects the output, leaving it with only the default value and type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'Canvas courses', with a qualifier 'visible to the configured token'. This distinguishes it from sibling tools like canvas_course_assignments or canvas_course_files, which target specific sub-resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as the more specific course-level tools. It does not mention context, prerequisites, or scenarios where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_raw_getC

Run a read-only GET against a Canvas /api/v1/... path.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
paginateNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

States read-only, which is helpful, but no mention of pagination behavior, error responses, or other behavioral traits. Without annotations, this is insufficient for a generic tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Too short and under-specified. While it is concise, it lacks crucial details, making it less useful than a slightly longer but more informative description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Incomplete given the lack of annotations and output schema. No information about return values, authentication, rate limits, or how to construct paths.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description provides no additional meaning for the 'path' or 'paginate' parameters beyond their names and types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it performs a read-only GET against a Canvas API path. Distinguishes itself from sibling tools that target specific resources, but could be more explicit about being a generic endpoint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus the specialized siblings. Does not mention alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_selfA

Return the current Canvas user for the configured token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It implies a read-only operation by stating 'Return', but does not explicitly confirm no side effects or mention authentication requirements. A minimal but adequate disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no unnecessary words. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no input parameters, no output schema), the description adequately explains what it does. It could mention the output type or user structure, but that's not strictly required. Completeness is sufficient for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema has 100% description coverage (empty). According to guidelines, 0 parameters earns a baseline of 4. The description adds no parameter info, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: returning the current Canvas user for the configured token. It uses specific verb ('Return') and resource ('Canvas user'), and is distinct from sibling tools that deal with courses, assignments, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While no explicit 'when to use' or alternatives are stated, the tool is self-explanatory. Users would understand to use it when they need information about the authenticated user. The context of sibling tools reinforces its distinct purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_submissionsC

List submissions for an assignment or visible course submissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
course_idYes
assignment_idNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description is the sole source. It only states the listing function without disclosing behavioral traits like read-only nature, authentication requirements, pagination, or permissions. Minimal transparency beyond basic purpose.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but lacks structure. Front-loaded with the verb and resource, but vague qualifiers like 'visible' reduce clarity. Could be improved without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is insufficient. It does not cover return format, pagination, error conditions, or example usage. For a listing endpoint, more context is needed for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description adds only vague context linking assignment_id to 'for an assignment' and course_id implicitly to the course. It does not explain the meaning of course_id, the behavior when assignment_id is null, or any constraints/formatting. Description fails to compensate for low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states tool lists submissions, either for a specific assignment or all visible course submissions. Verb 'list' and resource 'submissions' are specific. Differentiates two use cases based on assignment_id presence. However, 'visible course submissions' is ambiguous regarding what visibility criteria apply.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Sibling tools like canvas_course_assignments deal with assignments, but there is no explicit exclusion or selection advice. Users must infer from context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_todoA

List Canvas todo items for the current user.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states a listing action, implying read-only behavior, but lacks details on pagination, ordering, or any side effects. The minimal disclosure is insufficient for full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the key purpose. There is no redundant information, and every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema), the description is minimally complete. However, it could be enhanced by explicitly stating that the operation is read-only or mentioning the return format, but for a basic list tool it meets the minimum bar.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters (0 params, 100% coverage), so the description adds no param information. According to the rubric, baseline is 4 for tools with 0 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List') and the resource ('Canvas todo items for the current user'), making the purpose immediately obvious. It is distinct from sibling tools like canvas_course_assignments or canvas_upcoming_events, which focus on different entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of use cases, prerequisites, or comparison to sibling tools, leaving the agent without contextual decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

canvas_upcoming_eventsC

List upcoming Canvas calendar events.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only says 'list upcoming Canvas calendar events,' omitting details like what 'upcoming' means, whether the operation is read-only, or any required permissions. The transparency is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the core purpose without unnecessary words. It is front-loaded and efficient, though it sacrifices necessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and a single parameter, the description should elaborate on what 'upcoming' means (e.g., time window), pagination, or return format. It is too sparse to be complete for effective agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has one parameter, 'days,' with a default value but no description. The tool description does not explain its purpose or valid values. With 0% schema description coverage, the description adds no meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists upcoming Canvas calendar events. It uses a specific verb and resource, making the purpose evident. However, it does not differentiate from sibling tools like canvas_todo or canvas_courses that might also list upcoming items.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. The sibling tools are listed but no context is provided about distinct use cases or scenarios where this tool is preferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.0
    • First observedcanvas_course_assignments
    • First observedcanvas_course_files
    • First observedcanvas_course_modules
    • First observedcanvas_course_pages
    • First observedcanvas_courses
    • First observedcanvas_raw_get
    • First observedcanvas_self
    • First observedcanvas_submissions
    • First observedcanvas_todo
    • First observedcanvas_upcoming_events

TDQS

B3.3/5.0
Disambiguation5/5

Each tool targets a distinct Canvas resource (courses, assignments, files, modules, pages, user info, submissions, todo, events, raw API access) with no overlap in purpose, making selection unambiguous for an agent.

Naming Consistency5/5

All tools follow a consistent 'canvas_<resource>' snake_case pattern, using descriptive nouns. Even 'canvas_raw_get' and 'canvas_self' fit the pattern, with no mixing of conventions.

Tool Count5/5

10 tools is well within the ideal range (3-15). The set covers common Canvas read operations without being excessive or insufficient for its scope.

Completeness4/5

The set provides comprehensive read coverage for Canvas (courses, assignments, files, modules, pages, submissions, todo, events) and includes a raw GET endpoint for flexibility. However, it lacks write operations (create, update, delete), which are absent from the tool descriptions.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zihan1997/canvas-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server