CanvasLMS-API
CanvasLMS - API
CanvasLMS - API es un servidor MCP local que pone tu cuenta de Canvas LMS delante de un asistente de IA. Se ejecuta en tu máquina, se comunica con Canvas con tu propio token de acceso personal y expone unas 100 herramientas que cubren cursos, tareas, calificaciones, debates, módulos, páginas, archivos, mensajería, revisiones por pares y accesibilidad. Cada herramienta devuelve Markdown. Cada herramienta que cambia Canvas muestra antes el cambio que realizaría y solo lo aplica cuando tú lo confirmas.
Inicio rápido
Obtén un token de acceso personal de Canvas: en Canvas ve a Cuenta > Configuración > Integraciones aprobadas > Nuevo token de acceso.
Clona el repositorio e instálalo.
git clone https://github.com/harryx2011-boop/CanvasLMS-API.git cd CanvasLMS-API uv venv .venv uv pip install -e .Sin
uv, usa un entorno virtual estándar:python -m venv .venv .venv\Scripts\activate # Windows source .venv/bin/activate # macOS/Linux pip install -e .Copia el archivo de entorno de ejemplo y rellena el host y el token de tu Canvas.
cp .env.example .envVerifica la conexión.
canvaslms-api --test
Esto imprime tu nombre, tu ID de usuario y tus cursos activos. Si falla, comprueba CANVAS_URL y CANVAS_TOKEN en el archivo .env.
Related MCP server: Canvas LMS MCP Server
Conectar con Claude Code
Windows:
claude mcp add --scope user canvaslms-api -- "<absolute path>\.venv\Scripts\canvaslms-api.exe"macOS/Linux:
claude mcp add --scope user canvaslms-api -- "<absolute path>/.venv/bin/canvaslms-api"El servidor lee .env desde la carpeta del repositorio al iniciarse, por lo que no es necesario incluir variables de entorno en la configuración del cliente. Usa la ruta absoluta al ejecutable dentro de .venv.
Conectar con Claude Desktop
Añade una entrada al archivo de configuración de Claude Desktop:
{
"mcpServers": {
"canvaslms-api": {
"command": "<absolute path>\\.venv\\Scripts\\canvaslms-api.exe"
}
}
}En macOS/Linux, usa <absolute path>/.venv/bin/canvaslms-api para command.
Ubicación de los archivos de configuración:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Reinicia Claude Desktop después de editar el archivo.
Otros clientes
Cualquier cliente MCP que admita servidores stdio puede lanzar el ejecutable directamente, igual que Claude Code y Claude Desktop de arriba.
Para clientes que solo hablan HTTP, ejecuta el servidor con el transporte HTTP:
canvaslms-api --transport http --host 127.0.0.1 --port 7100Apunta el cliente a http://127.0.0.1:7100. El servidor sigue leyendo las credenciales de Canvas desde .env en la carpeta del repositorio.
Cómo se comporta
Identificadores de curso. Cualquier argumento
courseadmite un ID numérico de Canvas, un código de curso (ENG101), parte del nombre de un curso osis_course_id:X. Si no sabes cuál usar, consulta antes la lista conlist_courses.Control de confirmación. Toda herramienta que modifica Canvas lleva un argumento
confirm: bool = false. Si se llama sin argumento, la herramienta devuelve un comprobante de los cambios que se harían y no realiza ninguna solicitud que altere Canvas. Vuelve a llamarla conconfirm=truedespués de revisar el comprobante.Permisos. Cada herramienta se ejecuta con los permisos del propietario del token. Un token de estudiante no puede ver datos privados de otros estudiantes ni usar herramientas de educador, como calificaciones o mensajería masiva; esas llamadas devuelven el código 403 de Canvas con una pista sobre qué permiso falta.
Salida. Cada herramienta devuelve Markdown, formateado para mostrarse directamente en una transcripción de chat.
Anonimización. Cuando
CANVAS_ANONYMIZE_STUDENTS=true, los nombres de los estudiantes en la salida de las herramientas se reemplazan por un seudónimo estable por curso en lugar de su nombre real.
Referencia de herramientas
Las herramientas de escritura (marcadas con confirm) devuelven un comprobante hasta que se vuelven a llamar con confirm=true.
Cursos e identidad
Herramienta | Proósito | confirm |
get_profile | Obtiene el perfil de Canvas del propietario del token | |
get_enrollments | Lista las matrículas del propietario del token en todos los cursos | |
list_courses | Lista y busca cursos que el propietario del token puede ver | |
get_course | Obtiene los detalles de un curso | |
get_syllabus | Obtiene el programa de un curso | |
get_course_overview | Resume un curso: programa, módulos y trabajo próximo | |
get_course_structure | Obtiene el esquema completo de un curso: módulos, páginas y tareas | |
get_cache_status | Muestra qué datos de resolución de cursos están en caché | |
clear_cache | Limpia la caché de resolución de cursos |
Estudiante
Herramienta | Proyecto | Comprobación |
get_upcoming_assignments | Lista las tareas próximas en todos los cursos | |
get_todo | Obtiene la lista de pendientes de Canvas | |
get_submission_status | Muestra el estado de entregadas, faltas o calificaciones de un curso | |
get_grades | Obtiene las calificaciones actuales de uno o todos los cursos | |
get_pending_peer_reviews | Lista las revisiones por pares que aún debe el propietario del token | |
get_submission | Obtiene el detalle de una entrega y sus comentarios | |
submit_assignment | Envía una tarea | confirm |
comment_on_submission | Añade un comentario a una entrega | confirm |
mark_module_item_done | Marca un elemento de módulo como completado | confirm |
Tareas y calificaciones
Herramienta | Proyecto | Comprob |
list_assignments | Lista las tareas de un curso | |
get_assignment | Obtiene el detalle de una tarea | |
list_submissions | Lista las entregas de una tarea | |
get_assignment_analytics | Resume las entregas y la distribución de calificaciones de una tarea | |
get_student_analytics | Resume la actividad de un estudiante en un curso | |
create_assignment | Crea una tarea | confirm |
update_assignment | Actualiza una tarea | confirm |
bulk_grade_submissions | Califica varias entregas en una sola llamada | confirm |
grade_with_rubric | Califica una entrega con rúbrica | confirm |
Rúbricas
Herramienta | Proyecto | Comprob |
list_rubrics | Lista las rúbricas de un curso | |
get_rubric | Obtiene los criterios de una rúbrica | |
get_rubric_assessment | Obtiene la evaluación con rúbrica de una entrega | |
create_rubric | Crea una rúbrica | confirm |
create_rubric_from_csv | Crea una rúbrica a partir de una definición CSV | confirm |
associate_rubric | Asocia una rúbrica a una tarea | confirm |
Debates y anuncios
Herramienta | Proyecto | Comprob |
list_discussion_topics | Lista los temas de debate de un curso | |
get_discussion_topic | Obtiene un tema de debate | |
list_discussion_entries | Lista las entradas de nivel superior de un tema | |
get_discussion_entry | Obtiene una entrada del debate | |
get_discussion_thread | Obtiene un hilo completo con respuestas | |
post_discussion_entry | Publica una nueva entrada en un tema | confirm |
reply_to_discussion_entry | Responde a una entrada existente | confirm |
create_discussion_topic | Crea un tema de debate | confirm |
update_discussion_topic | Actualiza un tema de debate | confirm |
list_announcements | Lista los anuncios de un curso | |
create_announcement | Crea un anuncio | confirm |
delete_announcement | Elimina un anuncio | confirm |
delete_announcements | Elimina varios anuncios por ID | confirm |
delete_announcements_matching | Elimina los anuncios que coinciden con un filtro | confirm |
Módulos
Herramienta | Proyecto | Confirma |
list_modules | Lista los módulos de un curso | |
list_module | Lista los elementos de un módulo | |
create_module | Crea un módulo | confirm |
update_module | Actualiza un módulo | confirm |
delete_module | Elimina un módulo | confirm |
add_module_item | Añade un elemento a un módulo | confirm |
update_module_item | Actualiza un elemento de un módulo | confirm |
delete_module_item | Elimina un elemento de un módulo | confirm |
Páginas
Herramienta | Proyecto | confirm |
list_pages | Lista las páginas de un curso | |
get_page | Obtiene los metadatos de una página | |
get_page_content | Obtiene el cuerpo de una página | |
get_front_page | Obtiene la portada de un curso | |
create_page | Crea una página | confirm |
edit_page_content | Reemplaza el cuerpo de una página | confirm |
update_page_settings | Actualiza los ajustes de una página (título, estado de publicación, derechos de edición) | confirm |
bulk_update_pages | Aplica la misma edición a varias páginas | confirm |
delete_page | Elimina una página | confirm |
Archivos
Herramienta | Proyecto | confirm |
list_files | Lista los archivos de un curso | |
read_file | Lee el contenido de un archivo de texto | |
download_file | Descarga un archivo al disco | |
upload_file | Sube un archivo a un curso | confirm |
Mensajería
Herramienta | Proyecto | confirm |
list_conversations | Lista las conversaciones de la bandeja de entrada de Canvas | |
get_conversation | Obtiene los mensajes de una conversación | |
get_unread_count | Obtiene la cantidad de mensajes no leídos | |
mark_conversations_read | Marca conversaciones como leídas | confirm |
send_conversation | Envía un nuevo mensaje | confirm |
send_bulk_messages | Envía el mismo mensaje a varios destinatarios | confirm |
Revisiones por pares
Herramienta | Propósito | confirm |
list_peer_reviews | Listar las asignaciones de revisión entre pares para una tarea | |
assign_peer_review | Asignar una revisión entre pares | confirm |
get_peer_review_assignments | Listar quién revisa a quién | |
get_peer_review_completion_analytics | Resumir las tasas de finalización de revisiones entre pares | |
get_peer_review_followup_list | Listar a los estudiantes que aún deben una revisión entre pares | |
get_peer_review_comments | Obtener los comentarios dejados en una revisión entre pares | |
analyze_peer_review_quality | Puntuar los comentarios de las revisiones entre pares por profundidad y utilidad | |
identify_problematic_peer_reviews | Marcar revisiones entre pares de bajo esfuerzo o faltantes | |
generate_peer_review_report | Crear un informe resumido de la actividad de revisiones entre pares | |
generate_peer_review_feedback_report | Crear un informe del contenido de los comentarios en todas las revisiones entre pares | |
extract_peer_review_dataset | Exportar los datos de revisiones entre pares para su análisis | |
message_peer_reviewers | Enviar mensajes a los estudiantes sobre sus asignaciones de revisión entre pares | confirm |
send_peer_review_followups | Enviar recordatorios a los estudiantes con revisiones entre pares pendientes | confirm |
Personas y privacidad
Herramienta | Propósito | confirm |
list_users | Listar los usuarios matriculados en un curso | |
list_groups | Listar los grupos de un curso | |
check_enrollment | Comprobar la matriculación de un usuario en un curso | |
export_anonymization_map | Exportar la correspondencia entre seudónimos y nombres reales | confirm |
get_privacy_status | Mostrar si la anonimización está activa |
Accesibilidad
Herramienta | Propósito | confirm |
scan_course_content_accessibility | Analizar las páginas y archivos de un curso en busca de problemas de accesibilidad | |
fix_accessibility_issues | Aplicar correcciones para los problemas de accesibilidad detectados | confirm |
fetch_ufixit_report | Obtener un informe de accesibilidad UFIXIT existente | |
parse_ufixit_violations | Extraer las infracciones de un informe UFIXIT | |
format_accessibility_summary | Formatear un análisis de accesibilidad como un resumen legible |
Copia de curso
Herramienta | Propósito | confirm |
create_content_migration | Iniciar una migración/copia de contenido del curso | confirm |
get_content_migration_status | Comprobar el progreso de una migración de contenido |
Meta
Herramienta | Propósito | confirm |
search_tools | Buscar las herramientas disponibles por palabra clave |
Configuración
Toda la configuración proviene de variables de entorno, cargadas desde un archivo .env en la raíz del repositorio.
Variable | Obligatoria | Valor predeterminado | Propósito |
| sí | Tu host de Canvas, p. ej. | |
| sí | Tu token de acceso personal de Canvas. | |
| no |
| Tiempo de espera de las solicitudes HTTP, en segundos. |
| no |
| Durante cuánto tiempo se almacenan en caché los resultados de resolución de cursos, en segundos. |
| no |
| Número máximo de solicitudes simultáneas a Canvas. |
| no |
| Sustituir los nombres de los estudiantes por seudónimos estables en la salida de las herramientas. |
| no | directorio temporal del sistema | Dónde escribe |
Ejecuta canvaslms-api --config para imprimir la configuración resuelta, con el token enmascarado.
Desarrollo
Instala con extras de desarrollo:
uv pip install -e ".[dev]"Ejecuta las pruebas:
pytestLint:
ruff check .La CI ejecuta pruebas y lint en cada push. También hay disponible una imagen de Docker; su punto de entrada es canvaslms-api.
Indicadores de CLI útiles durante el desarrollo: canvaslms-api --list-tools imprime el nombre de cada herramienta registrada, canvaslms-api --config imprime la configuración resuelta, canvaslms-api --version imprime la versión instalada.
Notas de seguridad
Tu token de Canvas permanece local. Se lee desde
.enval iniciar y se usa únicamente para llamar a la API de Canvas que configuraste.El token nunca se registra.
--configyget_privacy_statuslo enmascaran.Las herramientas de escritura requieren un
confirm=trueexplícito después de una vista previa. Nada cambia en Canvas por accidente.download_fileno sobrescribirá un archivo existente en la ruta de destino.
Licencia
MIT. Consulta LICENSE.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityAmaintenanceLocal-first MCP server for Canvas LMS. Stdio transport, no third-party broker, token stays in ~/.canvas.env. Exposes courses, assignments, modules, announcements, grades, planner items, upcoming events, todo list, and bulk file dump as MCP tools.104MIT
- AlicenseBqualityAmaintenanceMCP server for Canvas LMS, providing 115+ tools to read courses, assignments, submissions, rubrics, quizzes; grade, comment, manage course content, and handle Canvas admin workflows from any AI agent.241639955MIT
- AlicenseNot gradedqualityCmaintenanceA local MCP server for Canvas LMS that enables querying courses, assignments, grades, modules, and more from any MCP-compatible AI client.59MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Canvas LMS that exposes courses, assignments, modules, pages, files, grades, and submissions as tools for AI agents.
Related MCP Connectors
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
An MCP server that gives your AI access to the source code and docs of all public github repos
Connect AI agents to Flato's editable canvas runtime through a hosted MCP server.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/harryx2011-boop/CanvasLMS-API'
If you have feedback or need assistance with the MCP directory API, please join our Discord server