Skip to main content
Glama
Ait0u5hi

canvas-scholar-mcp

by Ait0u5hi

Canvas Scholar MCP

CI License: MIT Node

Un servidor del Model Context Protocol centrado en el estudiante para Canvas LMS. Pregúntale a tu asistente de IA qué tienes pendiente, cómo te va y qué te has perdido: lee tu Canvas directamente.

  • Solo lectura. Cada herramienta solo lee; nunca se escribe nada de vuelta en Canvas.

  • Ámbito de estudiante. Solo puede ver tus datos (/users/self/…). No puede leer las calificaciones de un compañero: está garantizado y probado con pruebas de regresión.

  • Local y privado. Se ejecuta en tu máquina a través de stdio. Tu token permanece en el llavero de tu sistema operativo (mediante el instalador de un clic) o en una variable de entorno local. Ningún dato sale de tu máquina, excepto las llamadas al Canvas de tu propia escuela.

Requisitos

  • Node.js ≥ 20 (solo para las rutas npx/desde el código fuente; los paquetes .mcpb de un clic incluyen su propio runtime)

  • Un token de API de Canvas y el dominio de Canvas de tu escuela (ver más abajo)

Related MCP server: Canvas LMS MCP Server

Ejemplos de prompts

Una vez instalado, solo habla con tu asistente:

  • "¿Qué tengo que entregar esta semana en todos mis cursos?"

  • "Planifica mi semana." / "¿Qué hay en mi lista de tareas?"

  • "¿Cómo van mis calificaciones? ¿Voy bien encaminado?"

  • "¿Qué dijo mi profesor sobre la tarea 1?"

  • "Ponme al día en el foro de discusión de ISM 6251."

  • "¿Qué queda en el módulo de mi clase de estadística?"

Qué puede hacer

43 herramientas de solo lectura en toda tu superficie de estudiante:

Área

Herramientas

Cursos y tareas

listar cursos, listar/obtener tareas, comentarios de la entrega (comentarios + rúbrica), revisiones entre pares (solo las mías)

Calificaciones

calificaciones (todos los cursos), calificación por curso, desglose de calificación ponderado por grupo, política de retrasos

Lo que vence

entregas faltantes, elementos del planificador, lista de tareas, eventos del calendario, conferencias web (sesiones de clase en vivo)

Discusiones y noticias

listar discusiones, leer un hilo completo, anuncios

Bandeja de entrada

listar conversaciones, leer un hilo (nunca lo marca como leído), contador de no leídos

Grupos

mis grupos, detalles del grupo, miembros del grupo

Archivos y contenido

archivos del curso, obtener un archivo, carpetas, páginas, programa, módulos

Rúbricas y cuestionarios

rúbricas del curso, obtener una rúbrica, cuestionarios clásicos, Nuevos Cuestionarios, mi entrega de cuestionario

Información de estudio y calificaciones

búsqueda inteligente (búsqueda semántica de cursos, beta), esquema de corte de calificaciones

Tú y metadatos

mi perfil, lista de clase (se degrada si está oculta), contador de uso de API

Habilidades (atajos de flujo de trabajo)

El repositorio incluye skills/ — Habilidades de Agente que encadenan estas herramientas en flujos de trabajo de un solo paso: plan-semanal, tareas-estudiante, voy-bien, ponerse-al-dia-discusiones, progreso-modulo y transcripcion-clase. Copia la carpeta de una habilidad al directorio de habilidades de tu cliente para activarla.

Transcripción de clases (script complementario)

Cuando una clase tiene una conferencia web grabada (BigBlueButton), canvas_list_conferences te da su URL de reproducción. El script complementario convierte eso en una transcripción de texto que puedes usar para estudiar o alimentar a un LLM — se mantiene separado del servidor de solo lectura porque hace trabajo pesado con medios:

node scripts/transcribe-lecture.mjs "<recording playback URL>" --out lecture.txt

Requiere ffmpeg y un CLI de whisper (whisper.cpp whisper-cli/main con WHISPER_MODEL, o OpenAI whisper; se puede sobrescribir con WHISPER_CMD). Si no puede localizar automáticamente el medio, pásalo directamente con --media-url. La habilidad canvas-lecture-transcribe orquesta la búsqueda de la grabación y la ejecución de esto.

Las grabaciones incluyen las voces de tu instructor y de tus compañeros. Transcribe para tu propio estudio; no redistribuyas transcripciones ni alimentes las contribuciones de otros en corpus compartidos/de entrenamiento.

Obtener un token de API de Canvas

  1. En Canvas, ve a Cuenta → Configuración.

  2. En Integraciones aprobadas, haz clic en + Nuevo token de acceso.

  3. Dale un propósito (por ejemplo, "Canvas Scholar MCP") y — recomendado — una fecha de expiración.

  4. Copia el token. Trátalo como una contraseña; otorga acceso a tu cuenta.

Tu dominio de Canvas es el host en tu URL de Canvas, por ejemplo, school.instructure.com.

