Canvas LMS
Conecta herramientas de IA con los paneles escolares de Canvas.
Documentación
Servidor MCP de Canvas API
Conecta Claude a tu Canvas LMS. Haz preguntas naturales como "¿Qué tareas tengo que entregar esta semana?" o "¿Cuál es mi calificación actual en Biología?" y obtén respuestas reales directamente desde tu cuenta de Canvas.
Funciona con Claude Desktop y Claude Code (la CLI).
Instalación rápida
Requiere: Node.js 18+, Git y un token de acceso personal de Canvas (cómo obtener uno)
git clone https://github.com/Kdude43ver/Canvas-API-MCP.git
cd Canvas-API-MCP
bash install.sh
El script de instalación:
- Instalará las dependencias y compilará el proyecto
- Preguntará por tu URL de Canvas y token de API
- Agregará el servidor a Claude Code y/o Claude Desktop automáticamente
Configuración manual
1. Obtén tu token de API de Canvas
- Inicia sesión en tu instancia de Canvas (p. ej.
https://yourschool.instructure.com) - Haz clic en tu foto de perfil → Cuenta → Configuración
- Desplázate hasta Integraciones aprobadas
- Haz clic en + Nuevo token de acceso
- Ponle un nombre (p. ej.
Claude MCP) y haz clic en Generar token - Copia el token ahora — Canvas no lo volverá a mostrar
2. Clona y compila
git clone https://github.com/Kdude43ver/Canvas-API-MCP.git
cd Canvas-API-MCP
npm install
npm run build
3. Crea tu archivo .env
cp .env.example .env
Edita .env:
CANVAS_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com
4. Agrégalo a Claude Code
claude mcp add canvas \
-e CANVAS_TOKEN=your_token_here \
-e CANVAS_BASE_URL=https://yourschool.instructure.com \
-- node /absolute/path/to/Canvas-API-MCP/dist/index.js
Reemplaza /absolute/path/to/Canvas-API-MCP con la ruta real (ejecuta pwd dentro del repositorio para obtenerla).
5. Agrégalo a Claude Desktop
Edita ~/.config/claude/claude_desktop_config.json en Linux/Mac, o %APPDATA%\Claude\claude_desktop_config.json en Windows. Crea el archivo si no existe.
{
"mcpServers": {
"canvas": {
"command": "node",
"args": ["/absolute/path/to/Canvas-API-MCP/dist/index.js"],
"env": {
"CANVAS_TOKEN": "your_token_here",
"CANVAS_BASE_URL": "https://yourschool.instructure.com"
}
}
}
}
Reinicia Claude Desktop después de guardar. Deberías ver un ícono de martillo en la interfaz de chat que indica que las herramientas están disponibles.
Herramientas disponibles
| Herramienta | Qué hace |
|---|---|
list_courses | Lista todos tus cursos activos |
get_course | Detalles completos de un curso (incluido el programa) |
list_assignments | Todas las tareas de un curso con fechas de entrega y valores en puntos |
get_assignment | Detalles completos de la tarea, incluida la descripción |
list_upcoming_assignments | Tareas que vencen en los próximos N días en todos tus cursos |
get_grades | Tu calificación actual y final de un curso |
list_submissions | Estado de entrega de cada tarea en un curso |
list_announcements | Anuncios recientes de un curso |
list_discussions | Temas de discusión de un curso |
list_calendar_events | Próximos eventos y fechas de entrega en un rango de fechas |
list_files | Archivos disponibles en un curso con enlaces de descarga |
Ejemplos de prompts
Una vez instalado, intenta preguntarle a Claude:
- "¿Qué tareas tengo que entregar en los próximos 3 días?"
- "Lista todos mis cursos de este semestre."
- "¿Cuál es mi calificación actual en cada clase?"
- "¿Hay algún anuncio en mi clase de informática?"
- "Muéstrame los temas de discusión del curso 12345."
- "¿Qué archivos están disponibles en mi curso de Biología?"
- "¿Qué hay en mi calendario esta semana?"
Verificación de funcionamiento (Inspector de MCP)
Antes de agregarlo a Claude, puedes probar el servidor directamente:
npx @modelcontextprotocol/inspector node dist/index.js
Configura CANVAS_TOKEN y CANVAS_BASE_URL en la sección de Variables de entorno del inspector, luego llama a list_courses para confirmar que obtienes datos reales.
Solución de problemas
"No se encontraron cursos" o resultados vacíos
- Verifica tu
CANVAS_BASE_URL— debe ser la URL de Canvas de tu escuela, nocanvas.instructure.com - Asegúrate de que tu token se copió correctamente (sin espacios adicionales)
- Intenta generar un token nuevo
Claude Desktop no muestra las herramientas de Canvas
- Confirma que la ruta en
claude_desktop_config.jsones la ruta absoluta adist/index.js - Asegúrate de haber ejecutado
npm run buildy quedist/index.jsexista - Reinicia Claude Desktop por completo (sal desde la bandeja del sistema, no solo cierres la ventana)
Claude Code no puede encontrar el servidor
- Ejecuta
claude mcp listpara ver los servidores registrados - Ejecuta
claude mcp remove canvasy luego vuelve a agregarlo si algo parece incorrecto
Errores 403 de Canvas
- Tu token puede haber expirado — genera uno nuevo en la Configuración de Canvas
- Algunas instancias de Canvas restringen el acceso a la API; contacta al departamento de TI de tu escuela
Seguridad
- Tu token de Canvas se almacena solo en tu archivo local
.env(que está en git-ignore) y/o en tus archivos de configuración locales de Claude - El token otorga acceso de lectura a todo lo que tu cuenta de Canvas puede ver — trátalo como una contraseña
- Para revocar el acceso: ve a Canvas → Cuenta → Configuración → Integraciones aprobadas → elimina el token
- Nunca compartas tu archivo
.envni lo subas a control de versiones
Desarrollo
# Install deps
npm install
# Build (uses esbuild, outputs to dist/)
npm run build
# Run directly (requires .env file)
node dist/index.js
# Dev mode with ts-node
npm run dev
El código fuente está organizado como:
src/
├── index.ts # Entry point — loads env, starts server
├── server.ts # McpServer setup, registers all tools
├── canvas-client.ts # Axios wrapper: auth headers, pagination, rate-limit backoff
└── tools/
├── courses.ts # list_courses, get_course
├── assignments.ts # list_assignments, get_assignment, list_upcoming_assignments
├── grades.ts # get_grades, list_submissions
├── announcements.ts # list_announcements
├── discussions.ts # list_discussions
├── calendar.ts # list_calendar_events
└── files.ts # list_files