Canvas

Integra-se ao Canvas Learning Management System (LMS), oferecendo suporte à anonimização e controles de privacidade em conformidade com a FERPA.

Documentação

Canvas MCP — AI tools for Canvas LMS

Servidor MCP Canvas

License: MIT skills.sh

Servidor MCP para Canvas LMS com até 103 ferramentas e 8 habilidades de agente. Projetado para Claude Desktop, Cursor, Codex, Windsurf e mais de 40 outros agentes; a configuração e os recursos variam conforme o cliente.

Início Rápido

1. Instale o servidor MCP (todo o resto, incluindo as habilidades, precisa dele em execução):

  • Claude Desktop: baixe o canvas-mcp.mcpb da última versão e clique duas vezes nele. Ele solicita sua URL e token do Canvas; não é necessário terminal. Detalhes.
  • Cursor, Zed, Windsurf, Continue, Claude Code e outros clientes: instale o pip install em um virtualenv, adicione seu token ao .env e aponte seu cliente para o binário canvas-mcp-server. A Instalação Local contém os blocos de configuração por cliente.

2. Verifique: o canvas-mcp-server --test deve relatar uma conexão bem-sucedida com o Canvas. Em seguida, reinicie seu cliente.

3. Opcional: adicione as habilidades de fluxo de trabalho. Elas ensinam ao seu agente as receitas de várias etapas (plano semanal, verificação matinal, correção em lote, revisão por pares, controle de qualidade do curso) além das ferramentas:

npx skills add vishalsachdev/canvas-mcp

Consulte Habilidades do Agente para ver a lista. Se seu agente for o Claude Code, as mesmas receitas também estão disponíveis como comandos de barra.

Para Agentes de IA

O Canvas MCP fornece até 103 ferramentas para interagir com o Canvas LMS; o perfil padrão registra menos, e ferramentas opcionais controladas por recursos podem elevar o total para 103. As ferramentas são organizadas por tipo de usuário:

Ferramentas do Estudante (clique para expandir)
FerramentaFinalidadeExemplo de Prompt
get_my_upcoming_assignmentsDatas de entrega dos próximos N dias"O que vence esta semana?"
get_my_todo_itemsLista de tarefas do Canvas"Mostre minha lista de tarefas"
get_my_submission_statusEnviadas vs. pendentes"Enviei tudo?"
get_my_course_gradesNotas atuais"Quais são minhas notas?"
get_my_peer_reviews_todoRevisões por pares pendentes"Quais revisões por pares preciso fazer?"
Ferramentas do Educador (clique para expandir)
FerramentaFinalidadeExemplo de Prompt
list_assignmentsTodas as tarefas do curso"Mostre as tarefas em BADM 350"
create_assignmentCriar nova tarefa"Crie uma tarefa com entrega em 26 de janeiro com envio de texto online"
update_assignmentAtualizar tarefa existente"Altere a data de entrega da Tarefa 3 para 15 de fevereiro"
list_submissionsEnvios dos estudantes"Quem enviou a Tarefa 3?"
bulk_grade_submissionsCorrigir vários de uma vez"Corrija estes 10 estudantes"
get_assignment_analyticsEstatísticas de desempenho"Mostre análises do Questionário 2"
send_conversationEnviar mensagem aos estudantes"Envie mensagem aos estudantes que não enviaram"
create_announcementPublicar anúncios"Anuncie a mudança da data do exame"
Gerenciamento de Módulos
create_moduleCriar módulo do curso"Crie um módulo para a Semana 5"
update_moduleAtualizar configurações do módulo"Renomeie o módulo da prova parcial"
add_module_itemAdicionar conteúdo ao módulo"Adicione a página do programa à Semana 1"
delete_moduleRemover um módulo"Exclua o módulo de teste vazio"
Página e Conteúdo
create_pageCriar página do curso"Crie uma página para horário de atendimento"
edit_page_contentAtualizar conteúdo da página"Atualize a página do programa"
update_page_settingsPublicar/despublicar páginas"Publique todas as páginas da Semana 3"
bulk_update_pagesOperações em lote de páginas"Despublique todas as páginas de rascunho"
Gerenciamento de Arquivos
upload_course_fileEnviar arquivo local para o Canvas"Envie syllabus.pdf para o curso"
Ferramentas Compartilhadas (clique para expandir)
FerramentaFinalidade
list_coursesTodos os cursos matriculados
get_course_detailsInformações do curso + programa
list_pagesPáginas do curso
get_page_contentLer conteúdo da página
list_modulesListar módulos do curso
list_module_itemsItens dentro de um módulo
list_discussion_topicsFóruns de discussão
list_discussion_entriesPostagens em uma discussão
post_discussion_entryAdicionar uma postagem de discussão
reply_to_discussion_entryResponder a uma postagem
Ferramentas do Designer de Aprendizagem (design e controle de qualidade do curso)
FerramentaFinalidadeExemplo de Prompt
get_course_structureÁrvore completa de módulo→itens como JSON"Mostre-me a estrutura de CS 101"
scan_course_content_accessibilityScanner de violações WCAG (20 verificações: títulos, tabelas, links, contraste, texto alternativo, legendas, DesignPLUS)"Audite a acessibilidade de BADM 350"
fetch_ufixit_reportRelatório institucional de acessibilidade"Puxe o relatório UFIXIT deste curso"
parse_ufixit_violationsExtrair violações estruturadas"Analise as violações do UFIXIT"
format_accessibility_summaryRelatório de violações legível"Resuma os problemas de acessibilidade"

