Skip to main content
Glama

s21-canvas-mcp

Servidor Model Context Protocol (MCP) para integrar asistentes de inteligencia artificial (Claude Desktop, Cursor, Antigravity, Windsurf, VS Code Copilot, Codex CLI) con la plataforma Canvas LMS de la Universidad Siglo 21.

Proporciona capacidades para consultar asignaturas, calificaciones, trabajos prácticos, cronogramas y realizar la extracción en memoria del contenido de lecturas y documentos PDF para análisis, síntesis y asistencia académica mediante modelos de lenguaje.


Instalación

Seleccione la configuración correspondiente a su entorno o cliente de IA. Es necesario contar con un token de acceso personal de Canvas LMS (consulte las instrucciones en Obtención del Token de Canvas).

1. Claude Desktop

Ruta del archivo de configuración:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

2. Antigravity (Gemini)

Archivo: .gemini/settings.json en el workspace (o configuración global en ~/.gemini/settings.json)

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

3. Cursor

Archivo: .cursor/mcp.json en el workspace

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

4. VS Code Copilot

Archivo: .vscode/settings.json en el workspace

Nota: Visual Studio Code emplea una clave específica (mcp.servers en lugar de mcpServers).

{
  "mcp": {
    "servers": {
      "siglo21": {
        "command": "npx",
        "args": ["-y", "s21-canvas-mcp"],
        "env": {
          "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
          "CANVAS_URL": "https://siglo21.instructure.com"
        }
      }
    }
  }
}

5. Windsurf

Archivo: ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

6. Codex CLI (OpenAI)

Archivo: ~/.codex/config.json

