Canvas LMS
Servidor MCP para acceso fácil a datos educativos a través de tu instancia de Canvas LMS.
Documentación
Servidor Canvas LMS MCP
Un servidor Canvas LMS MCP (Protocolo de Conversación entre Máquinas) mínimo para acceder fácilmente a datos educativos a través de tu instancia de Canvas LMS. Este servidor proporciona un puente entre sistemas de IA (como Cursor) y el Sistema de Gestión de Aprendizaje Canvas.
Características
- Cursos: Lista cursos en los que estás inscrito, obtén detalles del curso, programa, módulos y elementos de módulos
- Tareas: Lista y obtén tareas con estado de entrega opcional
- Páginas: Obtén páginas del curso por slug de URL
- Entregas: Lista tus propias entregas con calificaciones y comentarios
- Anuncios: Lista anuncios en múltiples cursos
- Discusiones: Lista temas y visualiza hilos de discusión completos
- Calendario: Lista eventos del calendario con filtrado por fecha
- Planificador: Lista elementos del planificador (tareas, anuncios, etc.)
- Inscripciones: Obtén datos de inscripción con calificaciones
- Cuestionarios: Lista y obtén cuestionarios (solo cuestionarios clásicos)
- Archivos: Lista y obtén archivos
- Navegación: Obtén pestañas del curso, grupos de tareas y cursos favoritos
Instalación
Instalación mediante Smithery
Para instalar Canvas LMS Server para Claude Desktop automáticamente mediante Smithery:
npx -y @smithery/cli install @ahnopologetic/canvas-lms-mcp --client claude
Requisitos previos
- Python 3.13+
- Token de API de Canvas LMS
uvgestor de paquetes (recomendado)
Métodos de instalación
Opción 1: Instalar con uvx (Recomendado)
La forma más fácil de instalar y ejecutar canvas-lms-mcp es usando uvx:
uvx canvas-lms-mcp
Esto ejecutará el servidor en un entorno aislado sin instalarlo permanentemente.
Para instalar la herramienta permanentemente:
uv tool install canvas-lms-mcp
Opción 2: Instalar desde el código fuente
-
Clona el repositorio:
git clone https://github.com/yourusername/canvas-lms-mcp.git cd canvas-lms-mcp -
Instala con uv:
# Install uv if you don't have it yet curl -LsSf https://astral.sh/uv/install.sh | sh # Create a virtual environment and install dependencies uv venv uv pip install -e .Alternativamente, usa métodos tradicionales:
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate pip install -e .
Configuración
Establece las siguientes variables de entorno:
export CANVAS_API_TOKEN="your_canvas_api_token"
export CANVAS_BASE_URL="https://your-institution.instructure.com" # Default: https://canvas.instructure.com
Puedes obtener tu token de API de Canvas desde la configuración de tu cuenta de Canvas.
Ejecutar el servidor
Inicia el servidor con uv:
uv run src/canvas_lms_mcp/main.py
Si está instalado con la herramienta uvx:
canvas-lms-mcp
Por defecto, el servidor se ejecuta en http://localhost:8000.. Puedes usar la interfaz FastMCP en http://localhost:8000/docs para interactuar con la API.
Herramientas disponibles
El servidor proporciona 22 herramientas para interactuar con Canvas LMS:
Cursos
list_courses
Lista los cursos en los que el usuario está inscrito activamente.
Parámetros:
page(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
get_course
Obtén un curso individual por ID.
Parámetros:
course_id(obligatorio): ID del cursoinclude(opcional): Lista de datos adicionales a incluir
get_course_syllabus
Obtén el cuerpo del programa de un curso como HTML.
Parámetros:
course_id(obligatorio): ID del curso
get_course_modules
Obtén los módulos de un curso.
Parámetros:
course_id(obligatorio): ID del cursoinclude(opcional): Lista de datos adicionales a incluirper_page(opcional, predeterminado=100): Número de elementos por página
get_module_items
Obtén los elementos de un módulo específico.
Parámetros:
course_id(obligatorio): ID del cursomodule_id(obligatorio): ID del módulo
Tareas
list_assignments
Lista las tareas de un curso.
Parámetros:
course_id(obligatorio): ID del cursobucket(obligatorio): Filtra por "past", "overdue", "undated", "ungraded", "unsubmitted", "upcoming" o "future"order_by(obligatorio): Ordena por "due_at", "position" o "name"include(opcional): Lista de datos adicionales a incluir (por ejemplo,["submission"]para ver el estado de la calificación)page(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
get_assignment
Obtén una tarea individual por ID.
Parámetros:
course_id(obligatorio): ID del cursoassignment_id(obligatorio): ID de la tarea
list_assignment_groups
Lista los grupos de tareas de un curso (muestra ponderación/categorías de calificación).
Parámetros:
course_id(obligatorio): ID del curso
Páginas
get_page
Obtén una página individual por su slug de URL.
Parámetros:
course_id(obligatorio): ID del cursopage_slug(obligatorio): Slug de URL de la página (por ejemplo, "syllabus", "course-handbook")
Entregas
list_submissions
Lista las entregas del usuario actual para un curso, incluyendo calificaciones y comentarios.
Parámetros:
course_id(obligatorio): ID del cursoinclude(opcional): Lista de datos adicionales (por ejemplo,["assignment", "submission_comments"])page(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
Anuncios
list_announcements
Lista anuncios para uno o más cursos.
Parámetros:
course_ids(obligatorio): Lista de IDs de cursospage(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
Discusiones
list_discussions
Lista temas de discusión para un curso.
Parámetros:
course_id(obligatorio): ID del cursopage(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
get_discussion_view
Obtén la vista completa de un tema de discusión incluyendo todas las respuestas.
Parámetros:
course_id(obligatorio): ID del cursodiscussion_id(obligatorio): ID del tema de discusión
Calendario
list_calendar_events
Lista eventos del calendario para cursos.
Parámetros:
context_codes(obligatorio): Lista de códigos de contexto (por ejemplo,["course_123"])start_date(opcional): Fecha de inicio en formato ISO 8601end_date(opcional): Fecha de fin en formato ISO 8601page(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
Elementos del Planificador
list_planner_items
Lista elementos del planificador para el usuario autenticado.
Parámetros:
start_date(obligatorio): Fecha de inicio en formato ISO 8601end_date(obligatorio): Fecha de fin en formato ISO 8601context_codes(opcional): Lista de códigos de contexto (por ejemplo,["course_123"])page(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
Inscripciones
get_enrollments
Obtén las inscripciones del usuario actual incluyendo calificaciones.
Cuestionarios
list_quizzes
Lista cuestionarios para un curso. Nota: solo funciona con Cuestionarios Clásicos, no con Nuevos Cuestionarios (quiz_lti).
Parámetros:
course_id(obligatorio): ID del cursoinclude(opcional): Lista de datos adicionales a incluirpage(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
get_quiz
Obtén un cuestionario individual por ID.
Parámetros:
course_id(obligatorio): ID del cursoquiz_id(obligatorio): ID del cuestionario
Archivos
list_files
Lista archivos para un curso o carpeta. Nota: puede devolver 403 para cuentas de estudiantes dependiendo de los permisos de la institución.
Parámetros:
course_id(opcional): ID del cursofolder_id(opcional): ID de la carpetainclude(opcional): Lista de datos adicionales a incluirpage(opcional, predeterminado=1): Número de página (indexado desde 1)items_per_page(opcional, predeterminado=10): Número de elementos por página
get_file
Obtén un archivo por ID. Funciona con IDs de archivo conocidos incluso cuando list_files está restringido.
Parámetros:
course_id(obligatorio): ID del cursofile_id(obligatorio): ID del archivo
Otros
get_tabs
Obtén las pestañas/elementos de navegación disponibles para un curso.
Parámetros:
course_id(obligatorio): ID del curso
list_favorites
Lista los cursos favoritos del usuario actual.
Integración
Este servidor MCP funciona con cualquier cliente que soporte el Protocolo de Contexto de Modelo, incluyendo Claude Desktop, Claude Code, Cursor, Windsurf y otros.
La configuración de MCP es la misma en todos los clientes — solo difiere la ubicación del archivo de configuración:
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}
Reemplaza your_canvas_api_token con tu token de API de Canvas (que se encuentra en Canvas → Cuenta → Configuración → Nuevo Token de Acceso) y your-institution.instructure.com con la URL de Canvas de tu institución.
Claude Desktop
Añade a tu archivo de configuración de Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Reinicia Claude Desktop después de guardar.
Claude Code
Añade a .mcp.json de tu proyecto o al ~/.claude/settings.json global:
{
"mcpServers": {
"canvas": {
"command": "uvx",
"args": ["canvas-lms-mcp"],
"env": {
"CANVAS_API_TOKEN": "your_canvas_api_token",
"CANVAS_BASE_URL": "https://your-institution.instructure.com"
}
}
}
}
Cursor
Añade a .cursor/mcp.json en el directorio de tu proyecto. Reinicia Cursor después de guardar.
Windsurf
Añade a ~/.codeium/windsurf/mcp_config.json. Reinicia Windsurf después de guardar.
Ejemplos de uso
Una vez conectado, puedes preguntar a tu asistente de IA sobre tus datos de Canvas:
- "¿Qué tareas tengo para la próxima semana?"
- "Muéstrame el programa de mi curso de Biología"
- "¿Qué anuncios se publicaron hoy?"
- "¿Cuáles son mis calificaciones hasta ahora?"
- "¿Qué tengo en mi agenda para mañana?"
- "Muéstrame las publicaciones de discusión de mi clase de Inglés"
Desarrollo
Para instrucciones detalladas de desarrollo, consulta el archivo DEVELOPMENT.md.
Licencia
Este proyecto está licenciado bajo la Licencia MIT — consulta el archivo LICENSE para más detalles.