Skip to main content
Glama

canvas-student-mcp

El servidor MCP para Canvas LMS que funciona incluso cuando tu escuela deshabilita los tokens de API.

CI Licencia: MIT Node >= 18 TypeScript

Brinda a Claude (o cualquier cliente MCP) acceso en vivo, solo lectura a tu cuenta de Canvas: cursos, temario, tareas con estado de entrega, calificaciones, anuncios, módulos, páginas, archivos, discusiones, exámenes, tareas pendientes y calendario. Combínalo con un conector de Notion y archiva un curso completo con un solo prompt.

¿Por qué otro Canvas MCP?

Ya existen varios servidores MCP para Canvas muy buenos — vishalsachdev/canvas-mcp, DMontgomery40/mcp-canvas-lms, mtgibbs/canvas-lms-mcp, y otros. Todos requieren un token de API personal.

Aquí está el problema: muchas universidades deshabilitan la generación de tokens de autoservicio para los estudiantes. Abre Cuenta → Configuración y simplemente no hay ningún botón + Nuevo token de acceso. En esas escuelas, cada servidor basado en tokens es un callejón sin salida.

Este servidor soluciona eso con autenticación mediante cookie de sesión: inicia sesión en Canvas en tu navegador, copia la cookie de sesión una vez y estás conectado. La interfaz web de Canvas se comunica con la misma API REST /api/v1 con esa cookie, por lo que ninguna política administrativa puede bloquearla sin romper Canvas mismo.

Lo que esto requiere internamente (y lo que los servidores basados en tokens no hacen):

  • Eliminación del guardia XSSI — las respuestas de Canvas autenticadas con cookie tienen el prefijo while(1);, lo que rompe el análisis JSON ingenuo

  • Detección de redirección de inicio de sesión — las sesiones caducadas redirigen a la página de inicio de sesión en lugar de devolver un 401; el servidor detecta redirecciones y cuerpos no JSON y te dice exactamente cómo actualizar, en lugar de fallar de manera críptica

  • Descargas de archivos autenticadas — las sesiones con token obtienen un parámetro verifier= que hace que las URLs de los archivos sean autoautenticantes; las sesiones con cookie no, por lo que las descargas deben llevar la cookie de sesión (Canvas responde 500 de lo contrario). Las redirecciones se siguen manualmente para que las credenciales nunca se reenvíen a una CDN

  • Errores conscientes de la caducidad — cada modo de fallo explica la solución en el propio mensaje de error

Principios de diseño que lo diferencian más allá de la autenticación:

  • Solo lectura por diseño. Cada herramienta es un GET. El servidor no puede físicamente entregar tareas, publicar discusiones o modificar nada — seguro para entregar a un agente autónomo.

  • Respuestas eficientes en contexto. Las cargas útiles de la API de Canvas son enormes; cada herramienta recorta los campos que un LLM realmente necesita, convierte HTML a texto limpio (preservando las URLs de los enlaces) y limita la paginación con avisos explícitos de truncamiento.

  • Pequeño y auditable. TypeScript estricto, tres dependencias de ejecución (el SDK de MCP, zod y unpdf para texto PDF). Puedes leerlo todo antes de confiarle tu cuenta escolar.

La autenticación por token aún es compatible si tu escuela lo permite — la cookie es la alternativa, no el único camino.

Related MCP server: canvas-parent-mcp

Herramientas (29)

Herramienta

Qué hace

canvas_get_profile

Verificar credenciales / quién soy

canvas_list_courses

Cursos con calificación actual (activos / completados / todos)

canvas_get_course

Detalles del curso + programa completo como texto

canvas_list_assignments

Tareas por fecha de entrega con tu estado de entrega; filtros de categoría (próximas, vencidas, …)

canvas_get_assignment

Descripción completa, rúbrica, tu entrega + puntuación

canvas_get_grades

Resumen de calificaciones de todos los cursos, o desglose por tarea para un curso

canvas_list_announcements

Anuncios en cursos activos, o en un curso / rango de fechas

canvas_list_modules

Esquema del contenido del curso con elementos

canvas_list_pages / canvas_get_page

Páginas wiki del curso, texto completo

canvas_list_files / canvas_get_file_link

Archivos del curso + URLs de descarga temporales

canvas_list_discussions / canvas_get_discussion

Temas de discusión e hilos completos

canvas_list_quizzes

Exámenes con fechas de entrega, límites de tiempo, intentos

canvas_list_todo / canvas_list_upcoming

Tu lista de tareas pendientes y próximas fechas límite

canvas_list_calendar_events

Eventos o fechas límite de tareas en un rango de fechas

