Skip to main content
Glama

Chispa MCP

Paquete de npm (servidor MCP por stdio) que conecta asistentes de IA (Claude, ChatGPT y otros clientes MCP) con las aulas de Chispa. Cada docente inicia sesión con su cuenta de Chispa (chispa-mcp login) y el asistente actúa con sus mismos permisos: nunca más.

Herramientas

El asistente puede hacer todo lo que un profesor o administrador hace en las pantallas de gestión de Guías Clave, con los mismos permisos (77 herramientas). Las acciones que borran piden confirm: true y el asistente debe confirmar antes con la persona.

Área

Herramientas

Nivel

Aulas

list_my_classrooms

docente

Cursos

list_courses, get_course, create_course, update_course, reorder_modules, get_course_outline

equipo

delete_course, transfer_course

quien creó el curso

Temas

list_course_themes, save_theme, delete_theme, set_item_themes

equipo

Colecciones

list_collections, save_collection, delete_collection, move_course_to_collection, reorder_collection_courses

tus propias colecciones

Módulos

get_module, create_module, update_module, delete_module, reorder_lessons

equipo

Lecciones

get_lesson, create_lesson, update_lesson, delete_lesson, set_published

equipo

Material

list_lesson_items, add_quiz_questions, save_quiz_question, delete_quiz_question, save_self_check_question, delete_self_check_question, add_flashcards, save_flashcard, delete_flashcard, get_game, save_game, delete_game

equipo

Carga masiva

import_exam, import_module_content, add_exam_questions, add_quiz_questions, add_flashcards

equipo

Exámenes

create_exam, get_exam, update_exam, delete_exam, add_exam_questions (con replace), save_exam_question, delete_exam_question

equipo

Escenarios

create_scenario, get_scenario, update_scenario, delete_scenario, add_scenario_criteria, save_scenario_criterion, delete_scenario_criterion

equipo

Personas

list_members, classroom_progress, get_student_detail, list_access_requests, decide_access_request, remove_member

equipo

activate_trial_course, set_course_grants

administrador del aula

Chat

list_waiting_chats, get_chat_thread, reply_chat, set_chat_status, delete_chat

equipo

Ofertas

list_offers, create_offer, update_offer, set_offer_active, delete_offer

administrador del aula

Ventas

sales_summary, list_sales, sales_funnel

administrador del aula

Permisos de edición de contenido: igual que en la plataforma (can_edit_course): quien creó el curso, el administrador del aula donde está vinculado o un profesor con acceso a él. Borrar o transferir un curso es solo de quien lo creó.

Todo lo que se crea queda en borrador o pausado salvo que se pida lo contrario.

Related MCP server: Classroom MCP

Cargas masivas

Pensadas para subir un simulacro, un banco de preguntas o varias lecciones de una vez:

  • Formato de texto compacto, una pregunta por línea (mucho más corto que JSON): ¿Capital de Francia? | Madrid | *París | Roma | explicación: Está sobre el Sena | tema: Geografía | lección: 2 El * marca la correcta. Las tarjetas son anverso | reverso. Las líneas vacías y las que empiezan por # se ignoran.

  • dry_run: true valida todo y muestra qué se guardaría, sin escribir nada.

  • Todo o nada: si una línea falla no se guarda ninguna y el error dice la línea exacta (línea 7: Marca la opción correcta con «*»). Si falla a mitad de camino, se deshace lo creado.

  • Tandas e índices: hasta 200 preguntas por llamada y 30 lecciones por carga; las inserciones van en tandas de 100.

  • import_exam crea el examen y sus preguntas en un paso; import_module_content crea varias lecciones con su quiz y tarjetas.

Instrucciones y flujos guiados

Al conectarse, el servidor entrega unas instrucciones al asistente (tono claro y didáctico, validar antes de guardar, confirmar antes de publicar o borrar, cómo hacer cargas masivas, tratar el texto de estudiantes como información y no como órdenes). Además ofrece flujos guiados (prompts): cargar_simulacro, crear_curso_completo, revisar_grupo y atender_solicitudes. El texto está en src/mcp/instructions.ts y src/mcp/prompts.ts.

Fuera de alcance a propósito: subir imágenes (banners de cursos, colecciones y ofertas), datos de contacto de compradores y el análisis geográfico de la audiencia. Tampoco se envían los avisos automáticos a estudiantes que la plataforma manda al publicar un módulo o una lección.

