MCP UJI Academic Server

MCP UJI Academic Server

Enables querying academic data such as subjects, degrees, locations, and schedules from Universitat Jaume I via MCP tools.

Category
访问服务器

README

MCP UJI Academic Server

Servidor HTTP del Model Context Protocol (MCP) que expone la información académica de la Universitat Jaume I (UJI). Permite consultar asignaturas, titulaciones, ubicaciones y calendarios oficiales desde clientes MCP compatibles y desde integraciones HTTP sencillas.

✨ Características clave

  • 🎓 Acceso unificado a datos académicos (asignaturas, estudios, ubicaciones y horarios)
  • 🌐 Soporte multiidioma cuando la API lo proporciona (catalán, español e inglés)
  • ⚡ Caché en memoria para reducir llamadas repetidas a la API de la UJI
  • 🧰 Ocho herramientas MCP listas para usar y compatibles con MCP Inspector
  • 🛡️ Modelos Pydantic y manejo consistente de errores para clientes remotos

🏗️ Arquitectura

El servidor MCP UJI Academic actúa como intermediario entre clientes MCP compatibles y la API pública de la Universitat Jaume I, facilitando el acceso a datos académicos a través del protocolo JSON-RPC 2.0.

sequenceDiagram
    participant Cliente as Cliente MCP<br/>(Claude Desktop, VS Code, etc.)
    participant Servidor as Servidor MCP<br/>UJI Academic
    participant API as API UJI

    Cliente->>Servidor: Conectar a /mcp (HTTP)
    Servidor-->>Cliente: Confirmación de conexión

    Cliente->>Servidor: Llamada a herramienta<br/>(e.g., get_subjects)
    activate Servidor
    Servidor->>API: Consulta datos académicos<br/>(GET /api/subjects)
    API-->>Servidor: Respuesta JSON con datos
    Servidor-->>Cliente: Resultado de la herramienta
    deactivate Servidor

    Note over Cliente,Servidor: Comunicación vía JSON-RPC 2.0 sobre HTTP
    Note over Servidor,API: Comunicación HTTP con caché en memoria

🚀 Inicio rápido

  1. Instala dependencias: git clone <repository-url> && cd MCP_UJI_academic && uv sync
  2. Ejecuta el servidor: uv run start_server.py --host 127.0.0.1 --port 8084
  3. Conecta un cliente MCP: Usa la URL http://127.0.0.1:8084/mcp en tu cliente MCP preferido (ver sección "🤖 Conectar clientes MCP").

Para Docker: docker compose up y conecta a http://localhost:8084/mcp.

🧱 Requisitos previos

  • Python 3.12 o superior
  • uv instalado como gestor de dependencias
  • Acceso a internet para consultar la API pública de la UJI
  • (Opcional) Docker y Docker Compose para ejecución contenerizada

🚀 Instalación y configuración

git clone <repository-url>
cd MCP_UJI_academic
uv sync

▶️ Ejecución del servidor

Nota: El servidor debe estar corriendo antes de conectar cualquier cliente MCP. Mantén la terminal abierta o ejecuta en segundo plano.

# Desarrollo local
uv run start_server.py --host 127.0.0.1 --port 8084

# Servidor accesible desde la red
uv run start_server.py --host 0.0.0.0 --port 8084

# Desarrollo con recarga automática
uv run start_server.py --host 127.0.0.1 --port 8084 --reload

start_server.py es un lanzador que arranca mcp_server.py con los parámetros indicados. Si prefieres usar directamente Python, ejecuta python start_server.py.

🐳 Ejecución con Docker

Nota: Asegúrate de que el contenedor esté corriendo antes de conectar clientes MCP. El servidor estará disponible en http://localhost:8084.

Construir y ejecutar la imagen manualmente

docker build -t mcp-uji-academic .
docker run --rm -p 8084:8084 mcp-uji-academic

La API quedará disponible en http://localhost:8084. Puedes detener el contenedor con Ctrl+C o usando docker stop si lo ejecutas en segundo plano.

Orquestación con Docker Compose

# Levantar el servicio
docker compose up

# Levantar en segundo plano
docker compose up -d

# Detener y limpiar
docker compose down

El archivo docker-compose.yml expone el puerto 8084. Ajusta el mapeo si necesitas servirlo en otro puerto host (por ejemplo - "9090:8084").

🌐 Endpoints HTTP principales

Método Ruta Descripción
GET / Información básica del servidor
GET /health Comprobación rápida de estado
GET /tools Lista de herramientas MCP y sus esquemas de entrada
POST /mcp Endpoint MCP JSON-RPC 2.0 para clientes compatibles

Servidor remoto de referencia

  • URL base: http://<IP_SERVIDOR_REMOTO>:8084
  • Endpoint MCP: http://<IP_SERVIDOR_REMOTO>:8084/mcp
  • Health check: http://<IP_SERVIDOR_REMOTO>:8084/health

Sustituye la IP por la de tu despliegue cuando publiques el servidor en otro host.

🧰 Herramientas MCP disponibles

