课程时间表查询服务

一个基于Python的MCP服务器,提供查询课程时间表和教室可用性的功能,适用于大学课程管理。

  • by Infuseting
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Infuseting/MCPEdtUnicaen

使用说明

EDT Unicaen-Serveur MCP(模型上下文协议)

该存储库包含一个最小的模型上下文协议(MCP)服务器,该服务器公开了卡昂大学(UNICAEN)用于查询时间表(EDT)的工具。

服务器使用Python实现,并提供MCP工具(通过 mcp.server.fastmcp)检索教师、房间或学生的下一节课,并检查房间的可用性。

要点

  • 名称:EDT Unicaen MCP服务器
  • 主要文件: index.py, utils.py
  • 展示的MCP工具: prochain_cours, disponibilite_salle
  • 健康端点: /health

功能

  • 从输入元数据构建ADE(第三方端点)更新URL。
  • 通过HTTP检索更新(JSON或ICS)和解析以查找事件(即将到来的课程、可用性)。
  • 支持可用性请求期间的可选时间限制(参数 start et end).

先决条件

  • 推荐使用Python 3.10+。
  • 中列出的依赖项 requirements.txt (使用虚拟环境)

安装速度快

  1. 创建并激活虚拟环境(Windows PowerShell):
python -m venv devenv
.\devenv\Scripts\Activate.ps1
  1. 安装依赖项:
pip install -r requirements.txt

配置

可以通过环境变量配置服务器行为:

  • MCP_HOST -侦听地址(默认) 127.0.0.1)
  • MCP_PORT -HTTP端口(默认) 8000)
  • MCP_MOUNT -MCP装载路径(默认) /mcp)
  • MCP_SSE_PATH -SSE路径(默认) /sse)
  • MCP_MESSAGE_PATH -消息路径(默认) /messages/)
  • MY_EDT -呼叫者未提供名称时使用的默认名称(预期格式: PRENOM NOM)

示例(PowerShell):

$env:MCP_PORT = '8000'
$env:MY_EDT = 'Jean Dupont'

用法

在标准模式(stdio)下启动服务器:

python index.py

服务器启动MCP服务器并公开其中声明的工具 index.py.

有用的端点

  • /health (get)-返回一个简单的JSON以验证服务器是否处于活动状态。

MCP工具可通过中间件层访问-请参阅代理/EDT使用的调度和MCP客户端。

提供的MCP工具

  • prochain_cours(nom: Optional[str]) -> dict :

    • 返回给定名称(教授/教室/学生/大学)的下一个事件(ISO日期/时间、摘要)。
    • 是 nom 不存在或等于 me/moi/self,服务器使用 MY_EDT 是的,配置。
    • 在文件中搜索 assets/*.json,构造ade URL,获取资源,并尝试解析JSON或ICS以提取下一个事件。
  • disponibilite_salle(nom: Optional[str], start: Optional[str], end: Optional[str]) -> dict :

    • 指示房间现在是否空闲,如果没有,直到什么时候才被占用。
    • 设置 start/end 可能是几个小时 HH:MM 或ISO日期时间以限制搜索窗口。

返回包括完整ISO格式的日期/时间(例如: 2025-10-25T08:00:00).

数据/资产

乐档案 assets/ 包含几个示例JSON文件:

  • prof.json -教师元数据
  • salle.json -房间元数据
  • student.json -学生元数据
  • univ.json -一般元数据/时间表

这些文件用作解析EDT名称和构建ADE URL的本地源。

发展

  • 代码负责人: index.py
  • 解析/解析实用功能: utils.py

发展建议:

  1. 激活开发环境。
  2. 如果需要,安装开发依赖项。
  3. 启动 index.py 并通过MCP客户端或模拟调用测试工具。

测试

此存储库中(尚未)包含测试套件。要添加测试:

  1. 添加 pytest 至 requirements.txt 哦 requirements-dev.txt.
  2. 编写单元测试 utils.py (解析ICS/JSON、构建URL、搜索条目)。

使用示例(MCP客户端)

MCP客户端可以调用该工具 prochain_cours 通过传递一个名字。答案是一个JSON对象,包含 ok, source,et next (ou error).

贡献者

欢迎贡献:问题、添加测试的PRS、增强ICS/JSON解析的鲁棒性或添加其他MCP工具。

许可证

此存储库不包括文件 LICENSE.如果要声明显式许可证,请添加一个。