Skip to main content
Glama

CanvasLMS - API

CanvasLMS - API es un servidor MCP local que pone tu cuenta de Canvas LMS delante de un asistente de IA. Se ejecuta en tu máquina, se comunica con Canvas con tu propio token de acceso personal y expone unas 100 herramientas que cubren cursos, tareas, calificaciones, debates, módulos, páginas, archivos, mensajería, revisiones por pares y accesibilidad. Cada herramienta devuelve Markdown. Cada herramienta que cambia Canvas muestra antes el cambio que realizaría y solo lo aplica cuando tú lo confirmas.

Inicio rápido

  1. Obtén un token de acceso personal de Canvas: en Canvas ve a Cuenta > Configuración > Integraciones aprobadas > Nuevo token de acceso.

  2. Clona el repositorio e instálalo.

    git clone https://github.com/harryx2011-boop/CanvasLMS-API.git
    cd CanvasLMS-API
    uv venv .venv
    uv pip install -e .

    Sin uv, usa un entorno virtual estándar:

    python -m venv .venv
    .venv\Scripts\activate   # Windows
    source .venv/bin/activate # macOS/Linux
    pip install -e .
  3. Copia el archivo de entorno de ejemplo y rellena el host y el token de tu Canvas.

    cp .env.example .env
  4. Verifica la conexión.

    canvaslms-api --test

Esto imprime tu nombre, tu ID de usuario y tus cursos activos. Si falla, comprueba CANVAS_URL y CANVAS_TOKEN en el archivo .env.

Related MCP server: Canvas LMS MCP Server

Conectar con Claude Code

Windows:

claude mcp add --scope user canvaslms-api -- "<absolute path>\.venv\Scripts\canvaslms-api.exe"

macOS/Linux:

claude mcp add --scope user canvaslms-api -- "<absolute path>/.venv/bin/canvaslms-api"

El servidor lee .env desde la carpeta del repositorio al iniciarse, por lo que no es necesario incluir variables de entorno en la configuración del cliente. Usa la ruta absoluta al ejecutable dentro de .venv.

Conectar con Claude Desktop

Añade una entrada al archivo de configuración de Claude Desktop:

{
  "mcpServers": {
    "canvaslms-api": {
      "command": "<absolute path>\\.venv\\Scripts\\canvaslms-api.exe"
    }
  }
}

En macOS/Linux, usa <absolute path>/.venv/bin/canvaslms-api para command.

Ubicación de los archivos de configuración:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Reinicia Claude Desktop después de editar el archivo.

Otros clientes

Cualquier cliente MCP que admita servidores stdio puede lanzar el ejecutable directamente, igual que Claude Code y Claude Desktop de arriba.

Para clientes que solo hablan HTTP, ejecuta el servidor con el transporte HTTP:

canvaslms-api --transport http --host 127.0.0.1 --port 7100

Apunta el cliente a http://127.0.0.1:7100. El servidor sigue leyendo las credenciales de Canvas desde .env en la carpeta del repositorio.

Cómo se comporta

  • Identificadores de curso. Cualquier argumento course admite un ID numérico de Canvas, un código de curso (ENG101), parte del nombre de un curso o sis_course_id:X. Si no sabes cuál usar, consulta antes la lista con list_courses.

  • Control de confirmación. Toda herramienta que modifica Canvas lleva un argumento confirm: bool = false. Si se llama sin argumento, la herramienta devuelve un comprobante de los cambios que se harían y no realiza ninguna solicitud que altere Canvas. Vuelve a llamarla con confirm=true después de revisar el comprobante.

  • Permisos. Cada herramienta se ejecuta con los permisos del propietario del token. Un token de estudiante no puede ver datos privados de otros estudiantes ni usar herramientas de educador, como calificaciones o mensajería masiva; esas llamadas devuelven el código 403 de Canvas con una pista sobre qué permiso falta.

  • Salida. Cada herramienta devuelve Markdown, formateado para mostrarse directamente en una transcripción de chat.

  • Anonimización. Cuando CANVAS_ANONYMIZE_STUDENTS=true, los nombres de los estudiantes en la salida de las herramientas se reemplazan por un seudónimo estable por curso en lugar de su nombre real.

Referencia de herramientas

Las herramientas de escritura (marcadas con confirm) devuelven un comprobante hasta que se vuelven a llamar con confirm=true.

Cursos e identidad

Herramienta

Proósito

confirm

get_profile

Obtiene el perfil de Canvas del propietario del token

get_enrollments

Lista las matrículas del propietario del token en todos los cursos

list_courses

Lista y busca cursos que el propietario del token puede ver

get_course

Obtiene los detalles de un curso

get_syllabus

Obtiene el programa de un curso

get_course_overview

