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

smithery badge 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
  • uv gestor 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

  1. Clona el repositorio:

    git clone https://github.com/yourusername/canvas-lms-mcp.git
    cd canvas-lms-mcp
    
  2. 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 curso
  • include (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 curso
  • include (opcional): Lista de datos adicionales a incluir
  • per_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 curso
  • module_id (obligatorio): ID del módulo

Tareas

list_assignments

Lista las tareas de un curso.

Parámetros:

  • course_id (obligatorio): ID del curso
  • bucket (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 curso
  • assignment_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 curso
  • page_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 curso
  • include (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 cursos
  • 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

Discusiones

list_discussions

Lista temas de discusión para un curso.

Parámetros:

  • course_id (obligatorio): ID del curso
  • 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_discussion_view

Obtén la vista completa de un tema de discusión incluyendo todas las respuestas.

Parámetros:

  • course_id (obligatorio): ID del curso
  • discussion_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 8601
  • end_date (opcional): Fecha de fin en formato ISO 8601
  • 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

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 8601
  • end_date (obligatorio): Fecha de fin en formato ISO 8601
  • context_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 curso
  • include (opcional): Lista de datos adicionales a incluir
  • 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_quiz

Obtén un cuestionario individual por ID.

Parámetros:

  • course_id (obligatorio): ID del curso
  • quiz_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 curso
  • folder_id (opcional): ID de la carpeta
  • include (opcional): Lista de datos adicionales a incluir
  • 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_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 curso
  • file_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.