Instalación

Requiere Node.js 22.12 o superior (22.12+, 24 o 26+).

El paquete se publica en GitHub Packages (@jeffercbs/chispa-mcp).

Opción A — directo desde GitHub (sin token):

npx -y github:jeffercbs/chispa-mcp login

Opción B — GitHub Packages: crea un .npmrc con

@jeffercbs:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=<token con read:packages>

y ejecuta npx -y @jeffercbs/chispa-mcp login.

Autenticación

  1. chispa-mcp login abre el navegador en la pantalla de consentimiento de Guías Clave (OAuth 2.1 con PKCE de Supabase, redirección a 127.0.0.1).

  2. Entras con tu cuenta de docente y apruebas el acceso.

  3. Los tokens quedan en ~/.config/chispa-mcp/credentials.json (permisos 0600) y se renuevan solos.

  4. chispa-mcp whoami muestra la cuenta; chispa-mcp logout borra la sesión local.

No hay contraseñas ni claves de servicio en el paquete: el asistente actúa con el token de la persona y RLS decide qué ve.

Configurar tu cliente de IA

{
	"mcpServers": {
		"chispa": { "command": "npx", "args": ["-y", "github:jeffercbs/chispa-mcp"] }
	}
}

Claude Code: claude mcp add chispa -- npx -y github:jeffercbs/chispa-mcp.

Si no has iniciado sesión, las herramientas responden con la instrucción de ejecutar login.

Variables (opcionales)

Variable

Para qué

CHISPA_SUPABASE_URL

Otro proyecto Supabase (por defecto "taller ai")

CHISPA_SUPABASE_ANON_KEY

Clave publicable de ese proyecto

CHISPA_MCP_PORT

Puerto del callback de login (53682)

CHISPA_MCP_HOME

Carpeta de credenciales

CHISPA_CURRENCY

Moneda de los importes (COP)

CHISPA_ROLE_CACHE_SECONDS

Segundos que se recuerda el rol en un aula (20; 0 = siempre consultar)

CHISPA_WRITES_PER_MINUTE

Tope de escrituras por minuto (120)

CHISPA_LOGIN_TIMEOUT_MINUTES

Espera del inicio de sesión (5)

Requisitos del proyecto Supabase

  • Auth → OAuth Server activado, con registro dinámico de clientes.

  • URL de autorización apuntando a /oauth/consent de Guías Clave.

  • Redirecciones loopback http://127.0.0.1:53682/callback permitidas.

Publicar una versión

Crea un release en GitHub: el workflow publish.yml compila, prueba y publica en GitHub Packages.

Desarrollo

pnpm install
pnpm build      # tsc → dist/
pnpm test       # vitest
pnpm check      # tsc --noEmit
node dist/cli.js login

Ver ARCHITECTURE.md para añadir herramientas y SECURITY.md para el modelo de seguridad.

Available Tools

77 tools
activate_trial_courseActivar el curso elegidoA

[Administrador del aula] Da acceso completo al curso que eligió una persona que está en prueba. Confirma con la persona antes de hacerlo.

Inputs: user_id (required), classroom_id (required).

add_exam_questionsCargar preguntas en un examenB

[Equipo del aula] Carga preguntas de opción múltiple en un simulacro o examen (hasta 200 por llamada). Envía questions (JSON) o questions_text (una por línea: «enunciado | opción | *correcta | opción | explicación: … | tema: … | lección: 2»). Es todo o nada: si una pregunta falla no se guarda ninguna y se indica la línea. Usa dry_run=true para validar sin guardar. Con replace=true sustituye todas las existentes (confirma antes con la persona).

Inputs: exam_id (required), classroom_id (required), dry_run, replace, +2 more.

add_flashcardsCargar tarjetas de repasoA

[Equipo del aula] Carga tarjetas de repaso en una lección (hasta 200 por llamada). Envía cards (JSON) o cards_text (una por línea: «anverso | reverso»). Todo o nada; dry_run=true valida sin guardar. Quedan visibles en la lección y en el mazo del curso.

Inputs: session_id (required), classroom_id (required), cards, dry_run, +1 more.

add_quiz_questionsCargar preguntas de quizA

[Equipo del aula] Carga preguntas de opción múltiple en el quiz de una lección (hasta 200 por llamada). Envía questions (JSON) o questions_text (una por línea: «enunciado | opción | *correcta | opción | explicación: …»). Todo o nada; dry_run=true valida sin guardar.

Inputs: session_id (required), classroom_id (required), dry_run, questions, +1 more.

add_scenario_criteriaAñadir criterios a la rúbricaB

[Equipo del aula] Añade criterios de autoevaluación a un escenario de un curso que puedes editar.

Inputs: criteria (required), scenario_id (required), classroom_id (required).

classroom_progressAvance del grupoB
Read-only

[Equipo del aula · solo lectura] Resume el avance de cada estudiante del aula: lecciones completadas, quizzes aprobados, puntos y días sin actividad. Puede filtrar a quienes llevan inactivos.

Inputs: classroom_id (required), limit, inactive_days.

create_courseCrear cursoA

[Equipo del aula] Crea un curso. Queda en borrador y con visibilidad «aula» salvo que se indique otra cosa. Solo si quien llama administra el aula, el curso queda vinculado a ella (igual que en la plataforma); si no, queda sin vincular. Confirma con la persona antes de publicar o hacerlo público.

Inputs: title (required), classroom_id (required), publish, audience, +6 more.

create_examCrear simulacro o examenA

[Equipo del aula] Crea un simulacro o examen al final de un módulo de un curso que puedes editar. Queda en borrador; añade preguntas con add_exam_questions.

Inputs: title (required), module_id (required), classroom_id (required), repeatable, +6 more.

create_lessonCrear lecciónA

[Equipo del aula] Crea una lección de lectura al final de un módulo de un curso que puedes editar. Queda en borrador salvo que pidas publicarla; confirma con la persona antes de publicar.

Inputs: title (required), content (required), module_id (required), classroom_id (required), +6 more.

create_moduleCrear móduloA

[Equipo del aula] Crea un módulo al final de un curso que puedes editar. Queda en borrador salvo que pidas publicarlo.

Inputs: title (required), course_id (required), classroom_id (required), kind, +5 more.

create_offerCrear ofertaA

[Administrador del aula] Crea una oferta para cursos del aula: porcentaje, monto de descuento, precio fijo, descuento en el segundo curso o paquete. Queda pausada salvo que pidas activarla; confirma con la persona antes de activarla.

Inputs: kind (required), name (required), course_ids (required), classroom_id (required), +7 more.

create_scenarioCrear escenarioA

[Equipo del aula] Crea un caso práctico de respuesta abierta al final de un módulo de un curso que puedes editar. Queda en borrador; añade su rúbrica con add_scenario_criteria.

Inputs: title (required), module_id (required), situation (required), classroom_id (required), +7 more.

decide_access_requestAprobar o rechazar una solicitudB

[Equipo del aula] Aprueba o rechaza una solicitud para entrar al aula. Confirma con la persona antes de hacerlo.

Inputs: decision (required), member_id (required), classroom_id (required).

delete_chatEliminar una conversaciónA
Destructive

[Equipo del aula · irreversible] Elimina una conversación del aula con todos sus mensajes. Irreversible: pide confirmación explícita a la persona.

Inputs: confirm (required), thread_id (required), classroom_id (required).

delete_collectionBorrar colecciónA
Destructive

[Cuenta docente · irreversible] Borra una colección tuya. Sus cursos no se borran. Pide confirmación explícita a la persona.

Inputs: confirm (required), collection_id (required).

delete_courseBorrar cursoA
Destructive

[Equipo del aula · irreversible] Borra definitivamente un curso con todos sus módulos, lecciones y evaluaciones. Solo quien lo creó. Irreversible: pide confirmación explícita a la persona.

Inputs: confirm (required), course_id (required), classroom_id (required).

delete_examBorrar examenA
Destructive

[Equipo del aula · irreversible] Borra definitivamente un examen con sus preguntas e intentos. Irreversible: pide confirmación explícita a la persona.

Inputs: confirm (required), exam_id (required), classroom_id (required).

delete_exam_questionBorrar pregunta de examenB
Destructive

[Equipo del aula · irreversible] Borra una pregunta de un examen.

Inputs: question_id (required), classroom_id (required).

delete_flashcardBorrar tarjetaB
Destructive

[Equipo del aula · irreversible] Borra una tarjeta de repaso.

Inputs: card_id (required), classroom_id (required).

delete_gameBorrar juegoB
Destructive

[Equipo del aula · irreversible] Borra un juego interactivo de una lección.

Inputs: game_id (required), classroom_id (required).

delete_lessonBorrar lecciónA
Destructive

[Equipo del aula · irreversible] Borra definitivamente una lección con su quiz, tarjetas y juegos. Irreversible: pide confirmación explícita a la persona.

Inputs: confirm (required), session_id (required), classroom_id (required).

delete_moduleBorrar móduloA
Destructive

[Equipo del aula · irreversible] Borra definitivamente un módulo con sus lecciones y evaluaciones. Irreversible: pide confirmación explícita a la persona.

Inputs: confirm (required), module_id (required), classroom_id (required).

delete_offerBorrar ofertaA
Destructive

[Administrador del aula · irreversible] Borra una oferta del aula. Irreversible: pide confirmación explícita a la persona.

Inputs: confirm (required), offer_id (required), classroom_id (required).

delete_quiz_questionBorrar pregunta de quizB
Destructive

[Equipo del aula · irreversible] Borra una pregunta del quiz de una lección.

Inputs: question_id (required), classroom_id (required).

delete_scenarioBorrar escenarioA
Destructive

[Equipo del aula · irreversible] Borra definitivamente un escenario con su rúbrica y respuestas. Irreversible: pide confirmación explícita a la persona.

Inputs: confirm (required), scenario_id (required), classroom_id (required).

delete_scenario_criterionBorrar criterio de la rúbricaA
Destructive

[Equipo del aula · irreversible] Borra un criterio de la rúbrica de un escenario.

Inputs: classroom_id (required), criterion_id (required).

delete_self_check_questionBorrar pregunta de autoevaluaciónB
Destructive

[Equipo del aula · irreversible] Borra una pregunta de autoevaluación de una lección.

Inputs: question_id (required), classroom_id (required).

delete_themeBorrar temaA
Destructive

[Equipo del aula · irreversible] Borra un tema del curso. Los materiales dejan de estar asociados a él.

Inputs: theme_id (required), classroom_id (required).

get_chat_threadLeer una conversaciónA
Read-only

[Equipo del aula · solo lectura] Devuelve los mensajes de una conversación del aula, en orden.

Inputs: thread_id (required), classroom_id (required).

get_courseDetalle del cursoA
Read-only

[Equipo del aula · solo lectura] Devuelve los datos editables de un curso del aula: títulos, descripción, nivel, visibilidad, colección y publicación.

Inputs: course_id (required), classroom_id (required).

get_course_outlineÍndice del cursoB
Read-only

[Equipo del aula · solo lectura] Devuelve los módulos y lecciones de un curso del aula, con su estado de publicación.

Inputs: course_id (required), classroom_id (required).

get_examDetalle del examenA
Read-only

[Equipo del aula · solo lectura] Devuelve la configuración de un simulacro o examen y todas sus preguntas con sus IDs.

Inputs: exam_id (required), classroom_id (required).

get_gameDetalle de un juegoB
Read-only

[Equipo del aula · solo lectura] Devuelve el tipo, la consigna y la configuración completa de un juego de una lección.

Inputs: game_id (required), classroom_id (required).

get_lessonDetalle de la lecciónA
Read-only

[Equipo del aula · solo lectura] Devuelve el contenido completo de una lección (resumen, objetivos, texto, vídeo, formato) y cuántos quizzes, tarjetas y juegos tiene.

Inputs: session_id (required), classroom_id (required).

get_moduleDetalle del móduloB
Read-only

[Equipo del aula · solo lectura] Devuelve los datos editables de un módulo y sus evaluaciones (exámenes y escenarios).

Inputs: module_id (required), classroom_id (required).

get_scenarioDetalle del escenarioA
Read-only

[Equipo del aula · solo lectura] Devuelve un escenario con su respuesta de referencia, mensajes de resultado y rúbrica (criterios con sus IDs).

Inputs: scenario_id (required), classroom_id (required).

get_student_detailAvance de un estudianteA
Read-only

[Equipo del aula · solo lectura] Muestra el avance lección por lección de un estudiante del aula, agrupado por módulo, con puntajes de quiz e intentos.

Inputs: user_id (required), classroom_id (required).

import_examCrear un examen completo con sus preguntasA

[Equipo del aula] Crea un simulacro o examen y carga todas sus preguntas en una sola llamada (hasta 200). Es todo o nada: si algo falla no queda un examen a medias. Formato de texto: una pregunta por línea «enunciado | opción | *correcta | opción | explicación: … | tema: … | lección: 2». Usa dry_run=true primero para validar sin guardar. Queda en borrador.

Inputs: title (required), module_id (required), classroom_id (required), dry_run, +9 more.

import_module_contentCargar varias lecciones con su quiz y tarjetasA

[Equipo del aula] Crea hasta 30 lecciones al final de un módulo, cada una con su quiz y sus tarjetas, en una sola llamada. Es todo o nada. Usa dry_run=true para validar primero. Quedan en borrador salvo publish=true (confirma con la persona antes de publicar).

Inputs: lessons (required), module_id (required), classroom_id (required), dry_run, +1 more.

list_access_requestsSolicitudes y cursos por activarA
Read-only

[Administrador del aula · solo lectura] Lista quién pide entrar al aula y quién está en prueba esperando que le actives el curso que eligió.

Inputs: classroom_id (required).

list_collectionsMis coleccionesA
Read-only

[Cuenta docente · solo lectura] Lista tus colecciones de cursos con los cursos de cada una.

Inputs: no named parameters.

list_coursesCursos del aulaB
Read-only

[Equipo del aula · solo lectura] Lista los cursos del aula, si están publicados y si los puedes editar.

Inputs: classroom_id (required).

list_course_themesTemas del cursoB
Read-only

[Equipo del aula · solo lectura] Lista los temas de un curso con sus prerrequisitos.

Inputs: course_id (required), classroom_id (required).

list_lesson_itemsMaterial de una lecciónA
Read-only

[Equipo del aula · solo lectura] Lista con sus IDs el quiz, las preguntas de autoevaluación, las tarjetas y los juegos de una lección, para poder editarlos o borrarlos.

Inputs: session_id (required), classroom_id (required).

list_membersPersonas del aulaA
Read-only

[Equipo del aula · solo lectura] Lista a las personas del aula con su estado (pendiente, aprobado o rechazado), tipo de acceso, curso elegido y cursos activados. Sin correos ni teléfonos.

Inputs: classroom_id (required), limit, offset, status.

list_my_classroomsMis aulasA
Read-only

[Cuenta docente · solo lectura] Lista las aulas donde eres administrador o profesor, con tu rol en cada una. Úsala primero para obtener el classroom_id.

Inputs: no named parameters.

list_offersOfertas del aulaA
Read-only

[Administrador del aula · solo lectura] Lista las ofertas del aula con su tipo, descuento, vigencia, cupos y estado.

Inputs: classroom_id (required).

list_salesRegistro de ventasA
Read-only

[Administrador del aula · solo lectura] Lista las compras del aula (pagadas, pendientes y fallidas) con referencia, montos, comisión y cursos. No incluye datos de contacto de los compradores.

Inputs: classroom_id (required), limit, status.

list_waiting_chatsChats sin responderA
Read-only

[Equipo del aula · solo lectura] Lista las conversaciones del aula cuyo último mensaje es del estudiante, con ese mensaje.

Inputs: classroom_id (required).

move_course_to_collectionMover un curso de colecciónA

[Cuenta docente] Mueve un curso tuyo a una colección tuya, o lo saca de su colección si no envías collection_id.

Inputs: course_id (required), collection_id.

remove_memberQuitar a alguien del aulaA
Destructive

[Equipo del aula · irreversible] Quita la plaza de una persona del aula. Pierde el acceso. Pide confirmación explícita a la persona.

Inputs: confirm (required), member_id (required), classroom_id (required).

reorder_collection_coursesOrdenar los cursos de una colecciónA

[Cuenta docente] Fija el orden de los cursos de una colección tuya. La lista debe incluir todos sus cursos.

Inputs: course_ids (required), collection_id (required).

reorder_lessonsOrdenar leccionesA

[Equipo del aula] Fija el orden de las lecciones de un módulo. La lista debe incluir todas las lecciones del módulo, en el orden deseado.

Inputs: module_id (required), session_ids (required), classroom_id (required).

reorder_modulesOrdenar módulosA

[Equipo del aula] Fija el orden de los módulos de un curso. La lista debe incluir todos los módulos del curso, en el orden deseado.

Inputs: course_id (required), module_ids (required), classroom_id (required).

reply_chatResponder un chatA

