README
🚀 eClass MCP 服务器
eClass MCP 服务器提供了一个独立于官方平台的接口,支持与支持模型上下文协议(MCP)的 AI 代理直接交互,可用于检索 eClass 课程信息等,且确保了凭证处理的安全性。
🚀 快速开始
eClass 是希腊大学网络 (GUnet) 开发和维护的开源学习管理系统,用于希腊学术机构。本项目提供了一个独立于官方平台的接口,并尊重其使用条款和服务条款。
✨ 主要特性
- AI 集成:支持与支持模型上下文协议(Model Context Protocol, MCP)的 AI 代理(如 Claude 或其他大语言模型(LLMs))直接交互。
- 课程信息:可以检索课程信息、查看公告、访问材料和提交作业(未来功能)。
- 安全设计:确保凭证处理的安全性,防止敏感数据泄露。
🔧 技术细节
核心组件
-
MCP 服务器
- 在本地运行。
- 不依赖任何云服务。
- 通过环境变量存储凭证。
- 使用随机字符串作为占位符参数。
-
AI 客户端隔离
- AI 客户端无法访问真实凭证。
- 防止凭证被存储或处理在远程服务器。
- 确保所有操作直接与 eClass 通信。
核心协议
- 使用环境变量存储配置信息:
e_class_host,e_class_username,e_class_password。 - 支持的工具命令:
login:初始化会话并获取 CAS 票据。get_courses:返回当前登录用户的所有课程列表。logout:注销当前会话。
安全机制
- 本地运行:服务器在本地执行,不使用任何云服务。
- 内存化会话管理:会话 cookie 和状态仅存储在内存中,不会持久化到磁盘。
- 直接认证:通过大学的 CAS 机制与 eClass 直接通信。
💻 使用示例
基础用法
import asyncio
from eclass_mcp_client import MCPClient, ServerConfig
async def main():
# 配置服务器参数
server_config = ServerConfig(
host="your_e_class_url",
username="your_username",
password="your_password"
)
async with MCPClient(server_config) as client:
try:
# 登录
login_result = await client.call_tool("login", {"random_string": "dummy"})
print(login_result)
# 获取课程列表
courses_result = await client.call_tool("get_courses", {"random_string": "dummy"})
print(courses_result)
# 注销
logout_result = await client.call_tool("logout", {"random_string": "dummy"})
print(logout_result)
except Exception as e:
print(f"Error occurred: {e}")
if __name__ == "__main__":
asyncio.run(main())
📚 详细文档
安全注意事项
凭证保护
- 环境变量存储:凭证仅存放在本地
.env文件中。 - 避免明文传输:所有工具使用随机字符串作为占位符,AI 客户端无法获取真实凭证。
- 物理机隔离:只在受信任的设备上运行。
推荐实践
- 不要将
.env文件提交到版本控制中。 - 及时清理不再使用的服务器实例。
- 使用强密码策略保护用户账户。
许可证信息
本项目遵循 GNU 通用公共许可证第 3 版(GPLv3),允许免费使用、修改和分发,但必须在重新分发或派生作品中包含原始版权声明。
通过以上介绍,eClass MCP 服务器为开发者提供了一个安全可靠的方式来集成 AI 代理与学习管理系统之间的交互。
Scan to contact