Canvas LMS
Servidor MCP para acesso fácil a dados educacionais através da sua instância do Canvas LMS.
Documentação
Servidor Canvas LMS MCP
Um servidor Canvas LMS MCP (Machine Conversation Protocol) mínimo para acesso fácil a dados educacionais por meio da sua instância Canvas LMS. Este servidor fornece uma ponte entre sistemas de IA (como Cursor) e o Canvas Learning Management System.
Recursos
- Cursos: Listar cursos em que você está matriculado, obter detalhes do curso, ementa, módulos e itens de módulos
- Tarefas: Listar e obter tarefas com status de envio opcional
- Páginas: Obter páginas do curso por slug de URL
- Envios: Listar seus próprios envios com notas e feedback
- Anúncios: Listar anúncios em vários cursos
- Discussões: Listar tópicos e visualizar threads completas de discussão
- Calendário: Listar eventos do calendário com filtro por data
- Planejador: Listar itens do planejador (tarefas, anúncios, etc.)
- Matrículas: Obter dados de matrícula com notas
- Questionários: Listar e obter questionários (apenas questionários clássicos)
- Arquivos: Listar e obter arquivos
- Navegação: Obter abas do curso, grupos de tarefas e cursos favoritos
Instalação
Instalando via Smithery
Para instalar o Canvas LMS Server para Claude Desktop automaticamente via Smithery:
npx -y @smithery/cli install @ahnopologetic/canvas-lms-mcp --client claude
Pré-requisitos
- Python 3.13+
- Token da API Canvas LMS
- Gerenciador de pacotes
uv(recomendado)
Métodos de Instalação
Opção 1: Instalar com uvx (Recomendado)
A maneira mais fácil de instalar e executar o canvas-lms-mcp é usando uvx:
uvx canvas-lms-mcp
Isso executará o servidor em um ambiente isolado sem instalá-lo permanentemente.
Para instalar a ferramenta permanentemente:
uv tool install canvas-lms-mcp
Opção 2: Instalar a partir do código-fonte
-
Clone o repositório:
git clone https://github.com/yourusername/canvas-lms-mcp.git cd canvas-lms-mcp -
Instale com uv:
# Install uv if you don't have it yet curl -LsSf https://astral.sh/uv/install.sh | sh # Create a virtual environment and install dependencies uv venv uv pip install -e .Alternativamente, use métodos tradicionais:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -e .
Configuração
Defina as seguintes variáveis de ambiente:
export CANVAS_API_TOKEN="your_canvas_api_token"
export CANVAS_BASE_URL="https://your-institution.instructure.com" # Default: https://canvas.instructure.com
Você pode obter seu token da API Canvas nas configurações da sua conta Canvas.
Executando o Servidor
Inicie o servidor com uv:
uv run src/canvas_lms_mcp/main.py
Se instalado com a ferramenta uvx:
canvas-lms-mcp
Por padrão, o servidor executa em http://localhost:8000.. Você pode usar a interface FastMCP em http://localhost:8000/docs para interagir com a API.
Ferramentas Disponíveis
O servidor fornece 22 ferramentas para interagir com o Canvas LMS:
Cursos
list_courses
Listar cursos nos quais o usuário está ativamente matriculado.
Parâmetros:
page(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
get_course
Obter um único curso por ID.
Parâmetros:
course_id(obrigatório): ID do cursoinclude(opcional): Lista de dados adicionais a incluir
get_course_syllabus
Obter o corpo da ementa de um curso como HTML.
Parâmetros:
course_id(obrigatório): ID do curso
get_course_modules
Obter módulos de um curso.
Parâmetros:
course_id(obrigatório): ID do cursoinclude(opcional): Lista de dados adicionais a incluirper_page(opcional, padrão=100): Número de itens por página
get_module_items
Obter itens de um módulo específico.
Parâmetros:
course_id(obrigatório): ID do cursomodule_id(obrigatório): ID do módulo
Tarefas
list_assignments
Listar tarefas de um curso.
Parâmetros:
course_id(obrigatório): ID do cursobucket(obrigatório): Filtrar por "past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming" ou "future"order_by(obrigatório): Ordenar por "due_at", "position" ou "name"include(opcional): Lista de dados adicionais a incluir (ex.:["submission"]para ver o status da nota)page(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
get_assignment
Obter uma única tarefa por ID.
Parâmetros:
course_id(obrigatório): ID do cursoassignment_id(obrigatório): ID da tarefa
list_assignment_groups
Listar grupos de tarefas de um curso (mostra ponderação/categorias de notas).
Parâmetros:
course_id(obrigatório): ID do curso
Páginas
get_page
Obter uma única página pelo seu slug de URL.
Parâmetros:
course_id(obrigatório): ID do cursopage_slug(obrigatório): Slug de URL da página (ex.: "syllabus", "course-handbook")
Envios
list_submissions
Listar os envios do usuário atual para um curso, incluindo notas e feedback.
Parâmetros:
course_id(obrigatório): ID do cursoinclude(opcional): Lista de dados adicionais (ex.:["assignment", "submission_comments"])page(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
Anúncios
list_announcements
Listar anúncios de um ou mais cursos.
Parâmetros:
course_ids(obrigatório): Lista de IDs de cursospage(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
Discussões
list_discussions
Listar tópicos de discussão de um curso.
Parâmetros:
course_id(obrigatório): ID do cursopage(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
get_discussion_view
Obter a visão completa de um tópico de discussão, incluindo todas as respostas.
Parâmetros:
course_id(obrigatório): ID do cursodiscussion_id(obrigatório): ID do tópico de discussão
Calendário
list_calendar_events
Listar eventos do calendário para cursos.
Parâmetros:
context_codes(obrigatório): Lista de códigos de contexto (ex.:["course_123"])start_date(opcional): Data de início no formato ISO 8601end_date(opcional): Data de término no formato ISO 8601page(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
Itens do Planejador
list_planner_items
Listar itens do planejador para o usuário autenticado.
Parâmetros:
start_date(obrigatório): Data de início no formato ISO 8601end_date(obrigatório): Data de término no formato ISO 8601context_codes(opcional): Lista de códigos de contexto (ex.:["course_123"])page(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
Matrículas
get_enrollments
Obter as matrículas do usuário atual, incluindo notas.
Questionários
list_quizzes
Listar questionários de um curso. Observação: funciona apenas com Questionários Clássicos, não com Novos Questionários (quiz_lti).
Parâmetros:
course_id(obrigatório): ID do cursoinclude(opcional): Lista de dados adicionais a incluirpage(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
get_quiz
Obter um único questionário por ID.
Parâmetros:
course_id(obrigatório): ID do cursoquiz_id(obrigatório): ID do questionário
Arquivos
list_files
Listar arquivos de um curso ou pasta. Observação: pode retornar 403 para contas de estudantes dependendo das permissões da instituição.
Parâmetros:
course_id(opcional): ID do cursofolder_id(opcional): ID da pastainclude(opcional): Lista de dados adicionais a incluirpage(opcional, padrão=1): Número da página (indexado a partir de 1)items_per_page(opcional, padrão=10): Número de itens por página
get_file
Obter um arquivo por ID. Funciona com IDs de arquivo conhecidos mesmo quando list_files está restrito.
Parâmetros:
course_id(obrigatório): ID do cursofile_id(obrigatório): ID do arquivo
Outros
get_tabs
Obter abas/itens de navegação disponíveis para um curso.
Parâmetros:
course_id(obrigatório): ID do curso
list_favorites
Listar os cursos favoritos do usuário atual.
Integração
Este servidor MCP funciona com qualquer cliente que suporte o Model Context Protocol, incluindo Claude Desktop, Claude Code, Cursor, Windsurf e outros.
A configuração do MCP é a mesma em todos os clientes — apenas o local do arquivo de configuração difere:
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}
Substitua your_canvas_api_token pelo seu token da API Canvas (encontrado em Canvas → Conta → Configurações → Novo Token de Acesso) e your-institution.instructure.com pela URL do Canvas da sua instituição.
Claude Desktop
Adicione ao arquivo de configuração do Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Reinicie o Claude Desktop após salvar.
Claude Code
Adicione ao .mcp.json do seu projeto ou ao ~/.claude/settings.json global:
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}
Cursor
Adicione ao .cursor/mcp.json no diretório do seu projeto. Reinicie o Cursor após salvar.
Windsurf
Adicione ao ~/.codeium/windsurf/mcp_config.json. Reinicie o Windsurf após salvar.
Exemplos de Uso
Depois de conectado, você pode perguntar ao seu assistente de IA sobre seus dados do Canvas:
- "Quais tarefas tenho para entregar na próxima semana?"
- "Mostre-me a ementa do meu curso de Biologia"
- "Quais anúncios foram publicados hoje?"
- "Quais são minhas notas até agora?"
- "O que está na minha agenda para amanhã?"
- "Mostre-me as postagens de discussão da minha turma de Inglês"
Desenvolvimento
Para instruções detalhadas de desenvolvimento, consulte o arquivo DEVELOPMENT.md.
Licença
Este projeto está licenciado sob a Licença MIT — consulte o arquivo LICENSE para obter detalhes.