[Equipo del aula] Envía una respuesta en una conversación del aula. Muestra el texto a la persona y pide su confirmación antes de enviarlo.

Inputs: body (required), thread_id (required), classroom_id (required).

sales_funnelEmbudo de ventasA
Read-only

[Administrador del aula · solo lectura] Cuántos carritos se abrieron, cuántos pagos se iniciaron y cuántos se pagaron, más lo abandonado por curso. Sin datos de contacto.

Inputs: classroom_id (required).

sales_summaryResumen de ventasA
Read-only

[Administrador del aula · solo lectura] Totales de ventas pagadas del aula en un periodo y lo vendido por curso. No incluye datos de contacto de los compradores.

Inputs: classroom_id (required), days.

save_collectionCrear o editar una colecciónA

[Cuenta docente] Crea una colección de cursos o edita una tuya (envía collection_id). Al editar, envía el título actual si no lo cambias.

Inputs: title (required), slug, video_url, description, +1 more.

save_exam_questionCrear o editar una pregunta de examenA

[Equipo del aula] Crea una pregunta de examen o edita una existente (envía question_id). Para muchas preguntas usa add_exam_questions.

Inputs: prompt (required), correct (required), exam_id (required), options (required), +6 more.

save_flashcardCrear o editar una tarjetaA

[Equipo del aula] Crea una tarjeta de repaso o edita una existente (envía card_id). Pasa session_id para una tarjeta de lección, o solo course_id para una del mazo general del curso.

Inputs: back (required), front (required), classroom_id (required), card_id, +4 more.

save_gameCrear o editar un juegoA

[Equipo del aula] Crea un juego interactivo en una lección o edita uno existente (envía game_id). El config depende del tipo: clasificar: {buckets:[{key,label}] (2-6), items:[{text,bucket,why?}] (3-60)}; ordenar: {items:[{text,label?,order}] (3-30)}; emparejar: {pairs:[{left,right}] (3-30)}; memoria: {pairs:[{left,right}] (3-10)}; verdadero_falso: {items:[{text,answer,why?}] (3-60)}; completar: {items:[{text con ___, answer, options?, why?}] (3-40)}; sopa y descifrar: {items:[{text,clue?}] (3-30)}. Queda en borrador salvo que se publique.

Inputs: kind (required), title (required), config (required), session_id (required), +5 more.

save_quiz_questionCrear o editar una pregunta de quizA

[Equipo del aula] Crea una pregunta de quiz en una lección o edita una existente (envía question_id).

Inputs: prompt (required), correct (required), options (required), session_id (required), +5 more.

save_scenario_criterionCrear o editar un criterio de la rúbricaB

[Equipo del aula] Crea un criterio de la rúbrica de un escenario o edita uno existente (envía criterion_id).

Inputs: label (required), scenario_id (required), classroom_id (required), topic, +6 more.

save_self_check_questionCrear o editar una pregunta de autoevaluaciónA

[Equipo del aula] Crea una pregunta de autoevaluación (pregunta y respuesta abiertas) en una lección o edita una existente (envía question_id).

Inputs: answer (required), question (required), session_id (required), classroom_id (required), +2 more.

save_themeCrear o editar un temaA

[Equipo del aula] Crea un tema del curso o edita uno existente (envía theme_id). Si envías prerequisite_ids, reemplaza los prerrequisitos; deben ser temas del mismo curso.

Inputs: title (required), course_id (required), classroom_id (required), position, +3 more.

set_chat_statusMarcar una conversaciónB

[Equipo del aula] Marca una conversación del aula como resuelta o la reabre.

Inputs: status (required), thread_id (required), classroom_id (required).

set_course_grantsFijar los cursos activados de una personaA

[Administrador del aula] Fija exactamente a qué cursos del aula tiene acceso completo una persona con plaza (los que no incluyas se le quitan). Primero consulta list_members para no quitar accesos por error; confirma con la persona.

Inputs: user_id (required), course_ids (required), classroom_id (required).

set_item_themesAsociar temas a un materialA

[Equipo del aula] Fija a qué temas del curso pertenece una lección, pregunta de quiz o de examen, tarjeta, juego o escenario. Reemplaza las asociaciones previas.

Inputs: kind (required), item_id (required), theme_ids (required), classroom_id (required).

set_offer_activeActivar o pausar una ofertaB

[Administrador del aula] Activa o pausa una oferta del aula. Confirma con la persona antes de activarla.

Inputs: active (required), offer_id (required), classroom_id (required).

set_publishedPublicar o pasar a borradorA

[Equipo del aula] Publica o pasa a borrador un curso, módulo o lección que puedes editar. Confirma con la persona antes de publicar.

Inputs: kind (required), item_id (required), published (required), classroom_id (required).

transfer_courseTransferir cursoA
Destructive

[Equipo del aula · irreversible] Transfiere la propiedad de un curso a otro docente. Solo quien lo creó. Pide confirmación explícita antes de hacerlo.

Inputs: confirm (required), course_id (required), classroom_id (required), new_owner_id (required).

update_courseEditar cursoA

[Equipo del aula] Cambia los datos de un curso que puedes editar. Solo se modifica lo que envíes. Confirma con la persona antes de publicar o cambiar la visibilidad.

Inputs: course_id (required), classroom_id (required), slug, title, +8 more.

update_examEditar examenA

[Equipo del aula] Cambia la configuración de un simulacro o examen. Solo se modifica lo que envíes. Confirma con la persona antes de publicar. Para activar el simulacro el examen necesita al menos 10 preguntas.

Inputs: exam_id (required), classroom_id (required), title, published, +13 more.

update_lessonEditar lecciónA

[Equipo del aula] Cambia los datos de una lección de un curso que puedes editar. Solo se modifica lo que envíes. Confirma con la persona antes de publicar.

Inputs: session_id (required), classroom_id (required), title, format, +7 more.

update_moduleEditar móduloA

[Equipo del aula] Cambia los datos de un módulo de un curso que puedes editar. Solo se modifica lo que envíes. Confirma con la persona antes de publicar.

Inputs: module_id (required), classroom_id (required), kind, title, +6 more.

update_offerEditar ofertaA

[Administrador del aula] Reemplaza los datos de una oferta del aula (nombre, tipo, valor, cursos, vigencia y cupos). Envía todos los campos, no solo lo que cambia; consulta list_offers primero. El estado activo/pausado no cambia: usa set_offer_active.

Inputs: kind (required), name (required), offer_id (required), course_ids (required), +7 more.

update_scenarioEditar escenarioA

[Equipo del aula] Cambia un escenario y su respuesta de referencia. Solo se modifica lo que envíes. Confirma con la persona antes de publicar.

Inputs: scenario_id (required), classroom_id (required), title, question, +10 more.

Tool Schema Changelog

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

    TDQS

    B3.3/5.0

    Scored across 77 tools

    Disambiguation3/5

    Most tools target distinct resource+action pairs, and the descriptions explicitly distinguish bulk vs. single-item variants (add_quiz_questions vs. save_quiz_question, import_exam vs. create_exam + add_exam_questions). However, there is genuine redundancy: import_module_content and import_exam overlap with create_lesson/create_module + add_* flows, save_* upserts overlap with create_/update_ pairs, and publish flags inside create/import tools overlap with set_published. With 77 tools the agent must read carefully to avoid misselection.

    Naming Consistency3/5

    All names are snake_case verb_noun, which is readable, but the verb convention is not uniform across domains: some entities use separate create_/update_ pairs (course, module, lesson, exam, scenario, offer) while others use a single save_ upsert (theme, collection, quiz question, flashcard, game, exam question, scenario criterion), plus add_* for bulk content. This mixed convention is semantically meaningful but forces the agent to learn per-domain rules rather than one predictable pattern.

    Tool Count1/5

    77 tools is far beyond what an agent can comfortably handle in one surface and goes well past the 50+ threshold for extreme mismatch. Many tools are convenience wrappers (import_module_content, import_exam) around combinations of other tools, which inflates the count without adding unique capability. The surface would benefit from consolidation and grouping.

    Completeness4/5

    Coverage of the teaching-platform domain is broad: classrooms, courses, modules, lessons, quizzes, flashcards, exams, scenarios, games, themes, collections, offers, sales, members, chats, and progress are all represented with read/create/update/delete where appropriate. Minor gaps remain, such as reordering questions within a quiz/exam or bulk deletion, but the core lifecycle is well covered.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to directly operate Google Classroom, including checking submissions, listing students, and creating assignments and announcements, with self-hosted deployment for data privacy.
      -
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables AI assistants to interact with Google Classroom to check submission statuses, list students and assignments, and create coursework, announcements, and topics through natural language.
      -