Skip to main content
Glama
Julianmac-mac

Training Platform MCP G2

Training Platform MCP G2

¿Qué hace este proyecto?

Este repositorio contiene un servidor MCP (Model Context Protocol) en Python para registrar y consultar el progreso de cursos de usuarios autenticados. El servidor expone herramientas para:

  • obtener el progreso actual de un usuario (get_course_progress)

  • guardar el avance de curso y etapa (save_course_progress)

La aplicación valida tokens de acceso y persiste los datos en SQL Server.

Related MCP server: sqlserver-mcp-colossal

Estructura principal

  • main.py: punto de entrada del servidor MCP.

  • mcp.yaml: configuración del servidor y namespace.

  • db.py: conexión y operaciones con SQL Server para el MCP de progreso de cursos.

  • db_init.sql: script SQL para crear la estructura de base de datos.

  • init_db.py: script de inicialización local de la base de datos.

  • docker-compose.yml: configuración de desarrollo con Docker Compose.

  • namespaces/training_platform_mcp_g2/handlers.py: tools, recurso y prompt del namespace.

  • namespaces/training_platform_mcp_g2/auth.py: extracción y validación del token.

  • namespaces/training_platform_mcp_g2/config.py: definición del namespace.

  • tests/: pruebas automáticas que validan la configuración del namespace y que el proyecto no acumule código ajeno a su alcance.

Requisitos

  • Python 3.10+

  • Docker y Docker Compose (opcional)

  • SQL Server (local o remoto)

  • Variables de entorno correctamente configuradas

Configuración rápida

  1. Copia .env.example a .env:

copy .env.example .env
  1. Ajusta las variables:

DB_HOST=<host_sql_server>
DB_PORT=1433
DB_USER=<usuario_sql>
DB_PASSWORD=<password_sql>
DB_NAME=HistorialCursos
SA_PASSWORD=<password_sql_server>
GO_BASE_PATH=<go_base_path>
SERVER_HOST=0.0.0.0
SERVER_PORT=8000
  1. Instala las dependencias:

pip install -r requirements.txt
  1. Inicia el servidor directamente:

python main.py
  1. O usa Docker Compose:

docker compose up --build

Docker Compose cargará las variables desde el archivo .env.

Variables de entorno importantes

  • DB_HOST: host del servidor SQL Server

  • DB_PORT: puerto de SQL Server

  • DB_USER: usuario de SQL Server

  • DB_PASSWORD: contraseña de SQL Server

  • DB_NAME: nombre de la base de datos

  • SA_PASSWORD: contraseña del usuario sa para SQL Server (solo Docker Compose)

  • GO_BASE_PATH: URL base para validar tokens

  • SERVER_HOST: host del servidor MCP

  • SERVER_PORT: puerto del servidor MCP

Inicialización de la base de datos

El proyecto incluye el script db_init.sql para crear la base de datos y las tablas necesarias.

Opción 1: usar Docker Compose

Si levantás el stack con Docker Compose, el contenedor de SQL Server se inicializa con el script incluido y queda listo para el servidor MCP.

Opción 2: inicializarla manualmente

Si ya tenés SQL Server corriendo, podés ejecutar el script desde una herramienta como sqlcmd o desde tu cliente SQL Server:

sqlcmd -S <host> -U <usuario> -P <password> -i db_init.sql

El script crea:

  • courses: catálogo de cursos

  • stages: etapas del flujo de aprendizaje

  • student_progress: registro del progreso de cada usuario

Uso básico

get_course_progress

Recupera el curso y la etapa actuales del usuario autenticado.

save_course_progress

Guarda o actualiza el progreso de un usuario autenticado.

get_user_email

Devuelve el email del usuario autenticado a partir del token de acceso.

Tests

El proyecto incluye pruebas automáticas en tests/ que verifican:

  • que config.py declare correctamente las tools del namespace;

  • que db.py no acumule código fuera del alcance del training platform (progreso de cursos);

  • que no aparezcan restos de otras funcionalidades en ningún archivo del repo.

Para correrlas:

pip install pytest
pytest tests/ -v

Buenas prácticas para revisión

  • No subir archivos de configuración local ni secretos.

  • Mantener pip.conf, .env y venv/ fuera del repositorio.

  • Usar .env.example como plantilla de configuración.

  • Documentar los endpoints o tools disponibles.

Notas de seguridad

Este proyecto ya está configurado para leer la conexión a la base de datos desde variables de entorno en lugar de valores hardcodeados.

Notas de compatibilidad

El servidor está pensado para ejecutarse con el framework interno ffmcp y el patrón de autenticación go-token. Por eso, si se quiere levantar fuera del contexto de Finnegans, puede requerir ajustes adicionales de infraestructura o dependencias.

No debes subir nunca:

  • .env

  • pip.conf

  • pip.config

  • venv/ o .venv/

  • archivos con contraseñas, certificados o claves privadas

Related MCP Connectors

Related MCP Servers