npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

s21-canvas-mcp

v1.1.0

Published

Servidor MCP para interactuar con Canvas LMS de Universidad Siglo 21 y extraer contenido de lecturas/PDFs

Readme

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"
      }
    }
  }
}

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 |