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
Servidor MCP de Canvas
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.mcpbdesde 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 installen un virtualenv, añade tu token a.envy apunta tu cliente al binariocanvas-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)
| Herramienta | Propósito | Ejemplo de Prompt |
|---|---|---|
get_my_upcoming_assignments | Fechas de entrega para los próximos N días | "¿Qué tengo que entregar esta semana?" |
get_my_todo_items | Lista de tareas de Canvas | "Muestra mi lista de tareas" |
get_my_submission_status | Enviado vs. faltante | "¿He enviado todo?" |
get_my_course_grades | Calificaciones actuales | "¿Cuáles son mis calificaciones?" |
get_my_peer_reviews_todo | Revisiones entre pares pendientes | "¿Qué revisiones entre pares necesito hacer?" |
Herramientas para Educadores (clic para expandir)
| Herramienta | Propósito | Ejemplo de Prompt |
|---|---|---|
list_assignments | Todas las tareas del curso | "Muestra las tareas en BADM 350" |
create_assignment | Crear nueva tarea | "Crea una tarea con fecha de entrega el 26 de enero con envío de texto en línea" |
update_assignment | Actualizar tarea existente | "Cambia la fecha de entrega de la Tarea 3 al 15 de febrero" |
list_submissions | Envíos de estudiantes | "¿Quién envió la Tarea 3?" |
bulk_grade_submissions | Calificar varios a la vez | "Califica a estos 10 estudiantes" |
get_assignment_analytics | Estadísticas de rendimiento | "Muestra análisis para el Cuestionario 2" |
send_conversation | Mensaje a estudiantes | "Mensaje a los estudiantes que no han enviado" |
create_announcement | Publicar anuncios | "Anuncia el cambio de fecha del examen" |
| Gestión de Módulos | ||
create_module | Crear módulo del curso | "Crea un módulo para la Semana 5" |
update_module | Actualizar configuración del módulo | "Renombra el módulo de mitad de período" |
add_module_item | Añadir contenido al módulo | "Añade la página del programa a la Semana 1" |
delete_module | Eliminar un módulo | "Elimina el módulo de prueba vacío" |
| Página y Contenido | ||
create_page | Crear página del curso | "Crea una página para horas de oficina" |
edit_page_content | Actualizar contenido de la página | "Actualiza la página del programa" |
update_page_settings | Publicar/despublicar páginas | "Publica todas las páginas de la Semana 3" |
bulk_update_pages | Operaciones de página por lotes | "Despublica todas las páginas en borrador" |
| Gestión de Archivos | ||
upload_course_file | Subir archivo local a Canvas | "Sube syllabus.pdf al curso" |
Herramientas Compartidas (clic para expandir)
| Herramienta | Propósito |
|---|---|
list_courses | Todos los cursos inscritos |
get_course_details | Información del curso + programa |
list_pages | Páginas del curso |
get_page_content | Leer contenido de la página |
list_modules | Listar módulos del curso |
list_module_items | Elementos dentro de un módulo |
list_discussion_topics | Foros de discusión |
list_discussion_entries | Publicaciones en una discusión |
post_discussion_entry | Añadir una publicación de discusión |
reply_to_discussion_entry | Responder a una publicación |
Herramientas para Diseñadores de Aprendizaje (diseño del curso y control de calidad)
| Herramienta | Propósito | Ejemplo de Prompt |
|---|---|---|
get_course_structure | Árbol completo de módulo→elementos como JSON | "Muéstrame la estructura de CS 101" |
scan_course_content_accessibility | Escáner de violaciones WCAG (20 comprobaciones: encabezados, tablas, enlaces, contraste, texto alternativo, subtítulos, DesignPLUS) | "Audita la accesibilidad de BADM 350" |
fetch_ufixit_report | Informe institucional de accesibilidad | "Obtén el informe UFIXIT para este curso" |
parse_ufixit_violations | Extraer violaciones estructuradas | "Analiza las violaciones de UFIXIT" |
format_accessibility_summary | Informe 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)
| Herramienta | Propósito | Cuándo Usar |
|---|---|---|
search_canvas_tools | Descubrir herramientas MCP y operaciones de la API de código | Encontrar herramientas disponibles y operaciones masivas |
execute_typescript | Ejecutar TypeScript localmente | Má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_TOOLSa las herramientas de escritura que tu implementación necesita, oall(la ejecución de código debe nombrarse por separado). Los servidores stdio locales no cambian a menos que lo configures send_conversationsiempre 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 tokenget_conversation_detailsnunca marca una conversación como leída;auto_mark_readse elimina → elimina el argumento y usamark_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=Falsepara obtener el contenido en la respuesta;extract_peer_review_datasetguarda 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 llevanschema_version: 2con secciones etiquetadasmcp_tools/code_execution_api; la antigua clave planatoolsha 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_todoganó 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_announcementfalla 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,.mcpbincluye 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
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
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).
| Habilidad | Para | Qué hace |
|---|---|---|
canvas-week-plan | Estudiantes | Planificador semanal: fechas límite, estado de envío, calificaciones, revisiones entre pares |
canvas-morning-check | Educadores | Panel de salud del curso: tasas de envío, estudiantes con dificultades, fechas límite |
canvas-bulk-grading | Educadores | Árbol de decisión de calificación: individual → masiva → ejecución de código con comprobaciones de seguridad |
canvas-peer-review-manager | Educadores | Pipeline completo de revisión entre pares: análisis, análisis de calidad, recordatorios, informes |
canvas-discussion-facilitator | Ambos | Navegación de debates, monitoreo de participación, respuestas, facilitación |
canvas-course-qc | Diseñadores de aprendizaje | Auditoría de calidad previa al semestre: estructura, contenido, publicación, completitud |
canvas-accessibility-auditor | Diseñadores de aprendizaje | Escaneo WCAG, informe priorizado, remediación guiada, verificación |
canvas-course-builder | Diseñadores de aprendizaje | Andamiaje 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:
- Descarga
canvas-mcp.mcpbdesde la última versión. - Haz doble clic en el archivo (o arrástralo a Claude Desktop → Configuración → Extensiones).
- 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:
- Ve a Canvas → Cuenta → Configuración → Integraciones aprobadas, encuentra el nuevo token, haz clic en Activar y actualiza la página.
- 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:
- Localiza el archivo de configuración MCP de tu cliente
- 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
- Nombre del servidor:
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)
- Herramientas de cursos - Listar y gestionar cursos, obtener información detallada, generar resúmenes con contenido del programa
- Herramientas de discusión y anuncios - Gestionar discusiones, anuncios y respuestas
- 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.
| Enfoque | Mejor para | Comportamiento del contexto |
|---|---|---|
| Herramientas MCP | Consultas simples, conjuntos de datos pequeños | Devuelve resultados de herramientas al modelo |
bulk_grade_submissions | Calificación por lotes de 10-29 elementos | Maneja un lote definido en una llamada de herramienta |
execute_typescript | 30+ elementos, lógica personalizada | Procesa 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
| Modo | Configuración | Qué hace |
|---|---|---|
| Sandbox local (predeterminado) | No se necesita | Tiempo de espera 120s, memoria 512MB, entorno filtrado, controles de red de mejor esfuerzo |
| Sandbox de contenedor | TS_SANDBOX_MODE=container | Aislamiento del sistema de archivos del contenedor mediante Docker/Podman; las garantías de salida dependen de la configuración de implementación |
| Sin sandbox | ENABLE_TS_SANDBOX=false | Acceso 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
- Documentación de herramientas — Referencia de las herramientas disponibles, incluyendo herramientas opcionales con funciones restringidas
- Guía para estudiantes — Primeros pasos como estudiante
- Guía para educadores — Consideraciones de FERPA y flujos de trabajo para educadores
- Ejemplo de calificación por lotes — Recorrido de calificación por lotes
- Guía de desarrollo — Arquitectura y contribuciones
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:
- El servidor no se inicia - Verifica tu configuración de Instalación local: archivo
.env, ruta del entorno virtual y dependencias - Errores de autenticación - Verifica la validez de tu token de API de Canvas y los permisos
- Problemas de conexión - Verifica la corrección de la URL de la API de Canvas y el acceso a la red
- 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:
| Capa | Predeterminado |
|---|---|
| Saneamiento de PII en registros | LOG_REDACT_PII=true |
| Validación de tokens al inicio | Siempre activo |
| Registro de auditoría estructurado | Opt-in: LOG_ACCESS_EVENTS=true |
| Salvaguardas de ejecución de código | ENABLE_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_filepara 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