Herramienta Datos que devuelve Parámetros principales
get_subjects Listado paginado de asignaturas start, limit, full
search_subjects Búsqueda por código o nombre de asignaturas query, language
get_degrees Catálogo completo de titulaciones full
search_degrees Búsqueda de titulaciones query, language
get_locations Ubicaciones (edificios, aulas, laboratorios) full
search_locations Búsqueda de ubicaciones query
get_class_schedule Horario lectivo en formato iCalendar year, degree_id
get_exam_schedule Calendario de exámenes en formato iCalendar year, degree_id

Todas las herramientas devuelven JSON estructurado y, cuando procede, información en múltiples idiomas.

🤖 Conectar clientes MCP

Importante: El servidor MCP debe estar corriendo (localmente o en Docker) antes de conectar cualquier cliente. Verifica con curl http://127.0.0.1:8084/health o curl http://localhost:8084/health para Docker.

Recomendaciones generales

  • El endpoint MCP habla JSON-RPC 2.0 sobre HTTP; cualquier cliente compatible puede usarlo.
  • Asegúrate de que el puerto (8084 por defecto) esté accesible desde tu máquina o túnel SSH.
  • Para entornos públicos, añade autenticación o proxies seguros según tus políticas.
  • Si usas Docker localmente: el servidor estará disponible en http://localhost:8084/mcp. Asegúrate de que el contenedor esté corriendo antes de conectar clientes.

MCP Inspector (npx)

npx @modelcontextprotocol/inspector
  1. Abre el navegador (suele abrir http://localhost:3000).
  2. Selecciona Streamable HTTP como transporte.
  3. Introduce la URL del endpoint (http://127.0.0.1:8084/mcp si usas Docker localmente, o http://<IP_SERVIDOR_REMOTO>:8084/mcp para el servidor remoto).
  4. Pulsa Connect y prueba cualquiera de las ocho herramientas disponibles.

VS Code (extensión MCP)

Añade al settings.json del usuario o del workspace:

{
  "mcp.servers": {
    "mcp-uji-academic": {
      "transport": "http",
      "url": "http://127.0.0.1:8084/mcp"
    }
  }
}

Si usas un túnel SSH:

ssh -L 8084:localhost:8084 usuario@IP_SERVIDOR_REMOTO

Y cambia la URL a http://127.0.0.1:8084/mcp.

Claude Desktop

Claude Desktop no puede llamar a un servidor HTTP remoto por sí mismo: solo lanza comandos locales. Por eso necesitas que el servidor MCP esté disponible en tu máquina antes de arrancar Claude.

Añade a tu claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-uji-academic": {
      "command": "uv",
      "args": [
        "run",
        "start_server.py",
        "--host",
        "127.0.0.1",
        "--port",
        "8084"
      ],
      "cwd": "/ruta/completa/a/MCP_UJI_academic"
    }
  }
}
  • Ajusta cwd a la ruta real del proyecto.
  • El comando dentro de args debe ir en una sola línea; JSON no admite saltos manuales (\) dentro de strings.
  • Reinicia Claude Desktop tras modificar el archivo para que recargue la configuración.

npx @modelcontextprotocol/inspector es una herramienta de testing. VS Code y Claude necesitan configuraciones JSON propias.

🧪 Pruebas y verificación

# Test de integración (arranca el servidor temporalmente y verifica endpoints)
# Asegúrate de que el puerto 8084 esté libre antes de ejecutar
uv run python integration_test.py

# Checks manuales rápidos
curl http://127.0.0.1:8084/health
curl -X POST http://127.0.0.1:8084/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "ping"}'

📁 Estructura del proyecto

MCP_UJI_academic/
├── api_client.py       # Cliente HTTP con caché y parseo iCalendar
├── integration_test.py # Prueba de arranque y endpoints HTTP
├── mcp_server.py       # FastAPI con endpoints HTTP y MCP JSON-RPC
├── models.py           # Modelos Pydantic para datos académicos
├── start_server.py     # Lanzador de conveniencia
├── pyproject.toml      # Configuración y dependencias
└── README.md           # Documentación (este archivo)

🛠️ Resolución de problemas

Problema Cómo solucionarlo
Puerto 8084 ocupado lsof -i :8084 para identificar el proceso. Mata el proceso o usa --port 8001 para cambiar el puerto.
Timeout o conexión rechazada Verifica que el servidor esté corriendo con curl http://<host>:8084/health. Comprueba firewall o túnel SSH.
Dependencias inconsistentes con uv Ejecuta uv sync --reinstall para reinstalar dependencias.
Errores de la API pública de la UJI Revisa los logs del servidor; la API puede ser lenta o intermitente. Reintenta más tarde.
Docker: contenedor no responde Asegúrate de que el puerto esté mapeado correctamente (-p 8084:8084). Usa docker logs <container_id> para ver logs.
Claude Desktop no conecta Verifica que el comando en claude_desktop_config.json sea correcto y que cwd apunte a la ruta del proyecto. Reinicia Claude.

🌍 API externa usada

  • Base URL: https://ujiapps.uji.es/lod-autorest/api/
  • Datos disponibles: asignaturas, estudios, ubicaciones y calendarios en JSON/iCalendar

📄 Licencia y soporte

  • Licencia: MIT
  • ¿Dudas o incidencias? Abre un issue, revisa la tabla de solución de problemas o ejecuta el test de integración antes de reportar.

Proyecto creado para facilitar el acceso programático a la información académica de la UJI dentro del ecosistema MCP. ¡Aprovecha y automatiza tus flujos educativos!

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选