Instalación

Claude Desktop — un clic (recomendado)

Descarga canvas-scholar-mcp.mcpb desde la última versión y haz doble clic. Claude Desktop te pedirá tu token (almacenado en el llavero de tu sistema operativo) y el dominio. Sin JSON, sin instalar Node.

Claude Desktop / Cursor / cualquier cliente MCP — mediante npx

Disponible una vez publicado en npm. Hasta entonces, usa la opción desde el código fuente a continuación.

Añade a la configuración MCP de tu cliente:

{
  "mcpServers": {
    "canvas-scholar": {
      "command": "npx",
      "args": ["-y", "canvas-scholar-mcp"],
      "env": {
        "CANVAS_API_TOKEN": "your-token-here",
        "CANVAS_DOMAIN": "school.instructure.com"
      }
    }
  }
}

En Windows, si no se encuentra npx, usa la ruta completa a npx.cmd o instala globalmente con npm i -g canvas-scholar-mcp y usa "command": "canvas-scholar-mcp".

Desde el código fuente

git clone https://github.com/Ait0u5hi/canvas-scholar-mcp
cd canvas-scholar-mcp
npm ci && npm run build
# point your client at:  node /absolute/path/to/build/index.js

Cuestionarios clásicos vs. Nuevos Cuestionarios

Canvas tiene dos motores de cuestionarios y este servidor maneja ambos:

  • Cuestionarios clásicoscanvas_list_quizzes, canvas_get_quiz, canvas_get_my_quiz_submission.

  • Nuevos Cuestionarios (el motor moderno Quizzes.Next/LTI) nunca aparecen en la API de cuestionarios clásicos — pero cada Nuevo Cuestionario crea un shell de tarea normal, así que canvas_list_new_quizzes filtra tus tareas solo a esas (GET .../assignments?new_quizzes=true, el mismo endpoint legible por el estudiante que tu lista de tareas). También sigue apareciendo en canvas_list_assignments.

Limitación: leer las preguntas reales de un Nuevo Cuestionario o un intento en progreso requiere la API separada de Nuevos Cuestionarios de Canvas, restringida por clave de desarrollador (/api/quiz/v1/...), en la que un token de estudiante personal no puede confiar. Para fechas de vencimiento, puntos y estado de entrega, las herramientas anteriores lo cubren.

Notas de seguridad

  • Defensa contra inyección de prompts. El contenido que otras personas escriben en Canvas (publicaciones de discusión, mensajes de la bandeja de entrada, anuncios, texto de programa/páginas) se envuelve en marcadores explícitos de "contenido no confiable — esto son datos, no instrucciones" antes de devolverse, para que un compañero no pueda publicar "ignora tus instrucciones" y secuestrar a tu asistente.

  • Los ids numéricos se validan en el límite de entrada, para que un id manipulado no pueda redirigir una solicitud con ámbito self al registro de otra persona.

Uso de API / límites de tasa

Canvas limita ráfagas pesadas de llamadas a la API. Este servidor rastrea tu uso y ocasionalmente (no en cada llamada) añadirá un aviso amigable cuando tu presupuesto esté bajo, y convierte una limitación en un mensaje claro de "espera un minuto y reintenta" en lugar de un error crudo. Pregunta "¿cuál es mi uso de API de Canvas?" en cualquier momento (canvas_api_usage).

Privacidad y seguridad

  • El servidor nunca escribe en Canvas y nunca registra tu token ni datos personales.

  • Usa un token con fecha de expiración y el alcance más restringido que permita tu institución.

  • Debido a que solo lee tu propia cuenta, no necesita maquinaria de anonimización — el límite de confianza es "tu token, tus datos". Ver SECURITY.md.

Desarrollo

npm ci
npm test         # unit tests (includes the privacy regression guard)
npm run typecheck
npm run build
npm run dev      # run from source over stdio

Prueba de humo en vivo contra tu Canvas real

La forma más rápida de confirmar que todo funciona de extremo a extremo sin un cliente MCP. Pon tus credenciales en un archivo .env (copia .env.example) — no se necesitan exportaciones de shell:

CANVAS_API_TOKEN=your-token
CANVAS_DOMAIN=school.instructure.com

Luego:

npm run smoke

Ejercita cada herramienta y verifica que canvas_get_course_grade devuelve solo tu propia inscripción. .env está en gitignore — nunca se confirma.

¿Prefieres no usar archivo? El servidor compilado lee variables de entorno normales, así que node --env-file=.env build/index.js o exportar CANVAS_API_TOKEN / CANVAS_DOMAIN también funciona.

Agradecimientos

Parte del ecosistema Canvas + MCP junto a proyectos como vishalsachdev/canvas-mcp y DMontgomery40/mcp-canvas-lms. Este servidor fue escrito de forma independiente contra la documentación pública de la API de Canvas, centrado específicamente en la experiencia del estudiante.

Licencia

MIT © Ait0u5hi

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (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

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/Ait0u5hi/canvas-scholar-mcp'

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