Resume un curso: programa, módulos y trabajo próximo

get_course_structure

Obtiene el esquema completo de un curso: módulos, páginas y tareas

get_cache_status

Muestra qué datos de resolución de cursos están en caché

clear_cache

Limpia la caché de resolución de cursos

Estudiante

Herramienta

Proyecto

Comprobación

get_upcoming_assignments

Lista las tareas próximas en todos los cursos

get_todo

Obtiene la lista de pendientes de Canvas

get_submission_status

Muestra el estado de entregadas, faltas o calificaciones de un curso

get_grades

Obtiene las calificaciones actuales de uno o todos los cursos

get_pending_peer_reviews

Lista las revisiones por pares que aún debe el propietario del token

get_submission

Obtiene el detalle de una entrega y sus comentarios

submit_assignment

Envía una tarea

confirm

comment_on_submission

Añade un comentario a una entrega

confirm

mark_module_item_done

Marca un elemento de módulo como completado

confirm

Tareas y calificaciones

Herramienta

Proyecto

Comprob

list_assignments

Lista las tareas de un curso

get_assignment

Obtiene el detalle de una tarea

list_submissions

Lista las entregas de una tarea

get_assignment_analytics

Resume las entregas y la distribución de calificaciones de una tarea

get_student_analytics

Resume la actividad de un estudiante en un curso

create_assignment

Crea una tarea

confirm

update_assignment

Actualiza una tarea

confirm

bulk_grade_submissions

Califica varias entregas en una sola llamada

confirm

grade_with_rubric

Califica una entrega con rúbrica

confirm

Rúbricas

Herramienta

Proyecto

Comprob

list_rubrics

Lista las rúbricas de un curso

get_rubric

Obtiene los criterios de una rúbrica

get_rubric_assessment

Obtiene la evaluación con rúbrica de una entrega

create_rubric

Crea una rúbrica

confirm

create_rubric_from_csv

Crea una rúbrica a partir de una definición CSV

confirm

associate_rubric

Asocia una rúbrica a una tarea

confirm

Debates y anuncios

Herramienta

Proyecto

Comprob

list_discussion_topics

Lista los temas de debate de un curso

get_discussion_topic

Obtiene un tema de debate

list_discussion_entries

Lista las entradas de nivel superior de un tema

get_discussion_entry

Obtiene una entrada del debate

get_discussion_thread

Obtiene un hilo completo con respuestas

post_discussion_entry

Publica una nueva entrada en un tema

confirm

reply_to_discussion_entry

Responde a una entrada existente

confirm

create_discussion_topic

Crea un tema de debate

confirm

update_discussion_topic

Actualiza un tema de debate

confirm

list_announcements

Lista los anuncios de un curso

create_announcement

Crea un anuncio

confirm

delete_announcement

Elimina un anuncio

confirm

delete_announcements

Elimina varios anuncios por ID

confirm

delete_announcements_matching

Elimina los anuncios que coinciden con un filtro

confirm

Módulos

Herramienta

Proyecto

Confirma

list_modules

Lista los módulos de un curso

list_module

Lista los elementos de un módulo

create_module

Crea un módulo

confirm

update_module

Actualiza un módulo

confirm

delete_module

Elimina un módulo

confirm

add_module_item

Añade un elemento a un módulo

confirm

update_module_item

Actualiza un elemento de un módulo

confirm

delete_module_item

Elimina un elemento de un módulo

confirm

Páginas

Herramienta

Proyecto

confirm

list_pages

Lista las páginas de un curso

get_page

Obtiene los metadatos de una página

get_page_content

Obtiene el cuerpo de una página

get_front_page

Obtiene la portada de un curso

create_page

Crea una página

confirm

edit_page_content

Reemplaza el cuerpo de una página

confirm

update_page_settings

Actualiza los ajustes de una página (título, estado de publicación, derechos de edición)

confirm

bulk_update_pages

Aplica la misma edición a varias páginas

confirm

delete_page

Elimina una página

confirm

Archivos

Herramienta

Proyecto

confirm

list_files

Lista los archivos de un curso

read_file

Lee el contenido de un archivo de texto

download_file

Descarga un archivo al disco

upload_file

Sube un archivo a un curso

confirm

Mensajería

Herramienta

Proyecto

confirm

list_conversations

Lista las conversaciones de la bandeja de entrada de Canvas

get_conversation

Obtiene los mensajes de una conversación

get_unread_count

Obtiene la cantidad de mensajes no leídos

mark_conversations_read

Marca conversaciones como leídas

confirm

send_conversation

Envía un nuevo mensaje

confirm

send_bulk_messages

Envía el mismo mensaje a varios destinatarios

confirm

Revisiones por pares

Herramienta

Propósito

confirm

list_peer_reviews