canvas_list_inbox / canvas_get_conversation

Leer hilos de la bandeja de entrada de Canvas — sin marcarlos como leídos

canvas_get_feedback

Comentarios del calificador y evaluaciones de rúbrica en tus entregas

canvas_grade_breakdown

Calificación por grupo de tareas + calculadora de qué pasaría si: "¿qué necesito en el final para una A?"

canvas_list_planner

Feed del planificador con indicadores de nueva actividad y estado de entrega

canvas_read_file

Extraer texto de archivos del curso — PDF, Word, PowerPoint, Excel, HTML, texto plano

canvas_read_syllabus

Programa como texto, ya sea escrito en Canvas o publicado como archivo PDF/Word adjunto

canvas_list_groups

Tus membresías de grupo

canvas_get_module_progress

Estado de finalización del módulo y qué requiere cada elemento todavía

canvas_list_peer_reviews

Revisiones entre pares asignadas a ti

canvas_export_course

Exportación única a markdown de un curso completo — diseñado para archivado en Notion

canvas_auth_status

Diagnosticar la conexión: qué credencial, dónde está almacenada, ¿sigue siendo válida?

Tres de estas merecen mención especial.

canvas_read_file convierte los materiales del curso en texto legible, que es lo que hace que "examíname sobre las diapositivas de esta semana" o "¿cuál es la política de trabajos tardíos?" realmente funcionen. Los PDFs pasan por unpdf; los formatos de Office se manejan en el repositorio — .docx, .pptx y .xlsx son contenedores ZIP de XML, por lo que un pequeño lector ZIP sobre el zlib integrado de Node cubre los tres sin dependencias. canvas_read_syllabus se basa en esto: detecta cuando un programa es solo un enlace a un archivo y lee el adjunto, que es el caso común (2 de los 3 cursos probados). canvas_grade_breakdown implementa ambos modelos de calificación de Canvas (ponderado por grupo y puntos totales), verifica su aritmética contra la puntuación que Canvas mismo reporta, y te dice cuándo las reglas de eliminación o los grupos de tareas no publicados hacen que una proyección no sea confiable — en lugar de devolver silenciosamente un número incorrecto con confianza. canvas_get_conversation pasa auto_mark_as_read=false, por lo que un agente que lee tu bandeja de entrada no marca tus mensajes como leídos silenciosamente; ese comportamiento se verifica contra un hilo no leído real, no solo se asume.

Consulta ROADMAP.md para ver lo que está planeado a continuación y por qué las escrituras están deliberadamente fuera del alcance.

Inicio rápido

No se necesita instalación — npx lo obtiene bajo demanda:

npx canvas-student-mcp

O desde el código fuente:

git clone https://github.com/xmike04/canvas-student-mcp.git
cd canvas-student-mcp
npm install && npm run build

Obtener credenciales

Opción A — Token de API (si tu escuela lo permite): Canvas → Cuenta → Configuración → Integraciones aprobadas → + Nuevo token de acceso.

Opción B — Cookie de sesión (para escuelas bloqueadas):

  1. Inicia sesión en el Canvas de tu escuela en cualquier navegador

  2. DevTools (Cmd/Ctrl+Shift+I) → pestaña Red → recarga

  3. Haz clic en cualquier solicitud a tu dominio de Canvas → Encabezados de solicitud → copia el valor completo de cookie: (o solo el par canvas_session=... — esa única cookie es suficiente)

Cualquier credencial otorga acceso de lectura a tu cuenta de Canvas. Trátala como una contraseña.

Almacenar la credencial (macOS: usa el Llavero)

Las configuraciones de clientes MCP son JSON de texto plano. En macOS puedes mantener la credencial fuera de ellas por completo:

security add-generic-password -s canvas-student-mcp -a cookie -w 'canvas_session=PASTE_VALUE_HERE' -U

Usa -a token en lugar de -a cookie para un token de API. El servidor primero verifica las variables de entorno, luego el Llavero, por lo que esto es opcional y nada se rompe si lo omites. CANVAS_NO_KEYCHAIN=1 deshabilita la búsqueda.

Registrar con Claude

Claude Code — con la credencial en el Llavero, la configuración no contiene ningún secreto:

claude mcp add canvas --scope user \
  --env CANVAS_BASE_URL=https://yourschool.instructure.com \
  -- npx -y canvas-student-mcp

Pasar la credencial en línea en lugar de usar el Llavero:

claude mcp add canvas --scope user \
  --env 'CANVAS_COOKIE=canvas_session=PASTE_VALUE_HERE' \
  --env CANVAS_BASE_URL=https://yourschool.instructure.com \
  -- npx -y canvas-student-mcp

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "canvas": {
      "command": "node",
      "args": ["/absolute/path/to/canvas-student-mcp/dist/index.js"],
      "env": {
        "CANVAS_COOKIE": "canvas_session=PASTE_VALUE_HERE",
        "CANVAS_BASE_URL": "https://yourschool.instructure.com"
      }
    }
  }
}

Usa CANVAS_API_TOKEN en lugar de CANVAS_COOKIE para autenticación por token (el token gana si ambos están configurados). Verifica con: "revisa mi perfil de Canvas."

Cuando la cookie caduque (tu sesión del navegador termine), cada herramienta te lo dirá claramente — vuelve a copiar y actualiza la configuración. Con "permanecer conectado" marcado, las sesiones suelen durar semanas.

Habilidades del agente

Tres flujos de trabajo empaquetados se envían en skills/. Copia cualquiera de ellos en ~/.claude/skills/ (o en el .claude/skills/ de tu proyecto) y Claude los usará automáticamente cuando la solicitud se ajuste:

Habilidad

Qué hace

canvas-morning-check

Resumen diario: qué vence, nuevos anuncios, mensajes no leídos, nuevas notas

canvas-week-plan

Lee las tareas reales y construye un plan día a día para la semana

canvas-grade-check

Estado de las notas más respuestas de qué pasaría si, con las advertencias incluidas

cp -R skills/canvas-morning-check ~/.claude/skills/

Cosas para preguntar una vez conectado

  • "¿Qué tengo que entregar en las próximas dos semanas en todas mis clases?"

  • "¿Cuál es mi calificación actual en cada curso y qué tareas me faltan?"

  • "Resume los anuncios de esta semana de todos mis cursos."

  • "Exporta mi curso de BIOL 1710 y archívalo en mi carpeta de Escuela de Notion." (con un conector de Notion)

  • "Lee la página de la Semana 3 en mi curso de historia y examíname sobre ella."

Notas de arquitectura

  • Transporte stdio, sin estado — un proceso por sesión de cliente, sin puertos, sin telemetría, sin almacenamiento. Los datos fluyen Canvas → este proceso → tu cliente MCP, a ningún otro lugar.

  • Paginación automática sigue los encabezados Link: rel="next" de Canvas, limitada a 5 páginas × 100 elementos con avisos explícitos de truncamiento para que el contexto del agente se mantenga acotado.

  • Conversión de HTML a texto para programas, descripciones, anuncios y páginas — las etiquetas estructurales se convierten en saltos de línea/viñetas, los enlaces se convierten en texto (url).

  • Esquemas de entrada Zod en cada herramienta; anotaciones MCP (readOnlyHint) declaradas en todo el código.

Desarrollo

npm run build   # strict TypeScript compile
npm test        # smoke test: MCP handshake, all 30 tools register, error paths

La prueba de humo se ejecuta completamente sin conexión — CI no necesita una cuenta de Canvas, y establece CANVAS_NO_KEYCHAIN=1 para que una credencial real almacenada no pueda filtrarse en una ejecución de prueba.

Publicación

La publicación se ejecuta desde CI (.github/workflows/release.yml), por lo que nadie publica desde un portátil:

npm version minor && git push --follow-tags

Empujar la etiqueta desencadena una compilación, el conjunto completo de pruebas, una inspección del contenido del paquete y una comprobación de que la etiqueta coincide con package.json — luego publica con procedencia, que vincula criptográficamente el tarball publicado con el commit y el flujo de trabajo que lo creó. Ejecutar el flujo de trabajo manualmente desde la pestaña Acciones hace todo excepto publicar, como una ejecución en seco.

Modelo de seguridad

  • Solo lectura: cada llamada a Canvas es un GET; ninguna herramienta puede escribir en Canvas. Incluso leer tu bandeja de entrada deja los mensajes sin leer.

  • Las credenciales residen en la configuración de entorno de tu cliente MCP o en el Llavero de macOS — nunca en el disco en este repositorio, nunca se transmiten a ningún otro lugar que no sea el dominio de Canvas de tu escuela. Las descargas de archivos siguen las redirecciones manualmente para que las credenciales nunca se reenvíen a un CDN.

  • Rota a voluntad: cierra sesión en Canvas (o revoca el token) y la credencial queda inactiva en todas partes.

  • canvas_auth_status te indica qué credencial está en uso, dónde está almacenada y si sigue funcionando.

Licencia

MIT

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • Read-only MCP server for ClassQuill, a tutoring-business-management platform.

  • Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.

  • MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2

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/xmike04/canvas-student-mcp'

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