Skip to main content
Glama

iGuat-MCP

Servicio MCP (Model Context Protocol) de solo lectura para los datos del campus de iGuihang. El proyecto se basa en Python, FastMCP y Streamable HTTP, y expone consultas de horarios, clases y campus como herramientas estándar que los clientes de IA pueden invocar.

Este proyecto solo ofrece capacidades de consulta; no modifica el miniprograma de WeChat ni los datos académicos de origen.

Funcionalidades

  • Obtener la lista completa de semestres, el semestre actual y el siguiente

  • Buscar clases por especialidad, grado y palabra clave de clase

  • Consultar el horario de una clase, semestre y semana específicos

  • Consultar el horario de una persona específica y eliminar los campos de identidad antes de devolver la respuesta

  • Inferir el campus según la información de la especialidad

  • Caché de horarios con TTL integrado, límite de concurrencia y comprobación de estado

  • Protección de las interfaces MCP y de administración mediante Bearer API Key

  • Soporte para actualizar en caliente el token de origen a través de la interfaz de administración

  • Soporte para despliegue con Docker, variables de entorno y Docker Secrets

Related MCP server: sanxiao-mcp

Herramientas MCP

Herramienta

Descripción

get_xnxq

Obtiene la lista completa de semestres, incluidos el actual y el siguiente

get_current_term

Obtiene el semestre actual

search_classes

Busca clases según condiciones

get_class_schedule

Obtiene el horario de una clase, semestre y semana específicos

get_ta_schedule

Consulta el horario por nombre o número de estudiante; la respuesta elimina los campos de identidad

infer_major_campus

Infiere el campus según la información de la especialidad

Pila tecnológica

  • Python 3.11+

  • MCP / FastMCP

  • HTTPX

  • Uvicorn

  • Pytest

  • Docker

Inicio rápido

Ejecución local

git clone https://github.com/Strayed2SE/iGuat-MCP.git
cd iGuat-MCP

python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate
pip install -e ".[test]"

cp .env.example .env
# 按下方说明配置环境变量后启动
python server.py

El servicio escucha por defecto en 0.0.0.0:8000:

  • MCP: http://127.0.0.1:8000/mcp

  • Comprobación de estado: http://127.0.0.1:8000/healthz

Cabeceras de solicitud del cliente MCP:

Authorization: Bearer <MCP_PUBLIC_API_KEY>

Docker

docker build -t iguat-mcp .
docker run --rm -p 8000:8000 --env-file .env iguat-mcp

En producción se recomienda usar la forma NAME_FILE para cargar configuraciones sensibles desde Docker Secrets o archivos de solo lectura:

docker run --rm -p 8000:8000 \
  -e IGUAT_USER_TOKEN_FILE=/run/secrets/iguat_token \
  -e IGUAT_MAIN_SIGN_KEY_FILE=/run/secrets/main_sign_key \
  -e MCP_PUBLIC_API_KEY_FILE=/run/secrets/public_key \
  -e MCP_ADMIN_API_KEY_FILE=/run/secrets/admin_key \
  --mount type=bind,src=/secure/secrets,dst=/run/secrets,ro \
  iguat-mcp

Configuración

Copie .env.example y ajuste según sea necesario:

Variable

Propósito

IGUAT_USER_TOKEN

Token de consulta de origen

IGUAT_MAIN_SIGN_KEY

Clave de firma de la interfaz principal

IGUAT_CLASS_SIGN_KEY

Clave de firma de la interfaz de clases

IGUAT_CSM_SIGN_KEY

Clave de firma de la interfaz CSM

IGUAT_ALUMNI_SIGN_KEY

Clave de firma de la interfaz de antiguos alumnos

IGUAT_SITE_SIGN_KEY

Clave de firma de la interfaz del sitio

MCP_PUBLIC_API_KEY

Clave de acceso de los clientes MCP

MCP_ADMIN_API_KEY

Clave de acceso de la interfaz de administración

MCP_HOST / MCP_PORT

Dirección y puerto de escucha del servicio

MCP_CACHE_TTL

Segundos de caché de horarios; ponga 0 para desactivar la caché

MCP_MAX_CONCURRENCY

Número máximo de concurrencia

MCP_MAX_MAJOR_CLASSES

Límite de consulta de clases por especialidad

IGUAT_TRUST_ENV

Si se leen las variables de entorno de proxy y certificados del sistema

Actualizar el token de origen

Cuando el token de origen caduca, el administrador puede actualizar el token en memoria sin reiniciar el servicio:

curl -X PUT http://127.0.0.1:8000/admin/token \
  -H "Authorization: Bearer <MCP_ADMIN_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{"token":"<NEW_TOKEN>"}'

Pruebas

pip install -e ".[test]"
pytest -q

Notas de seguridad

  • No envíe tokens reales, claves de firma, API Keys ni .env al repositorio.

  • El servicio no devuelve tokens, firmas ni campos de identidad personal a los clientes MCP.

  • Por defecto no se leen las variables de entorno de proxy del sistema; solo configure IGUAT_TRUST_ENV=1 si el entorno de despliegue realmente lo requiere.

Proyectos relacionados

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    C
    maintenance
    Enables read-only querying of Kingdee's Three-Effect project management system, covering projects, reimbursements, loans, payments, working hours, and budgets, via MCP tools.
    28
    -
  • F
    license
    A
    quality
    C
    maintenance
    Enables read-only interaction with CMU Student Information Online data, including student context, schedules, grades, enrollment, account activity, and campus life through MCP tools.
    8
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables querying SCAU dormitory electricity usage, balance, lifetime consumption, and cost calculations through read-only MCP tools.
    4
    MIT