Habilidades: canvas-course-qc (auditoria pré-semestre), canvas-accessibility-auditor (revisão orientada a WCAG), canvas-course-builder (criar cursos a partir de especificações/modelos).

Ferramentas do Desenvolvedor (para operações em lote)
FerramentaFinalidadeQuando Usar
search_canvas_toolsDescobrir ferramentas MCP e operações da API de códigoEncontrar ferramentas disponíveis e operações em lote
execute_typescriptExecutar TypeScript localmente30+ itens, lógica personalizada, processamento local por item

Árvore de decisão: Consulta simples → ferramentas MCP. Correção em lote (10+) → bulk_grade_submissions. Lote complexo (30+) → execute_typescript.

Referência Rápida

Identificadores de curso: ID do Canvas (12345), código do curso (badm_350_120251_246794) ou ID SIS

Não é possível: Criar/excluir cursos, modificar configurações do curso, acessar dados de outros usuários

Limites de taxa: ~700 solicitações/10 min. Use max_concurrent=5 para operações em lote.

Documentação completa: AGENTS.md | tools/TOOL_MANIFEST.json | tools/README.md

Visão Geral

O Servidor MCP Canvas preenche a lacuna entre assistentes de IA e o Sistema de Gerenciamento de Aprendizagem Canvas, fornecendo fluxos de trabalho específicos para estudantes, educadores, designers de aprendizagem e desenvolvedores. Construído sobre o Model Context Protocol (MCP), é projetado para clientes compatíveis com MCP; a configuração e os recursos suportados variam conforme o cliente.

Última Versão: v1.13.0

Lançada: Setembro de 2026 | Changelog Completo | Todas as Versões

