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)和解析以查找事件(即将到来的课程、可用性)。
- 支持可用性请求期间的可选时间限制(参数
startetend).
先决条件
- 推荐使用Python 3.10+。
- 中列出的依赖项
requirements.txt(使用虚拟环境)
安装速度快
- 创建并激活虚拟环境(Windows PowerShell):
python -m venv devenv
.\devenv\Scripts\Activate.ps1- 安装依赖项:
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
发展建议:
- 激活开发环境。
- 如果需要,安装开发依赖项。
- 启动
index.py并通过MCP客户端或模拟调用测试工具。
测试
此存储库中(尚未)包含测试套件。要添加测试:
- 添加
pytest至requirements.txt哦requirements-dev.txt. - 编写单元测试
utils.py(解析ICS/JSON、构建URL、搜索条目)。
使用示例(MCP客户端)
MCP客户端可以调用该工具 prochain_cours 通过传递一个名字。答案是一个JSON对象,包含 ok, source,et next (ou error).
贡献者
欢迎贡献:问题、添加测试的PRS、增强ICS/JSON解析的鲁棒性或添加其他MCP工具。
许可证
此存储库不包括文件 LICENSE.如果要声明显式许可证,请添加一个。
______________________________________________________________________