Listar las asignaciones de revisión entre pares para una tarea

assign_peer_review

Asignar una revisión entre pares

confirm

get_peer_review_assignments

Listar quién revisa a quién

get_peer_review_completion_analytics

Resumir las tasas de finalización de revisiones entre pares

get_peer_review_followup_list

Listar a los estudiantes que aún deben una revisión entre pares

get_peer_review_comments

Obtener los comentarios dejados en una revisión entre pares

analyze_peer_review_quality

Puntuar los comentarios de las revisiones entre pares por profundidad y utilidad

identify_problematic_peer_reviews

Marcar revisiones entre pares de bajo esfuerzo o faltantes

generate_peer_review_report

Crear un informe resumido de la actividad de revisiones entre pares

generate_peer_review_feedback_report

Crear un informe del contenido de los comentarios en todas las revisiones entre pares

extract_peer_review_dataset

Exportar los datos de revisiones entre pares para su análisis

message_peer_reviewers

Enviar mensajes a los estudiantes sobre sus asignaciones de revisión entre pares

confirm

send_peer_review_followups

Enviar recordatorios a los estudiantes con revisiones entre pares pendientes

confirm

Personas y privacidad

Herramienta

Propósito

confirm

list_users

Listar los usuarios matriculados en un curso

list_groups

Listar los grupos de un curso

check_enrollment

Comprobar la matriculación de un usuario en un curso

export_anonymization_map

Exportar la correspondencia entre seudónimos y nombres reales

confirm

get_privacy_status

Mostrar si la anonimización está activa

Accesibilidad

Herramienta

Propósito

confirm

scan_course_content_accessibility

Analizar las páginas y archivos de un curso en busca de problemas de accesibilidad

fix_accessibility_issues

Aplicar correcciones para los problemas de accesibilidad detectados

confirm

fetch_ufixit_report

Obtener un informe de accesibilidad UFIXIT existente

parse_ufixit_violations

Extraer las infracciones de un informe UFIXIT

format_accessibility_summary

Formatear un análisis de accesibilidad como un resumen legible

Copia de curso

Herramienta

Propósito

confirm

create_content_migration

Iniciar una migración/copia de contenido del curso

confirm

get_content_migration_status

Comprobar el progreso de una migración de contenido

Meta

Herramienta

Propósito

confirm

search_tools

Buscar las herramientas disponibles por palabra clave

Configuración

Toda la configuración proviene de variables de entorno, cargadas desde un archivo .env en la raíz del repositorio.

Variable

Obligatoria

Valor predeterminado

Propósito

CANVAS_URL

Tu host de Canvas, p. ej. https://yourschool.instructure.com. Sin sufijo /api/v1.

CANVAS_TOKEN

Tu token de acceso personal de Canvas.

CANVAS_TIMEOUT

no

30

Tiempo de espera de las solicitudes HTTP, en segundos.

CANVAS_CACHE_TTL

no

300

Durante cuánto tiempo se almacenan en caché los resultados de resolución de cursos, en segundos.

CANVAS_MAX_CONCURRENCY

no

5

Número máximo de solicitudes simultáneas a Canvas.

CANVAS_ANONYMIZE_STUDENTS

no

false

Sustituir los nombres de los estudiantes por seudónimos estables en la salida de las herramientas.

CANVAS_DOWNLOAD_DIR

no

directorio temporal del sistema

Dónde escribe download_file los archivos descargados.

Ejecuta canvaslms-api --config para imprimir la configuración resuelta, con el token enmascarado.

Desarrollo

Instala con extras de desarrollo:

uv pip install -e ".[dev]"

Ejecuta las pruebas:

pytest

Lint:

ruff check .

La CI ejecuta pruebas y lint en cada push. También hay disponible una imagen de Docker; su punto de entrada es canvaslms-api.

Indicadores de CLI útiles durante el desarrollo: canvaslms-api --list-tools imprime el nombre de cada herramienta registrada, canvaslms-api --config imprime la configuración resuelta, canvaslms-api --version imprime la versión instalada.

Notas de seguridad

  • Tu token de Canvas permanece local. Se lee desde .env al iniciar y se usa únicamente para llamar a la API de Canvas que configuraste.

  • El token nunca se registra. --config y get_privacy_status lo enmascaran.

  • Las herramientas de escritura requieren un confirm=true explícito después de una vista previa. Nada cambia en Canvas por accidente.

  • download_file no sobrescribirá un archivo existente en la ruta de destino.

Licencia

MIT. Consulta LICENSE.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.

  • An MCP server that gives your AI access to the source code and docs of all public github repos

  • Connect AI agents to Flato's editable canvas runtime through a hosted MCP server.

View all MCP Connectors

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/harryx2011-boop/CanvasLMS-API'

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