Uma versão de segurança: ferramentas que alteram qualquer coisa agora só existem se o operador as permitir (GHSA-hmr8-mvr2-mvw5). Instruções que um estudante insere no conteúdo do curso podem direcionar o assistente de um instrutor, e um token de confirmação não pode impedir isso porque o assistente pode resgatar seu próprio token. A nova configuração ALLOWED_WRITE_TOOLS remove toda ferramenta de escrita que o operador não permitiu na inicialização, para que não possa ser listada ou chamada. Cinco mudanças são quebras de compatibilidade. Cada migração tem uma linha:

  • Servidores HTTP são somente leitura, a menos que configurados → defina ALLOWED_WRITE_TOOLS para as ferramentas de escrita que sua implantação precisa, ou all (a execução de código deve ser nomeada separadamente). Servidores stdio locais não são alterados, a menos que você defina
  • send_conversation sempre mostra a prévia primeiro, mesmo para um único destinatário → chame uma vez, mostre a prévia, depois chame novamente com argumentos idênticos mais o token
  • get_conversation_details nunca marca uma conversa como lida; auto_mark_read é removido → remova o argumento e use mark_conversations_read
  • A correção com rubrica para quando as configurações de correção não podem ser verificadas, e resultados não confirmados contam como falhas → verifique o Canvas antes de tentar novamente (#374, #375)
  • Exportações de arquivos locais recusam chamadores HTTP → passe save_to_file=False / save_locally=False para obter o conteúdo na resposta; extract_peer_review_dataset salva por padrão, então sua chamada simples agora falha em HTTP

Também novo: update_rubric para edições protegidas de rubricas existentes (#386) e update_syllabus, que mostra a prévia antes de substituir conteúdo existente. Corrigido: tarefas de ferramentas externas como Gradescope não são mais relatadas como ausentes (#390, graças a @EastArctica), a paginação do TypeScript segue cabeçalhos Link dentro de um orçamento de páginas (#403), e os fluxos de confirmação e correção foram reforçados (#394 a #408). O sandbox execute_typescript agora roda como um usuário não root com sistema de arquivos raiz somente leitura (#317, #339). Construído sobre FastMCP 4 e MCP SDK 2 (#354).

Versões anteriores

v1.12.0 — Uma versão de segurança: toda ferramenta de exclusão pergunta primeiro. Quebras: delete_announcement removido, dry_run removido das ferramentas de exclusão de anúncios, confirmation_token obrigatório em todas as sete ferramentas de exclusão (#318), e Python 3.10 removido (#315). Também novo: delete_assignment_with_confirmation, ACCESSIBILITY_CHECKERS (#325) e as ferramentas de migração de conteúdo (#309).

v1.11.0 — Uma versão de correção de protocolo. Quebras: send_peer_review_reminders agora é send_peer_review_inbox_messages (#303); falhas de ferramentas definem isError: true do MCP (#270); ferramentas que retornam strings não duplicam mais sua carga útil em structuredContent.result (#271); piso do FastMCP 3.4.7 (#293). Graças a @jonespm

v1.10.0 — Uma versão de correção de bugs da comunidade impulsionada por testes ao vivo de repórteres — graças a @khagyard, @zqian, @jonespm, @bruchris e @SHIL0018 (nossa segunda contribuição externa de código). Incluiu uma mudança de quebra na forma da resposta de search_canvas_tools.

  • Quebra: forma da resposta v2 de search_canvas_tools (#281). A ferramenta agora realmente pesquisa as ~99 ferramentas MCP registradas junto com os arquivos TypeScript da API de código (anteriormente pesquisava apenas estes últimos, então "revisão por pares" não encontrava nada apesar de existirem ~10 ferramentas de revisão por pares). As respostas carregam schema_version: 2 com seções rotuladas mcp_tools / code_execution_api; a antiga chave plana tools desapareceu. O conteúdo completo da API de código agora também é limitado a 2.000 caracteres (#287)
  • Estudantes podem encontrar suas revisões por pares (#275): get_my_peer_reviews_todo ganhou uma consulta direta por tarefa e um caminho de descoberta pelo feed do Planner — a mesma fonte de dados que a interface do estudante do Canvas usa — validado contra uma carga útil real de produção do repórter
  • create_announcement falha com segurança em tokens de estudante (#283): o Canvas silenciosamente rebaixa a criação para um tópico de discussão regular; a ferramenta agora pré-verifica as permissões do curso e recusa antes de criar qualquer coisa, exclui automaticamente o tópico não intencional se um rebaixamento ainda passar despercebido e orienta os clientes de IA a não postarem o conteúdo por meio de ferramentas de discussão como alternativa
  • Segurança: validação de URL mais rigorosa (correção de varredura de código), base do Docker atualizada para python:3.14-slim, ações de CI atualizadas v1.9.0 — Endurecimento contra injeção de prompt (#239): texto criado pelo Canvas chega com proveniência isolada como dados-e-não-instruções; envios para múltiplos destinatários tornaram-se confirmação em duas etapas (quebra); ferramentas de escrita recusam marcadores de cerca de código; Scorecard OSSF publicado, ações de CI com SHA fixado, .mcpb inclui proveniência SLSA; wizard npm descontinuado (#249). Onze rodadas de revisão adversarial antes do merge

v1.8.0 — Remediação de varredura de segurança: 11 de 12 achados corrigidos, três quebras (URLs do Canvas somente HTTPS, ferramentas de transferência de arquivos somente stdio, downloads sem sobrescrita), uma vulnerabilidade medida de bypass de autorização de submissões fechada centralmente, proteção contra injeção de fórmula CSV, execução de código falha de forma segura, pisos de dependências elevados (PR #251, #255)

v1.7.0 — Lançamento de correção a partir de relatórios de bugs de instrutores: gravações não relatam mais sucesso quando o Canvas silenciosamente fez menos do que foi pedido (#219–#221), tarefas futuras da API Planner (#222), respostas AMBÍGUAS do check_enrollment (#199), correções de formato de transmissão para páginas/caixa de entrada (#207, #208), anotações de ferramentas da especificação MCP (#204), correção de formato de rubrica CSV (#190), anonimização consolidada na camada do cliente (#179). Agradecimentos a @khagyard e @zqian

v1.6.0 — Ferramentas de escrita para estudantes de Nível 1 atrás de uma lista de permissões explícita (#170), get_my_enrollments / get_my_profile (#171), anonimização em três níveis (#166, #179), correções de associação de rubricas (#180, #181), execute_typescript tornou-se opcional (#178), CI com gate ruff (@w3lld1, PR #186)

v1.5.0 — get_syllabus (#134), create_rubric_from_csv (#119), update_discussion_topic (#154), migração para fastmcp 2.x (#145), avisos de dependências limpos de 33 → 0 com varredura de CI com gate (PR #156)

v1.4.0 — check_enrollment (PR #126), Extensão Claude Desktop .mcpb, hospedagem institucional autenticada com Entra ID (#115, PR #125), HTTP falha de forma segura sem gate de autenticação (PR #123)

v1.3.0 — create_rubric (PR #100), read_course_file (@DomBarker99, PR #90), correção de loop de eventos para ferramentas com escopo de usuário (PR #99), limite de segurança para exclusão em massa (PR #96), poda de dependências (PR #93)

v1.2.0 — Filtragem de Ferramentas Baseada em Papéis (@Promithius-DR, PR #84), Remediação de Acessibilidade (fix_accessibility_issues, scanner expandido de 4→20 verificações), Endurecimento de Segurança (proteções contra path traversal/symlink), Suporte a Windows para execute_typescript (PR #85), consolidação de CI (11→8 verificações)

v1.1.0 — Servidor Hospedado (mcp.illinihunt.org), ferramentas de Learning Designer + 3 habilidades, Agent Skills em skills.sh, Gerenciamento de Arquivos (@Metzpapa, PR #75), Otimização de Tokens, Distribuição Genérica

v1.0.8 — Endurecimento de Segurança (sanitização de PII, registro de auditoria, sandbox por padrão), linting Ruff, 235+ testes

v1.0.7 — Ferramenta de Atualização de Tarefas (update_assignment), CRUD completo, 9 testes

v1.0.6 — Gerenciamento de Módulos (7 ferramentas), Configurações de Página (2 ferramentas), 235+ testes

v1.0.5 — Claude Code Skills, site GitHub Pages

v1.0.4 — API de Execução de Código para operações em massa com eficiência de tokens, conformidade com MCP 2.14

Para Estudantes 👨‍🎓

Obtenha assistência com tecnologia de IA para:

  • Acompanhar tarefas e prazos futuros
  • Monitorar suas notas em todos os cursos
  • Gerenciar tarefas de revisão por pares
  • Acessar conteúdo do curso e discussões
  • Organizar sua lista de tarefas

→ Comece como Estudante

Para Educadores 👨‍🏫

Aprimore seu ensino com:

  • Gerenciamento de tarefas e notas
  • Análises de estudantes e acompanhamento de desempenho
  • Facilitação de discussões e revisão por pares
  • Controles de privacidade projetados para apoiar fluxos de trabalho conscientes da FERPA
  • Ferramentas de mensagens em massa e comunicação

→ Comece como Educador

Para Learning Designers 🎨

Design de curso e garantia de qualidade com tecnologia de IA:

  • Estruturação de cursos — Construa estruturas completas de cursos a partir de especificações, modelos ou clonando cursos existentes
  • Auditorias de qualidade — Verificações de controle de qualidade pré-semestre para estrutura, conteúdo, publicação e completude
  • Revisão de acessibilidade — Scanner orientado a WCAG com 20 verificações (cabeçalhos, tabelas, escopo, contraste, texto alternativo, links, legendas, migração DesignPLUS), relatórios priorizados, remediação guiada e verificação
  • Análise de estrutura do curso — Árvore completa de módulo→itens em uma única chamada para revisão rápida do curso

3 habilidades dedicadas (canvas-course-qc, canvas-accessibility-auditor, canvas-course-builder) além da ferramenta get_course_structure.

🤖 Agent Skills

Receitas de fluxo de trabalho pré-construídas que ensinam agentes de IA a usar as ferramentas MCP do Canvas de forma eficaz. Disponível para 40+ agentes de codificação via skills.sh, ou como comandos de barra específicos do Claude Code.

Instalar via skills.sh (Qualquer Agente)

As habilidades chamam as ferramentas MCP, então instale o servidor primeiro; uma habilidade sem o servidor não tem nada para executar.

npx skills add vishalsachdev/canvas-mcp

Isso abre um seletor interativo para instalar habilidades no agente de sua escolha (Claude Code, Cursor, Codex, OpenCode, Cline, Zed e muitos outros).

HabilidadeParaO Que Faz
canvas-week-planEstudantesPlanejador semanal: datas de vencimento, status de envio, notas, revisões por pares
canvas-morning-checkEducadoresPainel de saúde do curso: taxas de envio, estudantes com dificuldades, prazos
canvas-bulk-gradingEducadoresÁrvore de decisão de notas: individual → em massa → execução de código com verificações de segurança
canvas-peer-review-managerEducadoresPipeline completo de revisão por pares: análises, análise de qualidade, lembretes, relatórios
canvas-discussion-facilitatorAmbosNavegação em discussões, monitoramento de participação, respostas, facilitação
canvas-course-qcLearning DesignersAuditoria de qualidade pré-semestre: estrutura, conteúdo, publicação, completude
canvas-accessibility-auditorLearning DesignersVarredura WCAG, relatório priorizado, remediação guiada, verificação
canvas-course-builderLearning DesignersEstruturar cursos a partir de especificações, modelos ou cursos existentes

Instale uma habilidade específica:

npx skills add vishalsachdev/canvas-mcp -s canvas-week-plan

Comandos de Barra do Claude Code

Se você usa Claude Code, os mesmos fluxos de trabalho também estão disponíveis como comandos de barra:

You: /canvas-morning-check CS 101
Claude: [Generates comprehensive course status report]

You: /canvas-week-plan
Claude: [Shows prioritized weekly assignment plan]

As habilidades do Claude Code estão localizadas em .claude/skills/ e podem ser personalizadas para seu fluxo de trabalho.

Quer uma habilidade personalizada? Envie uma solicitação descrevendo seu fluxo de trabalho repetitivo!

🔒 Privacidade e Proteção de Dados

Para Educadores: Tratamento de Dados Consciente da FERPA

O Canvas MCP fornece controles de privacidade opcionais que podem apoiar as obrigações FERPA de uma instituição. A conformidade ainda depende da sua implantação, configuração, política institucional e provedor de IA:

  • Anonimização de respostas converte campos de identidade suportados em IDs anônimos consistentes (Student_xxxxxxxx)
  • Mascaramento de e-mail e filtragem de padrões de PII suportados em postagens de discussão e envios
  • Implantação de servidor local com controles de privacidade configuráveis (ENABLE_DATA_ANONYMIZATION=true)
  • Análises conscientes de privacidade: Pergunte "Quais estudantes precisam de apoio?" enquanto reduz os dados de identidade retornados ao cliente de IA
  • Ferramenta de mapeamento de desanonimização para professores correlacionarem IDs anônimos com estudantes reais localmente

Quando ENABLE_DATA_ANONYMIZATION=true está habilitado, campos de identidade suportados são anonimizados antes que os resultados da ferramenta cheguem ao cliente de IA. Revise o Guia do Educador e os requisitos da sua instituição antes de usar dados de estudantes.

Para Estudantes: Escopo de Dados e Privacidade

  • Acesso com escopo no Canvas: Ferramentas específicas de estudantes usam os endpoints "self" do Canvas; ferramentas compartilhadas de conteúdo do curso seguem as permissões que o Canvas concede à sua conta
  • Sem armazenamento de credenciais em servidor compartilhado: O modo local lê seu token do Canvas do seu próprio .env. Em implantações HTTP institucionais autenticadas, cada solicitação fornece o token do Canvas do usuário e o servidor não o armazena.
  • Sem análises de produto integradas: O Canvas MCP não adiciona telemetria; o Canvas e seu cliente de IA ainda aplicam suas próprias políticas de registro e dados
  • Anonimização opcional: Ferramentas de estudantes são limitadas aos seus próprios dados do Canvas, mas a política de privacidade do seu cliente de IA ainda se aplica

Servidor Hospedado (Descontinuado)

O servidor hospedado público (mcp.illinihunt.org) foi descontinuado. Um endpoint MCP público sem gate de acesso não é seguro de operar — ele exporia a ferramenta integrada de execução de código — então o caminho suportado é a instalação local abaixo.

O transporte HTTP/streamable em si permanece totalmente suportado para auto-hospedagem atrás da sua própria autenticação (canvas-mcp-server --transport streamable-http). Executando uma instância compartilhada e autenticada para sua instituição? Veja deploy/azure/ para uma especificação de implantação testada em produção (Azure App Service + autenticação de plataforma Entra ID, tokens de Canvas por usuário) com fluxo de trabalho de exemplo e modelos de configuração.


Pré-requisitos (Instalação Local)

  • Python 3.11+ — Necessário para recursos modernos e dicas de tipo
  • Acesso à API do Canvas — Token de API e URL da instituição
  • Cliente MCP — Um cliente compatível com MCP (Claude Desktop, Cursor, Zed, Windsurf, Continue, etc.); configuração e recursos variam por cliente

Clientes MCP Suportados

O Canvas MCP é projetado para clientes compatíveis com MCP, incluindo Claude Desktop, Codex, Cursor, Zed, Windsurf, Continue, Replit e Copilot Studio. Detalhes de configuração e recursos suportados variam por cliente.

O Canvas MCP usa padrões documentados da API do Canvas, como cabeçalho User-Agent e paginação per_page. É destinado ao Canvas Cloud e instâncias auto-hospedadas compatíveis.

Instalar como Extensão do Claude Desktop (mais fácil)

Se você usa Claude Desktop, pode instalar o Canvas MCP com um clique — sem terminal, sem edição de arquivo de configuração:

  1. Baixe canvas-mcp.mcpb da última versão.
  2. Clique duas vezes no arquivo (ou arraste-o para Claude Desktop → Configurações → Extensões).
  3. Quando solicitado, insira sua URL da API do Canvas — isso deve incluir o caminho /api/v1 (ex.: https://canvas.youruniversity.edu/api/v1) — e seu token da API do Canvas (Canvas → Conta → Configurações → Novo Token de Acesso — algumas instituições emitem isso por formulário de solicitação, veja abaixo). O token é armazenado no chaveiro do seu sistema operacional.

A extensão executa o servidor localmente e chama o Canvas com seu próprio token, então as solicitações usam as permissões do Canvas desse token. O Canvas e seu cliente de IA podem reter seus próprios registros de atividade. Requer Python 3.11+ (o runtime integrado gerencia dependências automaticamente). Para outros clientes, ou para executar a partir do código-fonte, use a configuração manual abaixo.

Instalação Local

1. Instalar Dependências

# (Recommended) Use a dedicated virtualenv so the MCP binary is in a stable location
python3 -m venv .venv
. .venv/bin/activate

# Install the package editable
pip install -e .

2. Configurar Ambiente

# Copy environment template
cp env.template .env

# Edit with your Canvas credentials
# Required: CANVAS_API_TOKEN, CANVAS_API_URL

Obtenha seu token da API do Canvas em: Canvas → Conta → Configurações → Novo Token de Acesso

Algumas instituições restringem a criação de tokens. Onde o autoatendimento está desabilitado, o botão "Novo Token de Acesso" está ausente ou apresenta erro, e os tokens são emitidos por meio de um formulário de solicitação de TI. Consulte a base de conhecimento de TI da sua instituição antes de concluir que o acesso à API não está disponível para você.

Universidade de Illinois em Urbana-Champaign funciona assim para todos — estudantes e instrutores. Solicite um token com o Formulário de Solicitação de Token da API do Canvas (requer login NetID). Após a aprovação:

  1. Vá para Canvas → Conta → Configurações → Integrações Aprovadas, encontre o novo token, clique em Ativar e atualize a página.
  2. Recupere o valor do token no link U of I Box que a Technology Services envia para você.

A partir de agosto de 2026, todos os novos tokens de Illinois terão expiração de 30 dias (um requisito upstream da Instructure). A expiração não é monitorada ou anunciada, e tokens expirados são removidos sem aviso — solicite a substituição antes que o atual expire. Detalhes completos: Answers KB 150325.

Estudantes de outras instituições: se você vir "Há um limite para o número de tokens de acesso que você pode criar" ou não conseguir encontrar a opção de criação de token, entre em contato com o administrador do Canvas da sua instituição ou com o departamento de suporte de TI para solicitar acesso à API.

3. Configuração do Cliente MCP

O Canvas MCP é projetado para clientes compatíveis com MCP. Abaixo estão exemplos de configuração para clientes populares; a configuração exata e os recursos variam conforme o cliente:

Claude Desktop (Mais Popular)

Localização do arquivo de configuração:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Configuração:

{
  "mcpServers": {
    "canvas-api": {
      "command": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}

Nota: Use o caminho absoluto para o binário do seu virtualenv para evitar problemas com entradas de PATH específicas do shell (por exemplo, shims do pyenv).

Codex

O Codex pode iniciar o servidor como um servidor MCP stdio local. Adicione esta entrada a ~/.codex/config.toml, substituindo os caminhos de exemplo pelos caminhos absolutos na sua máquina:

[mcp_servers.canvas-api]
command = "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
cwd = "/absolute/path/to/canvas-mcp"

Definir cwd para o repositório permite que o servidor encontre o arquivo .env criado acima, mesmo quando você inicia o Codex em outro lugar. Alternativamente, registre o comando com o CLI do Codex:

codex mcp add canvas-api -- /absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server

O comando CLI não define um diretório de trabalho persistente. Após executá-lo, adicione a linha cwd à tabela [mcp_servers.canvas-api] existente em ~/.codex/config.toml; não crie uma segunda tabela com o mesmo nome.

Execute codex mcp list para verificar o registro e reinicie o Codex. No TUI do Codex, /mcp mostra o servidor ativo e suas ferramentas.

Cursor

Localização do arquivo de configuração:

  • macOS/Linux: ~/.cursor/mcp_config.json
  • Windows: %USERPROFILE%\.cursor\mcp_config.json

Configuração:

{
  "mcpServers": {
    "canvas-api": {
      "command": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}
Zed

Configuração: Adicione ao settings.json do Zed (acessível pelo menu Configurações)

{
  "context_servers": {
    "canvas-api": {
      "command": {
        "path": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server",
        "args": []
      }
    }
  }
}
Windsurf IDE

Localização do arquivo de configuração:

  • macOS: ~/Library/Application Support/Windsurf/mcp_config.json
  • Windows: %APPDATA%\Windsurf\mcp_config.json

Configuração:

{
  "mcpServers": {
    "canvas-api": {
      "command": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}
Continue

Configuração: Adicione ao config.json do Continue (acessível pelas configurações do Continue)

{
  "mcpServers": {
    "canvas-api": {
      "command": "/absolute/path/to/canvas-mcp/.venv/bin/canvas-mcp-server"
    }
  }
}
Outros Clientes MCP

Para outros clientes compatíveis com MCP, o padrão geral é:

  1. Localize o arquivo de configuração MCP do seu cliente
  2. Adicione uma entrada de servidor com:
    • Nome do servidor: canvas-api (ou qualquer nome que você preferir)
    • Comando: Caminho completo para o binário canvas-mcp-server
    • Argumentos opcionais: Argumentos adicionais, se necessário

Consulte a documentação MCP do seu cliente para o formato de configuração específico e locais de arquivos.

Usuários do Windows: Substitua barras normais por barras invertidas nos caminhos (por exemplo, C:\Users\YourName\canvas-mcp\.venv\Scripts\canvas-mcp-server.exe)

Verificação

Teste sua configuração:

# Test Canvas API connection
canvas-mcp-server --test

# View configuration
canvas-mcp-server --config

# Start server (for manual testing)
canvas-mcp-server

Ferramentas Disponíveis

O Canvas MCP Server fornece um conjunto de ferramentas para interagir com a API do Canvas LMS. Essas ferramentas são organizadas em categorias lógicas para melhor descoberta e manutenção.

Categorias de Ferramentas

Ferramentas do Estudante (Novo!)

  • Acompanhamento pessoal de tarefas e gerenciamento de prazos
  • Monitoramento de notas em todos os cursos
  • Lista de tarefas e gerenciamento de revisões por pares
  • Acompanhamento do status de envios

Ferramentas Compartilhadas (Estudantes e Educadores)

  1. Ferramentas de Curso - Listar e gerenciar cursos, obter informações detalhadas, gerar resumos com conteúdo do programa
  2. Ferramentas de Discussão e Anúncios - Gerenciar discussões, anúncios e respostas
  3. Ferramentas de Página e Conteúdo - Acessar páginas, módulos e conteúdo do curso

Ferramentas do Educador 4. Ferramentas de Tarefas - Lidar com tarefas, envios e revisões por pares com análises 5. Ferramentas de Rubrica - Criar, atualizar com segurança e listar rubricas; associá-las a tarefas; e avaliar envios (incluindo bulk_grade_submissions para avaliação em lote eficiente). update_rubric é uma substituição completa protegida: preserva IDs de critérios/avaliações existentes, requer uma pré-visualização e confirmação, e verifica o resultado. Consulte comportamento da API de rubrica e ressalvas de avaliação. 6. Ferramentas de Usuário e Inscrição - Gerenciar inscrições, usuários e grupos 7. Ferramentas de Análises - Visualizar análises de estudantes, estatísticas de tarefas e acompanhamento de progresso 8. Ferramentas de Mensagens - Enviar mensagens e anúncios para estudantes

Ferramentas do Desenvolvedor 9. Ferramentas de Descoberta - Pesquisar ferramentas MCP registradas e operações da API de execução de código com search_canvas_tools; listar módulos de execução de código com list_code_api_modules 10. Ferramentas de Execução de Código - Executar código TypeScript com execute_typescript para que o processamento em lote de itens possa ficar fora do contexto do modelo

📖 Ver Documentação Completa das Ferramentas para informações detalhadas sobre as ferramentas disponíveis.

API de Execução de Código

Para operações em lote (30+ itens), o Canvas MCP suporta execução de código TypeScript. Processe operações em lote localmente sem carregar cada item no contexto do modelo.

AbordagemMelhor ParaComportamento do Contexto
Ferramentas MCPConsultas simples, conjuntos de dados pequenosRetorna resultados das ferramentas ao modelo
bulk_grade_submissionsAvaliação em lote de 10-29 itensLida com um lote definido em uma chamada de ferramenta
execute_typescript30+ itens, lógica personalizadaProcessa itens localmente e retorna saída selecionada

Use search_canvas_tools para descobrir operações disponíveis e depois execute_typescript para executá-las localmente. O sandbox padrão aplica controles de tempo, memória, ambiente e rede de melhor esforço, mas não é um limite de segurança completo; use isolamento externo mais forte quando código não confiável ou controle estrito de saída for necessário (consulte issue #157). Funciona em macOS, Linux e Windows.

Exemplos de execução de código e detalhes de segurança

Exemplo de Avaliação em Lote

import { bulkGrade } from './canvas/grading/bulkGrade';

await bulkGrade({
  courseIdentifier: "60366",
  assignmentId: "123",
  gradingFunction: (submission) => {
    const notebook = submission.attachments?.find(f =>
      f.filename.endsWith('.ipynb')
    );
    if (!notebook) return null;
    return { points: 100, comment: "Great work!" };
  }
});

Modos de Segurança

ModoConfiguraçãoO Que Faz
Sandbox local (padrão)Nenhuma necessáriaTimeout de 120s, memória de 512MB, ambiente filtrado, controles de rede de melhor esforço
Sandbox de contêinerTS_SANDBOX_MODE=containerIsolamento do sistema de arquivos do contêiner via Docker/Podman; garantias de saída dependem da configuração de implantação
Sem sandboxENABLE_TS_SANDBOX=falseAcesso local completo (não recomendado)

Consulte Exemplo de Avaliação em Lote para um passo a passo detalhado.

Uso

Os clientes MCP iniciam o servidor automaticamente. Basta perguntar naturalmente:

  • "O que vence esta semana?" / "Mostrar minhas notas" / "Quais revisões por pares eu preciso?"
  • "Quem não enviou a Tarefa 3?" / "Enviar lembretes para estudantes ausentes"

Guias de início rápido: Estudante | Educador | Fluxos de Trabalho do Mundo Real | Solução de Problemas

Documentação

Detalhes técnicos

Construído com FastMCP com httpx assíncrono, validação pydantic e configuração python-dotenv. Layout moderno de src/ com pyproject.toml, dicas de tipo nos caminhos principais, pool de conexões, paginação e limitação de taxa. Uma suíte de testes automatizada e suporte a ruff + black garantem a qualidade do código.

Solução de Problemas

Se você encontrar problemas:

  1. O Servidor Não Inicia - Verifique sua configuração de Instalação Local: arquivo .env, caminho do ambiente virtual e dependências
  2. Erros de Autenticação - Verifique a validade do seu token da API do Canvas e as permissões
  3. Problemas de Conexão - Verifique a correção da URL da API do Canvas e o acesso à rede
  4. Depuração - Verifique os logs do console do seu cliente MCP (por exemplo, o console do desenvolvedor do Claude Desktop) ou execute o servidor manualmente para ver a saída de erros

Segurança

Controles de segurança e privacidade em tempo de execução:

CamadaPadrão
Sanitização de PII nos logsLOG_REDACT_PII=true
Validação de token na inicializaçãoSempre ativo
Registro de auditoria estruturadoOpt-in: LOG_ACCESS_EVENTS=true
Salvaguardas de execução de códigoENABLE_TS_SANDBOX=true (melhor esforço no modo local)

Anonimização opcional para fluxos de trabalho de educadores conscientes da FERPA: ENABLE_DATA_ANONYMIZATION=true. Consulte o Guia do Educador para escopo e detalhes de configuração.

Publicação

Publicado no PyPI, MCP Registry e skills.sh (habilidades de agente). Os lançamentos são automatizados via GitHub Actions — marque uma versão (git tag vX.Y.Z && git push origin vX.Y.Z) e o CI cuida do resto.

Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para:

  • Enviar issues para bugs ou solicitações de recursos
  • Criar pull requests com melhorias
  • Compartilhar seus casos de uso e feedback

Contribuidores

Agradecemos a todos que contribuíram para o Canvas MCP:

  • @DomBarker99 — Ferramenta read_course_file para implantações MCP remotas (#90)
  • @Promithius-DR — Filtragem de ferramentas baseada em função e anotações de ferramentas (#84)
  • @Metzpapa — Ferramentas de download e listagem de arquivos (#75)
  • @JCSnap — Correções de bugs nas ferramentas do estudante (#72, #73)

Licença

Este projeto é licenciado sob a Licença MIT — consulte o arquivo LICENSE para detalhes.


Criado por Vishal Sachdev