Canvas

Se integra con el sistema de gestión de aprendizaje Canvas (LMS), compatible con la anonimización y los controles de privacidad que cumplen con FERPA.

Documentación

Canvas MCP — AI tools for Canvas LMS

Servidor MCP de Canvas

License: MIT skills.sh

Servidor MCP para Canvas LMS con hasta 103 herramientas y 8 habilidades de agente. Diseñado para Claude Desktop, Cursor, Codex, Windsurf y más de 40 otros agentes; la configuración y las capacidades varían según el cliente.

Inicio Rápido

1. Instala el servidor MCP (todo lo demás, incluidas las habilidades, necesita que esté en ejecución):

  • Claude Desktop: descarga canvas-mcp.mcpb desde la última versión y haz doble clic en él. Te pedirá la URL y el token de Canvas; no se necesita terminal. Detalles.
  • Cursor, Zed, Windsurf, Continue, Claude Code y otros clientes: pip install en un virtualenv, añade tu token a .env y apunta tu cliente al binario canvas-mcp-server. Instalación Local tiene los bloques de configuración por cliente.

2. Verifica: canvas-mcp-server --test debería informar una conexión exitosa a Canvas. Luego reinicia tu cliente.

3. Opcional: añade las habilidades de flujo de trabajo. Estas enseñan a tu agente las recetas de múltiples pasos (plan semanal, revisión matutina, calificación masiva, revisión entre pares, control de calidad del curso) además de las herramientas:

npx skills add vishalsachdev/canvas-mcp

Consulta Habilidades del Agente para ver la lista. Si tu agente es Claude Code, las mismas recetas también están disponibles como comandos de barra.

Para Agentes de IA

Canvas MCP proporciona hasta 103 herramientas para interactuar con Canvas LMS; el perfil predeterminado registra menos, y las herramientas opcionales controladas por funciones pueden elevar el total a 103. Las herramientas están organizadas por tipo de usuario:

Herramientas para Estudiantes (clic para expandir)
HerramientaPropósitoEjemplo de Prompt
get_my_upcoming_assignmentsFechas de entrega para los próximos N días"¿Qué tengo que entregar esta semana?"
get_my_todo_itemsLista de tareas de Canvas"Muestra mi lista de tareas"
get_my_submission_statusEnviado vs. faltante"¿He enviado todo?"
get_my_course_gradesCalificaciones actuales"¿Cuáles son mis calificaciones?"
get_my_peer_reviews_todoRevisiones entre pares pendientes"¿Qué revisiones entre pares necesito hacer?"
Herramientas para Educadores (clic para expandir)
HerramientaPropósitoEjemplo de Prompt
list_assignmentsTodas las tareas del curso"Muestra las tareas en BADM 350"
create_assignmentCrear nueva tarea"Crea una tarea con fecha de entrega el 26 de enero con envío de texto en línea"
update_assignmentActualizar tarea existente"Cambia la fecha de entrega de la Tarea 3 al 15 de febrero"
list_submissionsEnvíos de estudiantes"¿Quién envió la Tarea 3?"
bulk_grade_submissionsCalificar varios a la vez"Califica a estos 10 estudiantes"
get_assignment_analyticsEstadísticas de rendimiento"Muestra análisis para el Cuestionario 2"
send_conversationMensaje a estudiantes"Mensaje a los estudiantes que no han enviado"
create_announcementPublicar anuncios"Anuncia el cambio de fecha del examen"
Gestión de Módulos
create_moduleCrear módulo del curso"Crea un módulo para la Semana 5"
update_moduleActualizar configuración del módulo"Renombra el módulo de mitad de período"
add_module_itemAñadir contenido al módulo"Añade la página del programa a la Semana 1"
delete_moduleEliminar un módulo"Elimina el módulo de prueba vacío"
Página y Contenido
create_pageCrear página del curso"Crea una página para horas de oficina"
edit_page_contentActualizar contenido de la página"Actualiza la página del programa"
update_page_settingsPublicar/despublicar páginas"Publica todas las páginas de la Semana 3"
bulk_update_pagesOperaciones de página por lotes"Despublica todas las páginas en borrador"
Gestión de Archivos
upload_course_fileSubir archivo local a Canvas"Sube syllabus.pdf al curso"
Herramientas Compartidas (clic para expandir)
HerramientaPropósito
list_coursesTodos los cursos inscritos
get_course_detailsInformación del curso + programa
list_pagesPáginas del curso
get_page_contentLeer contenido de la página
list_modulesListar módulos del curso
list_module_itemsElementos dentro de un módulo
list_discussion_topicsForos de discusión
list_discussion_entriesPublicaciones en una discusión
post_discussion_entryAñadir una publicación de discusión
reply_to_discussion_entryResponder a una publicación
Herramientas para Diseñadores de Aprendizaje (diseño del curso y control de calidad)
HerramientaPropósitoEjemplo de Prompt
get_course_structureÁrbol completo de módulo→elementos como JSON"Muéstrame la estructura de CS 101"
scan_course_content_accessibilityEscáner de violaciones WCAG (20 comprobaciones: encabezados, tablas, enlaces, contraste, texto alternativo, subtítulos, DesignPLUS)"Audita la accesibilidad de BADM 350"
fetch_ufixit_reportInforme institucional de accesibilidad"Obtén el informe UFIXIT para este curso"
parse_ufixit_violationsExtraer violaciones estructuradas"Analiza las violaciones de UFIXIT"
format_accessibility_summaryInforme de violaciones legible"Resume los problemas de accesibilidad"

Habilidades: canvas-course-qc (auditoría previa al semestre), canvas-accessibility-auditor (revisión orientada a WCAG), canvas-course-builder (andamiaje de cursos a partir de especificaciones/plantillas).

Herramientas para Desarrolladores (para operaciones masivas)
HerramientaPropósitoCuándo Usar
search_canvas_toolsDescubrir herramientas MCP y operaciones de la API de códigoEncontrar herramientas disponibles y operaciones masivas
execute_typescriptEjecutar TypeScript localmenteMás de 30 elementos, lógica personalizada, procesamiento local por elemento

Árbol de decisión: Consulta simple → herramientas MCP. Calificación por lotes (10+) → bulk_grade_submissions. Masivo complejo (30+) → execute_typescript.

Referencia Rápida

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

No se puede hacer: Crear/eliminar cursos, modificar la configuración del curso, acceder a datos de otros usuarios

Límites de tasa: ~700 solicitudes/10 min. Usa max_concurrent=5 para operaciones masivas.

Documentación completa: AGENTS.md | tools/TOOL_MANIFEST.json | tools/README.md

Descripción General

El Servidor MCP de Canvas cierra la brecha entre los asistentes de IA y el Sistema de Gestión de Aprendizaje Canvas, proporcionando flujos de trabajo específicos para estudiantes, educadores, diseñadores de aprendizaje y desarrolladores. Construido sobre el Protocolo de Contexto de Modelo (MCP), está diseñado para clientes compatibles con MCP; la configuración y las capacidades compatibles varían según el cliente.

Última Versión: v1.13.0

Publicada: Septiembre 2026 | Registro de Cambios Completo | Todas las Versiones