{
  "mcpServers": {
    "siglo21": {
      "command": "npx",
      "args": ["-y", "s21-canvas-mcp"],
      "env": {
        "CANVAS_TOKEN": "tu_token_de_canvas_aqui",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

Related MCP server: canvas-mcp-lite

Obtencion del Token de Canvas

  1. Inicie sesión en Canvas Siglo 21.

  2. Diríjase a Cuenta.

  3. Desplácese hasta la sección Tokens de acceso aprobados y seleccione + Nuevo token de acceso.

  4. Asigne un nombre identificador (por ejemplo, MCP-Agent) y seleccione Generar token.

  5. Copie el token generado y asígnelo al parámetro CANVAS_TOKEN en la configuración correspondiente.

IMPORTANTE: No darle los permisos del token a nadie, ya que permite el acceso a toda tu información académica. En caso de hacerlo revocarlo desde la misma sección.


Herramientas Disponibles

Herramienta

Descripción

Parámetros

s21_open_exam_simulator

Simulador interactivo de exámenes con persistencia en SQLite local, temporizador de API, modos examen/práctica y panel institucional Siglo 21.

port (número, opcional), auto_open (booleano)

s21_save_questions_to_bank

Registra preguntas en la base de datos local SQLite para la generación de simulacros por materia y módulo.

course_id, course_name, questions (array)

s21_get_exam_bank_summary

Estadísticas del banco de preguntas y registro histórico de exámenes en SQLite.

-

s21_open_interactive_guide

Portal web interactivo con documentación de herramientas, casos de uso y generador de prompts.

port (número, opcional), auto_open (booleano)

s21_check_academic_status

Análisis de calificaciones mínimas requeridas para Promoción Directa (7+) o Regularidad (5+).

course_id (número), target_promo_grade, target_regular_grade

s21_generate_practice_quiz

Generación estructurada de preguntas tipo examen con fundamentación conceptual.

course_id, module_number, reading_number, question_count

s21_audit_rubric

Auditoría de borradores de entregas académicas frente a la rúbrica oficial de evaluación.

course_id, assignment_id, draft_text

s21_get_pending_tasks

Consolidación de tareas pendientes y entregas con fechas límite.

-

s21_get_reading

Consulta y extracción de texto de lecturas SAM (1.1 a 4.4).

course_id, module_number, reading_number

s21_read_pdf_content

Extracción de contenido de documentos PDF en memoria sin almacenamiento en disco.

file_id o download_url, max_pages

s21_search_readings

Búsqueda transversal por términos en material y lecturas descargadas.

query (string)

s21_list_courses

Consulta de asignaturas activas o concluidas, calificaciones y períodos académicos.

include_concluded (booleano), search (string)

s21_get_assignments

Trabajos prácticos, consignas en formato Markdown y criterios de rúbrica.

course_id (número)

s21_get_modules

Estructura de módulos SAM, lecturas y actividades organizadas por unidad.

course_id (número)

s21_get_course_files

Explorador de archivos y documentos asociados a la asignatura.

course_id (número)

s21_get_discussion_topics

Foros de discusión académica y consignas de trabajo grupal.

course_id (número)

s21_get_syllabus

Programa oficial de la asignatura y datos del cuerpo docente.

course_id (número)

s21_get_upcoming_events

Próximos eventos y fechas límite del calendario institucional.

-

s21_get_announcements

Anuncios institucionales y publicaciones de cátedra.

course_ids (array de números)

s21_get_my_profile

Datos del perfil de estudiante (nombre, identificador institucional, correo electrónico).

-


Desarrollo Local

Para compilar y ejecutar el proyecto en un entorno de desarrollo local:

cd s21-canvas-mcp
npm install
npm run build

Ejecución directa del servidor compilado:

node dist/index.js

Para registrar el binario en el entorno local:

npm link

Configuración MCP para el binario enlazado:

{
  "mcpServers": {
    "siglo21": {
      "command": "s21-canvas-mcp",
      "env": {
        "CANVAS_TOKEN": "...",
        "CANVAS_URL": "https://siglo21.instructure.com"
      }
    }
  }
}

Compatibilidad de Clientes MCP

Cliente

Transporte

Estado

Observaciones

Claude Desktop

stdio

Compatible

Soporte completo

Antigravity (Gemini)

stdio

Compatible

Soporte completo

Cursor

stdio

Compatible

Soporte completo

VS Code Copilot

stdio

Compatible

Requiere clave mcp.servers en configuración

Windsurf

stdio

Compatible

Soporte completo

Codex CLI (OpenAI)

stdio

Compatible

Soporte completo

Codex Cloud (ChatGPT)

—

No compatible

Entorno aislado sin soporte de transporte MCP

ChatGPT (Web / Desktop App)

HTTP remoto

Limitado

Requiere despliegue como servicio HTTP accesible públicamente

Available Tools

21 tools
s21_audit_rubricA

Compara el borrador de un Trabajo Práctico contra la rúbrica oficial de Canvas y evalúa el puntaje proyectado por criterio.

Inputs: course_id (required), draft_text (required), assignment_id (required).

s21_check_academic_statusA

Calcula el estado académico (promedio de TPs, notas cargadas y proyección de notas mínimas para Promoción Directa o Regularidad).

Inputs: course_id (required), target_promo_grade, target_regular_grade.

s21_generate_practice_quizA

Genera un simulacro de examen tipo API/parcial con preguntas multiple choice y justificaciones teóricas basado en la lectura oficial de Canvas. DIRECTIVA DE FLUJO: Cuando el usuario solicite preparar, rendir o entrenar para un examen interactivo, genera las preguntas con distractores y explicaciones académicas, guárdalas en SQLite con 's21_save_questions_to_bank' e invoca 's21_open_exam_simulator' con el 'course_id' correspondiente y 'start_exam': true para ofrecer la experiencia de examen interactiva.

Inputs: course_id (required), module_number (required), reading_number (required), question_count.

s21_get_announcementsA

Obtiene los avisos y anuncios publicados por profesores con texto limpio en Markdown.

Inputs: course_ids.

s21_get_assignmentsA

Obtiene los Trabajos Prácticos (TP1 a TP4), fechas de entrega, consignas limpias en Markdown y rúbricas.

Inputs: course_id (required), clean_content.

s21_get_bank_questionsA

Obtiene las preguntas existentes guardadas en el banco local SQLite para una materia. Permite consultar el contenido del banco, verificar preguntas antes de generar nuevas (evitando duplicados), o revisar preguntas específicas con el alumno directamente en el chat.

Inputs: course_id (required), limit, module_number.

s21_get_course_filesA

Lista todos los archivos, lecturas y documentos disponibles en una materia, con soporte de fallback si la pestaña de archivos está bloqueada.

Inputs: course_id (required).

s21_get_discussion_topicsA

Obtiene los foros de debate del curso (incluyendo foros obligatorios para TP2 grupal) y sus consignas.

Inputs: course_id (required).

s21_get_exam_bank_summaryA

Consulta el resumen del banco de preguntas y estadísticas de exámenes guardados en la base de datos SQLite local (materias registradas, cantidad de preguntas por módulo, historial de intentos y promedios).

Inputs: no named parameters.

s21_get_modulesB

Obtiene la estructura de módulos (SAM), lecturas y actividades organizadas por unidad temática.

Inputs: course_id (required), clean_content.

s21_get_my_profileA

Obtiene el perfil del alumno en Siglo 21 Canvas (nombre, id, correo, avatar).

Inputs: no named parameters.

s21_get_pending_tasksA

Obtiene la agenda de entregas, TPs y tareas pendientes de todas las materias activas, ordenadas cronológicamente con días restantes.

Inputs: no named parameters.

s21_get_readingC

Busca y resuelve automáticamente una lectura o actividad específica por Módulo y Número de Lectura, con opción de extraer el texto del PDF directamente.

Inputs: course_id (required), module_number (required), reading_number (required), auto_read_pdf.

s21_get_syllabusA

Obtiene el programa general, syllabus y datos docentes de una materia.

Inputs: course_id (required).

s21_get_upcoming_eventsB

Obtiene las próximas entregas, parciales y eventos agendados en el calendario del alumno.

Inputs: no named parameters.

s21_list_coursesB

Lista las materias del alumno (activas o históricas) con soporte de búsqueda y formato compacto optimizado.

Inputs: search, compact, include_concluded.

s21_open_exam_simulatorB

Abre el portal institucional interactivo posicionado directamente en el Simulador de Exámenes (preparación de parciales tipo API, temporizador, banco de preguntas SQLite y notas). DIRECTIVA DE FLUJO: Soporta 'course_id', 'mode' ('exam' o 'practice') y 'start_exam': true para iniciar inmediatamente el examen al abrir la aplicación sin requerir clics manuales del usuario.

Inputs: mode, port, auto_open, course_id, +1 more.

s21_open_interactive_portalA

Abre el portal interactivo unificado de Universidad Siglo 21 (pantalla de inicio con bienvenida al alumno, métricas, accesos directos y catálogo de herramientas).

Inputs: port, auto_open.

s21_read_pdf_contentA

Descarga en memoria y extrae el texto completo de un PDF de lectura/actividad de Canvas para resumir o estudiar.

Inputs: file_id, max_pages, download_url.

s21_save_questions_to_bankA

Guarda un lote de preguntas de examen en la base de datos SQLite local, categorizadas por materia, módulo, lectura y tema, con distractores y justificación académica. DIRECTIVA DE FLUJO: Tras guardar preguntas en el banco para una materia o cuando el alumno exprese intención de rendir/practicar, invoca 's21_open_exam_simulator' con el 'course_id' correspondiente para abrirle el entorno de examen interactivo.

Inputs: course_id (required), questions (required), course_name (required).

s21_search_readingsA

Realiza una búsqueda transversal de conceptos o palabras clave en todas las lecturas y PDFs descargados del alumno.

Inputs: query (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 21 tools

    Disambiguation4/5

    Most tools target a distinct Canvas resource, so an agent can usually select the right one. However, s21_get_pending_tasks and s21_get_upcoming_events both cover upcoming deadlines, and s21_get_reading vs s21_read_pdf_content overlap around PDF extraction.

    Naming Consistency5/5

    All tools share the s21_ prefix and use a consistent snake_case verb_noun pattern. Verbs are clear and objects map predictably to resources, making the naming highly consistent across the full set.

    Tool Count3/5

    With 21 tools, the server is in the heavy range for a single MCP. The exam-simulator and question-bank cluster justifies many of them, but the overall surface feels larger than ideal for a Canvas student assistant.

    Completeness4/5

    The read-only student workflow is well covered: courses, assignments, deadlines, readings, discussions, syllabus, announcements, and exam prep. Minor gaps exist around write actions like submitting assignments or posting to discussions, but those appear outside the intended scope.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers