Skip to main content
Glama
aongzera

MyCourseVille MCP Server

by aongzera

Servidor MCP de MyCourseVille

Un servidor MCP que da acceso a un agente de IA a tu cuenta de MyCourseVille: nuevas tareas con sus fechas límite y descripciones, materiales del curso y calificaciones publicadas, además de un feed de "qué ha cambiado desde la última vez".

Una herramienta personal para los datos de tu propia cuenta. Mantén el intervalo de sondeo moderado y nunca hagas commit de tus credenciales.

Cómo funciona

MCV tiene una API OAuth2 oficial (/api/v1/public/get/*), pero requiere registrar una aplicación para obtener un client_id/client_secret, y sus nombres de endpoint no están documentados públicamente. Este servidor, en cambio, inicia sesión exactamente igual que el cliente web de MCV: a través del botón de IT Chula SSO por defecto, o con el formulario normal de MCV. Después lee las mismas páginas de curso procesadas por el servidor que el sitio muestra a un navegador: la página de inicio del curso para materiales, /assignment para fechas límite y /portfolio-<student id> para puntuaciones. Consulta docs/ENDPOINTS.md.

Los datos obtenidos se guardan en una instantánea local de SQLite. Cada sincronización compara los cambios con esa instantánea y agrega registros a un log de events — ese log es lo que lee whats_new, para que el servidor pueda decirte qué apareció desde la última vez que miraste. Un sondeo en segundo plano se actualiza en un intervalo, por lo que se detecta una nueva tarea incluso si no hay ningún chat abierto.

Sobre "nuevo": MCV no expone de forma confiable una marca de tiempo de publicación, así que first_seen —cuando este servidor observó un elemento por primera vez— se usa como sustituto. La primera sincronización completa los datos en silencio, en lugar de reportar todo tu semestre como nuevo.

Related MCP server: UofT Student Helper MCP Server

Instalación

uv sync --extra dev
cp .env.example .env      # then fill in MCV_USERNAME / MCV_PASSWORD
uv run mcv-mcp --selftest

--selftest inicia sesión, sincroniza una vez e imprime cuántos cursos, tareas, materiales y calificaciones encontró. Asegúrate de que funcione antes de conectar el agente.

Registra con Claude Code:

claude mcp add mcv -- uv --directory C:\Users\velys\Documents\mcp_mcv run mcv-mcp

Luego pregunta: "¿Qué tengo que entregar esta semana?", "¿Hay algo nuevo en MCV desde ayer?", "Descarga las últimas diapositivas de Comp Prog."

Herramientas

Herramienta

Para qué sirve

whats_new

Tareas, materiales y calificaciones nuevos o modificados desde un momento determinado

list_upcoming_deadlines

Lo que vence en los próximos N días, primero lo más próximo

list_courses

Cursos matriculados, opcionalmente de un semestre

list_assignments

Tareas con fecha límite + descripción

get_assignment

Detalle completo de una tarea

list_materials

Archivos publicados en un curso (copia, nombre, URL)

download_material

Guarda un archivo localmente; extrae el texto del PDF para que se pueda leer

list_grades

Calificaciones publicadas

sync_now

Fuerza una actualización (full=true para todos los semestres)

auth_status

Diagnóstico: estado de inicio de sesión, última sincronización, conteo de filas

Configuración

Variable

Valor por defecto

Significado

MCV_USERNAME / MCV_PASSWORD

Tus credenciales de MCV

MCV_LOGIN_METHOD

itchula

itchula para el botón IT Chula SSO, mcv para el formulario normal

MCV_POLL_MINUTES

30

Intervalo del sondeo (mínimo 10)

MCV_POLL_ENABLED

1

Establece 0 para desactivar el sondeo en segundo plano.

MCV_STATE_DIR

%LOCALAPPDATA%\mcv_mcp

Donde se guardan la base de datos, las cookies y las descargas

El estado se mantiene fuera del repositorio. Las cookies se conservan, por lo que los reinicios no requieren volver a iniciar sesión.

Ejecuta el sondeo por separado (por ejemplo, con el Programador de tareas) usando:

uv run python -m mcv_mcp.poller

Estructura

src/mcv_mcp/
  config.py    settings, URLs, state paths
  client.py    Chula SSO login, cookie persistence, throttled AJAX transport
  parsers.py   HTML -> dicts (pure functions, fixture-tested)
  store.py     SQLite snapshot + event log
  sync.py      orchestration + background poller
  server.py    MCP tool definitions

El marcado de MCV es la parte frágil y está confinado a parsers.py. Si algo deja de devolver filas, captura una copia de una prueba nueva (consulta docs/ENDPOINTS.md) y corrige el selector allí.

Estado

Funciona con una cuenta real: inicio de sesión, los cuatro analizadores, descargas y detección de cambios están verificados de extremo a extremo. Una sincronización representativa obtuvo 9 cursos, 20 tareas (todas con fecha límite analizada), 112 materiales y 69 elementos calificados; la siguiente sincronización reportó cero cambios, por lo que el registro de diferencias se mantiene en silencio hasta que algo realmente se mueva.

Limitaciones conocidas:

  • La publicación de calificaciones se detecta por sondeo, no por notificación. La aparición deuna calificación se muestra como un evento grade_changed dentro de un intervalo de sondeo (por defecto, 30 minutos).

  • Solo se sincroniza el semestre actual, a menos que pases full=true a sync_now.

  • El marcado de MCV es la parte frágil. Si un analizador comienza a devolver cero filas, captura una una prueba y corrige el selector; consulta docs/ENDPOINTS.md.

Desarrollo

uv run pytest
Install Server
F
license - not found
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

Related MCP Connectors

  • Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.

  • Brazilian Open Finance MCP — 30+ banks (Itaú, Nubank, etc.) to Claude/Cursor. Read-only.

  • Cross-AI personal memory. Save once in ChatGPT, recall in Claude, Mistral, Grok, or any MCP client.

View all MCP Connectors

Latest Blog Posts

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/aongzera/mcv-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server