Una versión de seguridad: las herramientas que cambian algo ahora solo existen si el operador lo permite (GHSA-hmr8-mvr2-mvw5). Las instrucciones que un estudiante inserta en el contenido del curso pueden dirigir al asistente de un instructor, y un token de confirmación no puede detener eso porque el asistente puede canjear su propio token. El nuevo ajuste ALLOWED_WRITE_TOOLS elimina cada herramienta de escritura que el operador no haya permitido al inicio, por lo que no se puede listar ni llamar. Cinco cambios son disruptivos. Cada migración tiene una línea de largo:

  • Los servidores HTTP son de solo lectura a menos que se configuren → establece ALLOWED_WRITE_TOOLS a las herramientas de escritura que tu implementación necesita, o all (la ejecución de código debe nombrarse por separado). Los servidores stdio locales no cambian a menos que lo configures
  • send_conversation siempre muestra una vista previa primero, incluso para un solo destinatario → llama una vez, muestra la vista previa, luego llama de nuevo con argumentos idénticos más el token
  • get_conversation_details nunca marca una conversación como leída; auto_mark_read se elimina → elimina el argumento y usa mark_conversations_read
  • La calificación con rúbrica se detiene cuando la configuración de calificación no se puede verificar, y los resultados no confirmados cuentan como fallos → verifica Canvas antes de reintentar (#374, #375)
  • Las exportaciones de archivos locales rechazan a los llamadores HTTP → pasa save_to_file=False / save_locally=False para obtener el contenido en la respuesta; extract_peer_review_dataset guarda por defecto, por lo que su llamada simple ahora falla sobre HTTP

También nuevo: update_rubric para ediciones protegidas de rúbricas existentes (#386) y update_syllabus, que muestra una vista previa antes de reemplazar contenido existente. Corregido: las tareas de herramientas externas como Gradescope ya no se informan como faltantes (#390, gracias @EastArctica), la paginación de TypeScript sigue los encabezados Link dentro de un presupuesto de páginas (#403), y los flujos de confirmación y calificación se endurecieron (#394 a #408). El sandbox execute_typescript ahora se ejecuta como un usuario no root con un sistema de archivos raíz de solo lectura (#317, #339). Construido sobre FastMCP 4 y MCP SDK 2 (#354).

Versiones anteriores

v1.12.0 — Una versión de seguridad: cada herramienta de eliminación pregunta primero. Disruptivo: delete_announcement eliminado, dry_run eliminado de las herramientas de eliminación de anuncios, confirmation_token requerido en las siete herramientas de eliminación (#318), y Python 3.10 eliminado (#315). También nuevo: delete_assignment_with_confirmation, ACCESSIBILITY_CHECKERS (#325), y las herramientas de migración de contenido (#309).

v1.11.0 — Una versión de corrección de protocolo. Disruptivo: send_peer_review_reminders ahora es send_peer_review_inbox_messages (#303); los fallos de herramientas establecen isError: true de MCP (#270); las herramientas que devuelven cadenas ya no duplican su carga útil en structuredContent.result (#271); FastMCP mínimo 3.4.7 (#293). Gracias @jonespm

v1.10.0 — Una versión comunitaria de corrección de errores impulsada por pruebas en vivo de reporteros — gracias @khagyard, @zqian, @jonespm, @bruchris y @SHIL0018 (nuestra segunda contribución de código externa). Incluyó un cambio disruptivo en la forma de respuesta de search_canvas_tools.

  • Disruptivo: forma de respuesta v2 de search_canvas_tools (#281). La herramienta ahora realmente busca las ~99 herramientas MCP registradas junto con los archivos de la API de código TypeScript (anteriormente solo buscaba estos últimos, por lo que "revisión entre pares" no encontraba nada a pesar de existir ~10 herramientas de revisión entre pares). Las respuestas llevan schema_version: 2 con secciones etiquetadas mcp_tools / code_execution_api; la antigua clave plana tools ha desaparecido. El contenido de la API de código con detalle completo ahora también está limitado a 2,000 caracteres (#287)
  • Los estudiantes pueden encontrar sus revisiones entre pares (#275): get_my_peer_reviews_todo ganó una búsqueda directa por tarea y una ruta de descubrimiento del feed del Planificador — la misma fuente de datos que usa la interfaz de estudiante de Canvas — validada contra una carga útil de producción real del reportero
  • create_announcement falla de manera segura con tokens de estudiante (#283): Canvas degrada silenciosamente la creación a un tema de discusión regular; la herramienta ahora verifica previamente los permisos del curso y se niega antes de crear cualquier cosa, elimina automáticamente el tema no intencionado si una degradación aún se cuela, y aleja a los clientes de IA de publicar el contenido a través de herramientas de discusión como respaldo
  • Seguridad: validación de URL más estricta (corrección de escaneo de código), base de Docker actualizada a python:3.14-slim, acciones de CI actualizadas v1.9.0 — Endurecimiento contra inyección de prompts (#239): el texto creado por Canvas llega con protección de procedencia como datos-no-instrucciones; los envíos a múltiples destinatarios pasaron a ser de dos pasos vista-previa→confirmar (cambio disruptivo); las herramientas de escritura rechazan marcadores de bloque de código; se publicó el OSSF Scorecard, las acciones de CI están fijadas por SHA, .mcpb incluye procedencia SLSA; el asistente npm se retiró (#249). Once rondas de revisión adversarial antes de la fusión

v1.8.0 — Corrección del escaneo de seguridad: 11 de 12 hallazgos corregidos, tres cambios disruptivos (URLs de Canvas solo HTTPS, herramientas de transferencia de archivos solo stdio, descargas sin sobrescritura), se cerró de forma centralizada una vulnerabilidad medida de omisión de autorización de envíos, protección contra inyección de fórmulas CSV, la ejecución de código falla de forma segura, se elevaron los mínimos de dependencias (PR #251, #255)

v1.7.0 — Versión de corrección a partir de informes de errores de instructores: las escrituras ya no informan éxito cuando Canvas hizo silenciosamente menos de lo solicitado (#219–#221), tareas próximas de Planner-API (#222), check_enrollment respuestas AMBIGUAS (#199), correcciones de formato de transmisión para páginas/bandeja de entrada (#207, #208), anotaciones de herramientas de especificación MCP (#204), corrección de formato de rúbrica CSV (#190), anonimización consolidada en la capa de cliente (#179). Gracias @khagyard y @zqian

v1.6.0 — Herramientas de escritura para estudiantes de nivel 1 detrás de una lista de permitidos explícita (#170), get_my_enrollments / get_my_profile (#171), anonimización de tres niveles (#166, #179), correcciones de asociación de rúbricas (#180, #181), execute_typescript pasó a ser opcional (#178), CI con control de ruff (@w3lld1, PR #186)

v1.5.0 — get_syllabus (#134), create_rubric_from_csv (#119), update_discussion_topic (#154), migración a fastmcp 2.x (#145), avisos de dependencias despejados de 33 → 0 con un escaneo de CI de control (PR #156)

v1.4.0 — check_enrollment (PR #126), Extensión de Claude Desktop .mcpb, alojamiento institucional autenticado con Entra ID (#115, PR #125), HTTP falla de forma segura sin puerta de autenticación (PR #123)

v1.3.0 — create_rubric (PR #100), read_course_file (@DomBarker99, PR #90), corrección del bucle de eventos para herramientas con ámbito de usuario (PR #99), límite de seguridad para borrado masivo (PR #96), poda de dependencias (PR #93)

v1.2.0 — Filtrado de herramientas basado en roles (@Promithius-DR, PR #84), Corrección de accesibilidad (fix_accessibility_issues, escáner ampliado de 4→20 comprobaciones), Endurecimiento de seguridad (protecciones contra recorrido de rutas/enlaces simbólicos), Soporte de Windows para execute_typescript (PR #85), consolidación de CI (11→8 comprobaciones)

v1.1.0 — Servidor alojado (mcp.illinihunt.org), herramientas de Learning Designer + 3 habilidades, Agent Skills en skills.sh, Gestión de archivos (@Metzpapa, PR #75), Optimización de tokens, Distribución genérica

v1.0.8 — Endurecimiento de seguridad (saneamiento de PII, registro de auditoría, sandbox por defecto), linting con Ruff, más de 235 pruebas

v1.0.7 — Herramienta de actualización de tareas (update_assignment), CRUD completo, 9 pruebas

v1.0.6 — Gestión de módulos (7 herramientas), Configuración de páginas (2 herramientas), más de 235 pruebas

v1.0.5 — Claude Code Skills, sitio de GitHub Pages

v1.0.4 — API de ejecución de código para operaciones masivas eficientes en tokens, cumplimiento de MCP 2.14

Para estudiantes 👨‍🎓

Obtén asistencia impulsada por IA con:

  • Seguimiento de tareas y fechas límite próximas
  • Monitoreo de tus calificaciones en todos los cursos
  • Gestión de asignaciones de revisión entre pares
  • Acceso a contenido del curso y debates
  • Organización de tu lista de tareas pendientes

→ Comienza como estudiante

Para educadores 👨‍🏫

Mejora tu enseñanza con:

  • Gestión de tareas y calificaciones
  • Análisis de estudiantes y seguimiento de rendimiento
  • Facilitación de debates y revisión entre pares
  • Controles de privacidad diseñados para apoyar flujos de trabajo conscientes de FERPA
  • Herramientas de mensajería masiva y comunicación

→ Comienza como educador

Para diseñadores de aprendizaje 🎨

Diseño de cursos y aseguramiento de calidad impulsados por IA:

  • Andamiaje de cursos — Construye estructuras completas de cursos a partir de especificaciones, plantillas o clonando cursos existentes
  • Auditorías de calidad — Comprobaciones de control de calidad previas al semestre para estructura, contenido, publicación y completitud
  • Revisión de accesibilidad — Escáner orientado a WCAG con 20 comprobaciones (encabezados, tablas, alcance, contraste, texto alternativo, enlaces, subtítulos, migración DesignPLUS), informes priorizados, remediación guiada y verificación
  • Análisis de estructura del curso — Árbol completo de módulo→elementos en una sola llamada para una revisión rápida del curso

3 habilidades dedicadas (canvas-course-qc, canvas-accessibility-auditor, canvas-course-builder) además de la herramienta get_course_structure.

🤖 Agent Skills

Recetas de flujos de trabajo preconstruidas que enseñan a los agentes de IA cómo usar las herramientas de Canvas MCP de manera efectiva. Disponibles para más de 40 agentes de codificación a través de skills.sh, o como comandos de barra específicos de Claude Code.

Instalación vía skills.sh (cualquier agente)

Las habilidades llaman a las herramientas de MCP, así que instala el servidor primero; una habilidad sin el servidor no tiene nada que ejecutar.

npx skills add vishalsachdev/canvas-mcp

Esto lanza un selector interactivo para instalar habilidades en el agente de tu elección (Claude Code, Cursor, Codex, OpenCode, Cline, Zed y muchos más).

HabilidadParaQué hace
canvas-week-planEstudiantesPlanificador semanal: fechas límite, estado de envío, calificaciones, revisiones entre pares
canvas-morning-checkEducadoresPanel de salud del curso: tasas de envío, estudiantes con dificultades, fechas límite
canvas-bulk-gradingEducadoresÁrbol de decisión de calificación: individual → masiva → ejecución de código con comprobaciones de seguridad
canvas-peer-review-managerEducadoresPipeline completo de revisión entre pares: análisis, análisis de calidad, recordatorios, informes
canvas-discussion-facilitatorAmbosNavegación de debates, monitoreo de participación, respuestas, facilitación
canvas-course-qcDiseñadores de aprendizajeAuditoría de calidad previa al semestre: estructura, contenido, publicación, completitud
canvas-accessibility-auditorDiseñadores de aprendizajeEscaneo WCAG, informe priorizado, remediación guiada, verificación
canvas-course-builderDiseñadores de aprendizajeAndamiaje de cursos a partir de especificaciones, plantillas o cursos existentes

Instala una habilidad específica:

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

Comandos de barra de Claude Code

Si usas Claude Code, los mismos flujos de trabajo también están disponibles 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]

Las habilidades de Claude Code se encuentran en .claude/skills/ y se pueden personalizar para tu flujo de trabajo.

¿Quieres una habilidad personalizada? Envía una solicitud describiendo tu flujo de trabajo repetitivo.

🔒 Privacidad y protección de datos

Para educadores: manejo de datos consciente de FERPA

Canvas MCP proporciona controles de privacidad opcionales que pueden respaldar las obligaciones FERPA de una institución. El cumplimiento aún depende de tu implementación, configuración, política institucional y proveedor de IA:

  • Anonimización de respuestas convierte los campos de identidad admitidos en ID anónimos consistentes (Student_xxxxxxxx)
  • Enmascaramiento de correos electrónicos y filtrado de patrones de PII admitidos en publicaciones de debate y envíos
  • Implementación de servidor local con controles de privacidad configurables (ENABLE_DATA_ANONYMIZATION=true)
  • Análisis conscientes de la privacidad: pregunta "¿Qué estudiantes necesitan apoyo?" mientras reduces los datos de identidad devueltos al cliente de IA
  • Herramienta de mapeo de desanonimización para que el profesorado correlacione ID anónimos con estudiantes reales localmente

Cuando ENABLE_DATA_ANONYMIZATION=true está habilitado, los campos de identidad admitidos se anonimizan antes de que los resultados de la herramienta lleguen al cliente de IA. Revisa la Guía para educadores y los requisitos de tu institución antes de usar datos de estudiantes.

Para estudiantes: alcance de datos y privacidad

  • Acceso con ámbito de Canvas: las herramientas específicas para estudiantes usan los endpoints "self" de Canvas; las herramientas de contenido compartido del curso siguen los permisos que Canvas otorga a tu cuenta
  • Sin almacenamiento de credenciales en servidor compartido: el modo local lee tu token de Canvas desde tu propio .env. En implementaciones HTTP institucionales autenticadas, cada solicitud proporciona el token de Canvas del usuario y el servidor no lo almacena.
  • Sin análisis de productos integrados: Canvas MCP no agrega telemetría; Canvas y tu cliente de IA aún aplican sus propias políticas de registro y datos
  • Anonimización opcional: las herramientas para estudiantes están limitadas a tus propios datos de Canvas, pero la política de privacidad de tu cliente de IA aún aplica

Servidor alojado (retirado)

El servidor alojado público (mcp.illinihunt.org) ha sido retirado. Un endpoint MCP público sin puerta de acceso no es seguro de operar — expondría la herramienta integrada de ejecución de código — por lo que la ruta admitida es la instalación local a continuación.

El transporte HTTP/streamable en sí sigue siendo totalmente compatible para autoalojamiento detrás de tu propia autenticación (canvas-mcp-server --transport streamable-http). ¿Ejecutas una instancia compartida y autenticada para tu institución? Consulta deploy/azure/ para una especificación de implementación probada en producción (Azure App Service + autenticación de plataforma Entra ID, tokens de Canvas por usuario) con flujo de trabajo de muestra y plantillas de configuración.


Requisitos previos (instalación local)

  • Python 3.11+ — Requerido para funciones modernas y sugerencias de tipo
  • Acceso a la API de Canvas — Token de API y URL de la institución
  • Cliente MCP — Un cliente compatible con MCP (Claude Desktop, Cursor, Zed, Windsurf, Continue, etc.); la configuración y las capacidades varían según el cliente

Clientes MCP compatibles

Canvas MCP está diseñado para clientes compatibles con MCP, incluidos Claude Desktop, Codex, Cursor, Zed, Windsurf, Continue, Replit y Copilot Studio. Los detalles de configuración y las capacidades admitidas varían según el cliente.

Canvas MCP usa patrones documentados de la API de Canvas, como un encabezado User-Agent y paginación per_page. Está destinado a Canvas Cloud e instancias autoalojadas compatibles.

Instalar como extensión de Claude Desktop (lo más fácil)

Si usas Claude Desktop, puedes instalar Canvas MCP con un clic — sin terminal, sin editar archivos de configuración:

  1. Descarga canvas-mcp.mcpb desde la última versión.
  2. Haz doble clic en el archivo (o arrástralo a Claude Desktop → Configuración → Extensiones).
  3. Cuando se te solicite, ingresa tu URL de la API de Canvas — esto debe incluir la ruta /api/v1 (por ejemplo, https://canvas.youruniversity.edu/api/v1) — y tu token de la API de Canvas (Canvas → Cuenta → Configuración → Nuevo token de acceso — algunas instituciones lo emiten mediante un formulario de solicitud en su lugar, consulta abajo). El token se almacena en el llavero de tu sistema operativo.

La extensión ejecuta el servidor localmente y llama a Canvas con tu propio token, por lo que las solicitudes usan los permisos de Canvas de ese token. Canvas y tu cliente de IA pueden conservar sus propios registros de actividad. Requiere Python 3.11+ (el tiempo de ejecución incluido gestiona las dependencias automáticamente). Para otros clientes, o para ejecutar desde el código fuente, usa la configuración manual a continuación.

Instalación local

1. Instalar dependencias

# (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 el entorno

# Copy environment template
cp env.template .env

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

Obtén tu token de la API de Canvas desde: Canvas → Cuenta → Configuración → Nuevo token de acceso

Algunas instituciones restringen la creación de tokens. Cuando el autoservicio está deshabilitado, el botón "Nuevo token de acceso" no aparece o genera errores, y los tokens se emiten a través de un formulario de solicitud de TI. Consulta la base de conocimiento de TI de tu institución antes de concluir que el acceso a la API no está disponible para ti.

Universidad de Illinois Urbana-Champaign funciona así para todos — estudiantes e instructores por igual. Solicita un token con el Formulario de solicitud de token de Canvas API (se requiere inicio de sesión con NetID). Una vez aprobado:

  1. Ve a Canvas → Cuenta → Configuración → Integraciones aprobadas, encuentra el nuevo token, haz clic en Activar y actualiza la página.
  2. Recupera el valor del token desde el enlace de U of I Box que Technology Services te envía.

A partir de agosto de 2026, todos los tokens nuevos de Illinois tienen una caducidad de 30 días (un requisito de Instructure). La caducidad no se monitorea ni se anuncia, y los tokens caducados se eliminan sin previo aviso — solicita el reemplazo antes de que el actual expire. Detalles completos: Answers KB 150325.

Estudiantes de otras instituciones: si ves "Hay un límite en la cantidad de tokens de acceso que puedes crear" o no puedes encontrar la opción de creación de tokens, contacta al administrador de Canvas de tu institución o al departamento de soporte de TI para solicitar acceso a la API.

3. Configuración del cliente MCP

Canvas MCP está diseñado para clientes compatibles con MCP. A continuación se muestran ejemplos de configuración para clientes populares; la configuración exacta y las capacidades varían según el cliente:

Claude Desktop (Más popular)

Ubicación del archivo de configuración:

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

Configuración:

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

Nota: Usa la ruta absoluta a tu binario de virtualenv para evitar problemas con las entradas de PATH específicas del shell (por ejemplo, shims de pyenv).

Codex

Codex puede iniciar el servidor como un servidor MCP stdio local. Agrega esta entrada a ~/.codex/config.toml, reemplazando las rutas de ejemplo con rutas absolutas en tu máquina:

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

Configurar cwd al repositorio permite que el servidor encuentre el archivo .env creado anteriormente incluso cuando inicies Codex desde otro lugar. Alternativamente, registra el comando con la CLI de Codex:

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

El comando CLI no establece un directorio de trabajo persistente. Después de ejecutarlo, agrega la línea cwd a la tabla [mcp_servers.canvas-api] existente en ~/.codex/config.toml; no crees una segunda tabla con el mismo nombre.

Ejecuta codex mcp list para verificar el registro y luego reinicia Codex. En la TUI de Codex, /mcp muestra el servidor activo y sus herramientas.

Cursor

Ubicación del archivo de configuración:

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

Configuración:

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

Configuración: Agrega a settings.json de Zed (accesible a través del menú de Configuración)

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

Ubicación del archivo de configuración:

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

Configuración:

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

Configuración: Agrega a config.json de Continue (accesible a través de la configuración de Continue)

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

Para otros clientes compatibles con MCP, el patrón general es:

  1. Localiza el archivo de configuración MCP de tu cliente
  2. Agrega una entrada de servidor con:
    • Nombre del servidor: canvas-api (o cualquier nombre que prefieras)
    • Comando: Ruta completa al binario de canvas-mcp-server
    • Argumentos opcionales: Argumentos adicionales si es necesario

Consulta la documentación MCP de tu cliente para conocer el formato de configuración específico y las ubicaciones de archivos.

Usuarios de Windows: Reemplaza las barras diagonales con barras invertidas en las rutas (por ejemplo, C:\Users\YourName\canvas-mcp\.venv\Scripts\canvas-mcp-server.exe)

Verificación

Prueba tu configuración:

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

# View configuration
canvas-mcp-server --config

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

Herramientas disponibles

El servidor Canvas MCP proporciona un conjunto de herramientas para interactuar con la API de Canvas LMS. Estas herramientas están organizadas en categorías lógicas para una mejor descubribilidad y mantenibilidad.

Categorías de herramientas

Herramientas para estudiantes (¡Nuevo!)

  • Seguimiento personal de tareas y gestión de plazos
  • Monitoreo de calificaciones en todos los cursos
  • Lista de tareas pendientes y gestión de revisiones entre pares
  • Seguimiento del estado de envíos

Herramientas compartidas (Estudiantes y educadores)

  1. Herramientas de cursos - Listar y gestionar cursos, obtener información detallada, generar resúmenes con contenido del programa
  2. Herramientas de discusión y anuncios - Gestionar discusiones, anuncios y respuestas
  3. Herramientas de páginas y contenido - Acceder a páginas, módulos y contenido del curso

Herramientas para educadores 4. Herramientas de tareas - Manejar tareas, envíos y revisiones entre pares con análisis 5. Herramientas de rúbricas - Crear, actualizar de forma segura y listar rúbricas; asociarlas con tareas; y calificar envíos (incluyendo bulk_grade_submissions para calificación por lotes eficiente). update_rubric es un reemplazo completo protegido: conserva los IDs de criterios/calificaciones existentes, requiere una vista previa y confirmación, y verifica el resultado. Consulta comportamiento de la API de rúbricas y advertencias de calificación. 6. Herramientas de usuarios e inscripciones - Gestionar inscripciones, usuarios y grupos 7. Herramientas de análisis - Ver análisis de estudiantes, estadísticas de tareas y seguimiento de progreso 8. Herramientas de mensajería - Enviar mensajes y anuncios a los estudiantes

Herramientas para desarrolladores 9. Herramientas de descubrimiento - Buscar herramientas MCP registradas y operaciones de la API de ejecución de código con search_canvas_tools; listar módulos de ejecución de código con list_code_api_modules 10. Herramientas de ejecución de código - Ejecutar código TypeScript con execute_typescript para que el procesamiento masivo de elementos pueda mantenerse fuera del contexto del modelo

📖 Ver documentación completa de herramientas para obtener información detallada sobre las herramientas disponibles.

API de ejecución de código

Para operaciones masivas (30+ elementos), Canvas MCP admite la ejecución de código TypeScript. Procesa operaciones masivas localmente sin cargar cada elemento en el contexto del modelo.

EnfoqueMejor paraComportamiento del contexto
Herramientas MCPConsultas simples, conjuntos de datos pequeñosDevuelve resultados de herramientas al modelo
bulk_grade_submissionsCalificación por lotes de 10-29 elementosManeja un lote definido en una llamada de herramienta
execute_typescript30+ elementos, lógica personalizadaProcesa elementos localmente y devuelve salida seleccionada

Usa search_canvas_tools para descubrir operaciones disponibles, luego execute_typescript para ejecutarlas localmente. El sandbox predeterminado aplica controles de tiempo, memoria, entorno y red de mejor esfuerzo, pero no es un límite de seguridad completo; usa aislamiento externo más fuerte cuando se requiera código no confiable o control estricto de salida (consulta issue #157). Funciona en macOS, Linux y Windows.

Ejemplos de ejecución de código y detalles de seguridad

Ejemplo de calificación por lotes

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 seguridad

ModoConfiguraciónQué hace
Sandbox local (predeterminado)No se necesitaTiempo de espera 120s, memoria 512MB, entorno filtrado, controles de red de mejor esfuerzo
Sandbox de contenedorTS_SANDBOX_MODE=containerAislamiento del sistema de archivos del contenedor mediante Docker/Podman; las garantías de salida dependen de la configuración de implementación
Sin sandboxENABLE_TS_SANDBOX=falseAcceso local completo (no recomendado)

Consulta Ejemplo de calificación por lotes para un recorrido detallado.

Uso

Los clientes MCP inician el servidor automáticamente. Solo pregunta de forma natural:

  • "¿Qué vence esta semana?" / "Muestra mis calificaciones" / "¿Qué revisiones entre pares necesito?"
  • "¿Quién no ha enviado la Tarea 3?" / "Envía recordatorios a los estudiantes que faltan"

Guías de inicio rápido: Estudiante | Educador | Flujos de trabajo del mundo real | Solución de problemas

Documentación

Detalles técnicos

Construido sobre FastMCP con httpx asíncrono, validación pydantic y configuración python-dotenv. Diseño moderno de src/ con pyproject.toml, sugerencias de tipo en rutas principales, agrupación de conexiones, paginación y limitación de velocidad. Un conjunto de pruebas automatizado y ruff + black respaldan la calidad del código.

Solución de problemas

Si encuentras problemas:

  1. El servidor no se inicia - Verifica tu configuración de Instalación local: archivo .env, ruta del entorno virtual y dependencias
  2. Errores de autenticación - Verifica la validez de tu token de API de Canvas y los permisos
  3. Problemas de conexión - Verifica la corrección de la URL de la API de Canvas y el acceso a la red
  4. Depuración - Revisa los registros de la consola de tu cliente MCP (por ejemplo, la consola de desarrollador de Claude Desktop) o ejecuta el servidor manualmente para ver los errores

Seguridad

Controles de seguridad y privacidad en tiempo de ejecución:

CapaPredeterminado
Saneamiento de PII en registrosLOG_REDACT_PII=true
Validación de tokens al inicioSiempre activo
Registro de auditoría estructuradoOpt-in: LOG_ACCESS_EVENTS=true
Salvaguardas de ejecución de códigoENABLE_TS_SANDBOX=true (mejor esfuerzo en modo local)

Anonimización opcional para flujos de trabajo de educadores conscientes de FERPA: ENABLE_DATA_ANONYMIZATION=true. Consulta la Guía para educadores para conocer el alcance y los detalles de configuración.

Publicación

Publicado en PyPI, MCP Registry y skills.sh (habilidades de agente). Los lanzamientos se automatizan mediante GitHub Actions — etiqueta una versión (git tag vX.Y.Z && git push origin vX.Y.Z) y CI se encarga del resto.

Contribuciones

¡Las contribuciones son bienvenidas! Siéntete libre de:

  • Enviar problemas para errores o solicitudes de funciones
  • Crear solicitudes de extracción con mejoras
  • Compartir tus casos de uso y comentarios

Colaboradores

Gracias a todos los que han contribuido a Canvas MCP:

  • @DomBarker99 — Herramienta read_course_file para implementaciones MCP remotas (#90)
  • @Promithius-DR — Filtrado de herramientas basado en roles y anotaciones de herramientas (#84)
  • @Metzpapa — Herramientas de descarga y listado de archivos (#75)
  • @JCSnap — Correcciones de errores de herramientas para estudiantes (#72, #73)

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.


Creado por Vishal Sachdev