canvas-student-mcp
canvas-student-mcp
El servidor MCP para Canvas LMS que funciona incluso cuando tu escuela deshabilita los tokens de API.
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 ingenuoDetecció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 responde500de lo contrario). Las redirecciones se siguen manualmente para que las credenciales nunca se reenvíen a una CDNErrores 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
unpdfpara 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 |
| Verificar credenciales / quién soy |
| Cursos con calificación actual (activos / completados / todos) |
| Detalles del curso + programa completo como texto |
| Tareas por fecha de entrega con tu estado de entrega; filtros de categoría (próximas, vencidas, …) |
| Descripción completa, rúbrica, tu entrega + puntuación |
| Resumen de calificaciones de todos los cursos, o desglose por tarea para un curso |
| Anuncios en cursos activos, o en un curso / rango de fechas |
| Esquema del contenido del curso con elementos |
| Páginas wiki del curso, texto completo |
| Archivos del curso + URLs de descarga temporales |
| Temas de discusión e hilos completos |
| Exámenes con fechas de entrega, límites de tiempo, intentos |
| Tu lista de tareas pendientes y próximas fechas límite |
| Eventos o fechas límite de tareas en un rango de fechas |
| Leer hilos de la bandeja de entrada de Canvas — sin marcarlos como leídos |
| Comentarios del calificador y evaluaciones de rúbrica en tus entregas |
| Calificación por grupo de tareas + calculadora de qué pasaría si: "¿qué necesito en el final para una A?" |
| Feed del planificador con indicadores de nueva actividad y estado de entrega |
| Extraer texto de archivos del curso — PDF, Word, PowerPoint, Excel, HTML, texto plano |
| Programa como texto, ya sea escrito en Canvas o publicado como archivo PDF/Word adjunto |
| Tus membresías de grupo |
| Estado de finalización del módulo y qué requiere cada elemento todavía |
| Revisiones entre pares asignadas a ti |
| Exportación única a markdown de un curso completo — diseñado para archivado en Notion |
| 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-mcpO desde el código fuente:
git clone https://github.com/xmike04/canvas-student-mcp.git
cd canvas-student-mcp
npm install && npm run buildObtener 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):
Inicia sesión en el Canvas de tu escuela en cualquier navegador
DevTools (
Cmd/Ctrl+Shift+I) → pestaña Red → recargaHaz clic en cualquier solicitud a tu dominio de Canvas → Encabezados de solicitud → copia el valor completo de
cookie:(o solo el parcanvas_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' -UUsa -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-mcpPasar 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-mcpClaude 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 |
| Resumen diario: qué vence, nuevos anuncios, mensajes no leídos, nuevas notas |
| Lee las tareas reales y construye un plan día a día para la semana |
| 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 pathsLa 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-tagsEmpujar 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_statuste indica qué credencial está en uso, dónde está almacenada y si sigue funcionando.
Licencia
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
- Alicense-qualityCmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.59MIT
- AlicenseAqualityAmaintenanceMCP server for Canvas LMS enabling parent observers and students to access courses, assignments, grades, and more. Supports multiple authentication methods including token, OAuth, and a convenient fetchproxy fallback.18662MIT
- Alicense-qualityDmaintenanceMCP server that provides tools to read UBC Canvas LMS data, including courses, assignments, announcements, submissions, and calendar, for use with Claude Desktop, Claude Code, or n8n AI agents.59MIT
- Alicense-qualityDmaintenanceMCP server for Canvas LMS with automatic OAuth authentication. Enables interaction with courses, assignments, grades, modules, discussions, quizzes, files, calendar, messaging, and more without manual API token management.330MIT
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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