Canvas
Integra-se ao Canvas Learning Management System (LMS), oferecendo suporte à anonimização e controles de privacidade em conformidade com a FERPA.
Documentação
Servidor MCP Canvas
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.mcpbda ú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 installem um virtualenv, adicione seu token ao.enve aponte seu cliente para o bináriocanvas-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)
| Ferramenta | Finalidade | Exemplo de Prompt |
|---|---|---|
get_my_upcoming_assignments | Datas de entrega dos próximos N dias | "O que vence esta semana?" |
get_my_todo_items | Lista de tarefas do Canvas | "Mostre minha lista de tarefas" |
get_my_submission_status | Enviadas vs. pendentes | "Enviei tudo?" |
get_my_course_grades | Notas atuais | "Quais são minhas notas?" |
get_my_peer_reviews_todo | Revisões por pares pendentes | "Quais revisões por pares preciso fazer?" |
Ferramentas do Educador (clique para expandir)
| Ferramenta | Finalidade | Exemplo de Prompt |
|---|---|---|
list_assignments | Todas as tarefas do curso | "Mostre as tarefas em BADM 350" |
create_assignment | Criar nova tarefa | "Crie uma tarefa com entrega em 26 de janeiro com envio de texto online" |
update_assignment | Atualizar tarefa existente | "Altere a data de entrega da Tarefa 3 para 15 de fevereiro" |
list_submissions | Envios dos estudantes | "Quem enviou a Tarefa 3?" |
bulk_grade_submissions | Corrigir vários de uma vez | "Corrija estes 10 estudantes" |
get_assignment_analytics | Estatísticas de desempenho | "Mostre análises do Questionário 2" |
send_conversation | Enviar mensagem aos estudantes | "Envie mensagem aos estudantes que não enviaram" |
create_announcement | Publicar anúncios | "Anuncie a mudança da data do exame" |
| Gerenciamento de Módulos | ||
create_module | Criar módulo do curso | "Crie um módulo para a Semana 5" |
update_module | Atualizar configurações do módulo | "Renomeie o módulo da prova parcial" |
add_module_item | Adicionar conteúdo ao módulo | "Adicione a página do programa à Semana 1" |
delete_module | Remover um módulo | "Exclua o módulo de teste vazio" |
| Página e Conteúdo | ||
create_page | Criar página do curso | "Crie uma página para horário de atendimento" |
edit_page_content | Atualizar conteúdo da página | "Atualize a página do programa" |
update_page_settings | Publicar/despublicar páginas | "Publique todas as páginas da Semana 3" |
bulk_update_pages | Operações em lote de páginas | "Despublique todas as páginas de rascunho" |
| Gerenciamento de Arquivos | ||
upload_course_file | Enviar arquivo local para o Canvas | "Envie syllabus.pdf para o curso" |
Ferramentas Compartilhadas (clique para expandir)
| Ferramenta | Finalidade |
|---|---|
list_courses | Todos os cursos matriculados |
get_course_details | Informações do curso + programa |
list_pages | Páginas do curso |
get_page_content | Ler conteúdo da página |
list_modules | Listar módulos do curso |
list_module_items | Itens dentro de um módulo |
list_discussion_topics | Fóruns de discussão |
list_discussion_entries | Postagens em uma discussão |
post_discussion_entry | Adicionar uma postagem de discussão |
reply_to_discussion_entry | Responder a uma postagem |
Ferramentas do Designer de Aprendizagem (design e controle de qualidade do curso)
| Ferramenta | Finalidade | Exemplo de Prompt |
|---|---|---|
get_course_structure | Árvore completa de módulo→itens como JSON | "Mostre-me a estrutura de CS 101" |
scan_course_content_accessibility | Scanner de violações WCAG (20 verificações: títulos, tabelas, links, contraste, texto alternativo, legendas, DesignPLUS) | "Audite a acessibilidade de BADM 350" |
fetch_ufixit_report | Relatório institucional de acessibilidade | "Puxe o relatório UFIXIT deste curso" |
parse_ufixit_violations | Extrair violações estruturadas | "Analise as violações do UFIXIT" |
format_accessibility_summary | Relató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)
| Ferramenta | Finalidade | Quando Usar |
|---|---|---|
search_canvas_tools | Descobrir ferramentas MCP e operações da API de código | Encontrar ferramentas disponíveis e operações em lote |
execute_typescript | Executar TypeScript localmente | 30+ 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_TOOLSpara as ferramentas de escrita que sua implantação precisa, ouall(a execução de código deve ser nomeada separadamente). Servidores stdio locais não são alterados, a menos que você defina send_conversationsempre 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 tokenget_conversation_detailsnunca marca uma conversa como lida;auto_mark_readé removido → remova o argumento e usemark_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=Falsepara obter o conteúdo na resposta;extract_peer_review_datasetsalva 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 carregamschema_version: 2com seções rotuladasmcp_tools/code_execution_api; a antiga chave planatoolsdesapareceu. 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_todoganhou 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_announcementfalha 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,.mcpbinclui 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
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
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).
| Habilidade | Para | O Que Faz |
|---|---|---|
canvas-week-plan | Estudantes | Planejador semanal: datas de vencimento, status de envio, notas, revisões por pares |
canvas-morning-check | Educadores | Painel de saúde do curso: taxas de envio, estudantes com dificuldades, prazos |
canvas-bulk-grading | Educadores | Árvore de decisão de notas: individual → em massa → execução de código com verificações de segurança |
canvas-peer-review-manager | Educadores | Pipeline completo de revisão por pares: análises, análise de qualidade, lembretes, relatórios |
canvas-discussion-facilitator | Ambos | Navegação em discussões, monitoramento de participação, respostas, facilitação |
canvas-course-qc | Learning Designers | Auditoria de qualidade pré-semestre: estrutura, conteúdo, publicação, completude |
canvas-accessibility-auditor | Learning Designers | Varredura WCAG, relatório priorizado, remediação guiada, verificação |
canvas-course-builder | Learning Designers | Estruturar 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:
- Baixe
canvas-mcp.mcpbda última versão. - Clique duas vezes no arquivo (ou arraste-o para Claude Desktop → Configurações → Extensões).
- 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:
- Vá para Canvas → Conta → Configurações → Integrações Aprovadas, encontre o novo token, clique em Ativar e atualize a página.
- 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 é:
- Localize o arquivo de configuração MCP do seu cliente
- 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
- Nome do servidor:
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)
- Ferramentas de Curso - Listar e gerenciar cursos, obter informações detalhadas, gerar resumos com conteúdo do programa
- Ferramentas de Discussão e Anúncios - Gerenciar discussões, anúncios e respostas
- 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.
| Abordagem | Melhor Para | Comportamento do Contexto |
|---|---|---|
| Ferramentas MCP | Consultas simples, conjuntos de dados pequenos | Retorna resultados das ferramentas ao modelo |
bulk_grade_submissions | Avaliação em lote de 10-29 itens | Lida com um lote definido em uma chamada de ferramenta |
execute_typescript | 30+ itens, lógica personalizada | Processa 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
| Modo | Configuração | O Que Faz |
|---|---|---|
| Sandbox local (padrão) | Nenhuma necessária | Timeout de 120s, memória de 512MB, ambiente filtrado, controles de rede de melhor esforço |
| Sandbox de contêiner | TS_SANDBOX_MODE=container | Isolamento do sistema de arquivos do contêiner via Docker/Podman; garantias de saída dependem da configuração de implantação |
| Sem sandbox | ENABLE_TS_SANDBOX=false | Acesso 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
- Documentação das Ferramentas — Referência para as ferramentas disponíveis, incluindo ferramentas opcionais com recursos controlados
- Guia do Estudante — Começando como estudante
- Guia do Educador — Considerações sobre FERPA e fluxos de trabalho do educador
- Exemplo de Avaliação em Lote — Passo a passo de avaliação em lote
- Guia de Desenvolvimento — Arquitetura e contribuiçã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:
- O Servidor Não Inicia - Verifique sua configuração de Instalação Local: arquivo
.env, caminho do ambiente virtual e dependências - Erros de Autenticação - Verifique a validade do seu token da API do Canvas e as permissões
- Problemas de Conexão - Verifique a correção da URL da API do Canvas e o acesso à rede
- 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:
| Camada | Padrão |
|---|---|
| Sanitização de PII nos logs | LOG_REDACT_PII=true |
| Validação de token na inicialização | Sempre ativo |
| Registro de auditoria estruturado | Opt-in: LOG_ACCESS_EVENTS=true |
| Salvaguardas de execução de código | ENABLE_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_filepara 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