Skip to main content
Glama

Servidor MCP de FCPC LMS

Un servidor MCP que permite a un asistente de IA responder preguntas sobre la cuenta de Moodle de un estudiante: tareas pendientes, mensajes no leídos, cuestionarios pendientes y cursos matriculados.

Los estudiantes se conectan desde Claude en la web, en un teléfono o en un escritorio registrando una URL. No hay software que instalar, ni tokens que copiar manualmente.

Creado para First City Providential College, pero funciona con cualquier sitio Moodle que tenga los servicios web habilitados.

Qué puede responder

  • Cuándo vencen tus tareas

  • Mensajes no leídos de profesores y compañeros

  • Cuestionarios que no has completado

  • En qué cursos estás matriculado

"Do I have any new messages?"
"What is due this week?"

Related MCP server: Moodle MCP Server

Dos formas de ejecutarlo

Servidor remoto

Servidor local

Para quién es

Una clase o toda una institución

Una persona, en su propia máquina

Cliente

Claude (web, iOS, Android, escritorio)

Cualquier cliente MCP en esa máquina

Configuración del estudiante

Una URL

Nada, pero necesita el repositorio instalado

Inicio de sesión

OAuth, gestionado por Claude

Un token en .env

Punto de entrada

remote_server.py

server.py

La mayoría de los despliegues quieren el servidor remoto.


Servidor remoto (recomendado)

Requisitos

  • Python 3.11 o más reciente

  • cloudflared (brew install cloudflared) o cualquier otra forma de exponer una dirección HTTPS

  • Una cuenta de Moodle en el sitio, usada una vez durante la configuración para registrar la dirección del sitio

Para el administrador

  1. Ejecuta setup.command (macOS) o setup.bat (Windows) una vez e inicia sesión. Esto escribe la dirección de tu sitio Moodle en .env.

  2. Ejecuta start-server.command. Imprime la URL para distribuir:

https://xxxx.trycloudflare.com/mcp

Cerrar esa ventana detiene el servidor, así que déjala abierta mientras el servicio esté en uso. Las direcciones gratuitas de trycloudflare.com cambian en cada reinicio; usa un túnel con nombre para una dirección fija.

Para los estudiantes

  1. Abre claude.ai en cualquier navegador, incluido un teléfono.

  2. Ve a Configuración → Conectores → Añadir conector personalizado.

  3. Dale cualquier nombre y pega la URL que te dieron.

  4. Claude abre la página de inicio de sesión de Moodle. Inicia sesión con tu nombre de usuario y contraseña habituales de Moodle.

Eso es toda la configuración. Después funciona también en las aplicaciones móviles de Claude.

Los conectores solo se pueden añadir desde el sitio web de Claude, pero un navegador de teléfono funciona bien. Una vez añadidos, se sincronizan con las aplicaciones.

Cómo funciona el inicio de sesión

Student's Claude ──HTTPS──▶ MCP server ──▶ Moodle
                 (OAuth)

Cada usuario se identifica mediante un inicio de sesión OAuth. Cuando un estudiante inicia sesión, su token de Moodle se cifra dentro del propio token de acceso y se devuelve a Claude.

  • El servidor no almacena tokens de Moodle ni contraseñas

  • Una contraseña se usa una vez para obtener un token y luego se descarta

  • Un usuario nunca puede ver los datos de otro usuario

.oauth_key (la clave de cifrado) y .oauth_clients.json son secretos. Ambos están excluidos de git. Eliminar .oauth_key cierra la sesión de todos.


Servidor local

Para ejecutar el servidor MCP en tu propia máquina, a través de stdio.

  1. Ejecuta setup.command / setup.bat, o:

python -m venv venv
source venv/bin/activate          # macOS/Linux
.\venv\Scripts\activate           # Windows PowerShell
pip install -r requirements.txt
python setup_gui.py
  1. Apunta tu cliente MCP a server.py. Por ejemplo, en el claude_desktop_config.json de Claude Desktop:

{
  "mcpServers": {
    "moodle": {
      "command": "/path/to/venv/bin/python",
      "args": ["/path/to/server.py"]
    }
  }
}

Para ver exactamente lo que recibe la IA:

python list_tools.py

También hay dos clientes de chat independientes, client.py (OpenAI) y client_localLLM.py (ollama). Ambos toman el script del servidor como argumento:

python client.py server.py

Pruebas

selftest.py comprueba todo lo que se puede comprobar sin un navegador: la conexión con Moodle, ambos servidores, el flujo OAuth hasta una llamada real a una herramienta, y que los usuarios no puedan ver los datos de los demás.

python selftest.py             # all checks
python selftest.py --offline   # skip anything needing the network

Sale con 0 cuando todo pasa e imprime los pasos manuales restantes: registrar el conector en Claude, iniciar sesión, hacer una pregunta y repetirlo en un teléfono.

Ejecútalo después de instalar, después de cambiar el código y en la máquina que alojará el servidor.


Notas sobre Moodle

Algunos sitios Moodle están detrás de Cloudflare y rechazan a los clientes HTTPS normales con HTTP 403. Por lo tanto, las solicitudes pasan por curl_cffi con una huella TLS de navegador. Esta es la razón por la que el servidor no se puede reimplementar en, por ejemplo, Apps Script, y por la que debería ejecutarse en algún lugar con una ruta de red de aspecto normal.

Los usuarios que inician sesión en Moodle a través de SSO (Google y similares) no pueden usar login/token.php. decode_token.py cubre ese caso.

Archivos

Archivo

Propósito

remote_server.py

Servidor MCP remoto con OAuth, para conectores de Claude

oauth_provider.py

Servidor de autorización OAuth; no almacena tokens

login_page.py

La página de inicio de sesión de Moodle que abre Claude

server.py

Servidor MCP local sobre stdio

moodle_client.py

Cliente de la API de Moodle, un token por instancia

moodle_auth.py

Obtención de tokens y manejo de .env

setup_gui.py

Asistente de configuración

setup.command / setup.bat

Configuración con doble clic (macOS / Windows)

start-server.command

Publica el servidor remoto (macOS)

selftest.py

Comprueba la instalación de principio a fin

list_tools.py

Imprime las herramientas que ve la IA

get_token.py

Obtiene un token desde la línea de comandos

decode_token.py

Extracción de tokens para usuarios de SSO

client.py, client_localLLM.py

Clientes de chat independientes

Créditos

El propio servidor MCP (server.py, client.py, client_localLLM.py) fue escrito por Jiseong JEONG (@jeongjisung690). Repositorio original: https://github.com/jeongjisung690/Moodle---MCP-server

Este repositorio añade:

  • Soporte para sitios Moodle detrás de Cloudflare

  • Obtención automática de tokens a partir de un nombre de usuario y contraseña

  • Extracción de tokens para usuarios de SSO

  • Un asistente de configuración para usuarios no técnicos

  • Un servidor MCP remoto con OAuth, para que los estudiantes se conecten con una sola URL

Licencia

No se ha establecido ninguna licencia. Por favor, contacta con los autores antes de usar o redistribuir este código.

F
license - not found
Not graded
quality - not tested
B
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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Moodle learning management systems through the Moodle REST API. Supports course management, user enrollment, assignments, forums, quizzes, and file operations through natural language.
    14
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Moodle learning management systems through the REST API. Supports course management, user enrollment, assignment handling, and forum operations through natural language.
    14
    MIT

View all related MCP servers

Related MCP Connectors

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

  • Connect AI assistants to ITM Platform projects, tasks, budgets, risks, and team workload.

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/Ogaaawa/FCPC-lms-mcp-server'

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