返回市场
e类MCP服务器

e类MCP服务器

作者:sdi22002626 星标更新:2025-11-09

项目介绍

eClass MCP 服务器

<p align="center"> <strong>与 Open eClass 平台实例交互的 MCP 服务器,特别支持 UoA 的 SSO 身份验证系统。</strong> </p> <p align="center"> <a href="https://github.com/modelcontextprotocol/python-sdk"><img src="https://img.shields.io/badge/MCP-Protocol-blue" alt="MCP 协议"></a> <a href="https://www.gnu.org/licenses/gpl-3.0"><img src="https://img.shields.io/badge/License-GPLv3-blue.svg" alt="许可证:GPL v3"></a> <img src="https://img.shields.io/badge/Python-3.10%2B-blue" alt="Python: 3.10+"> <img src="https://img.shields.io/badge/状态-开发中-orange" alt="状态: 开发中"> <a href="https://github.com/gunet/openeclass"><img src="https://img.shields.io/badge/Open-eClass-yellow" alt="Open eClass"></a> </p> <p align="center"> <a href="https://glama.ai/mcp/servers/@sdi2200262/eclass-mcp-server"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=3754127754,2029926618&fm=3081&app=3081&f=PNG?w=760&h=400" alt="eClass Server MCP 服务器" /> </a> </p> <p align="center"> <img src="assets/example.png" alt="用例示例"> </p> <p align="center"> <strong>此服务器使 AI 代理能够通过 eClass 进行身份验证,检索课程信息,并在平台上执行基本操作。</strong> </p>

功能

  • 身份验证:通过 UoA 的 CAS SSO 身份验证系统登录到 eClass
  • 课程管理:检索已注册课程列表
  • 会话管理:在工具调用之间维护经过身份验证的会话
  • 状态检查:验证身份验证状态

项目结构

该项目遵循模块化架构以提高可维护性:

eclass-mcp-server/
├── run_server.py               # 运行服务器的入口脚本
├── eclass_client.py            # 独立的 eClass 客户端(非 MCP)
├── pyproject.toml              # 项目配置和依赖项
├── .env                        # 环境变量(从 example.env 创建)
├── docs/                       # 文档
│   ├── README.md               # 文档概述
│   ├── how-it-works.md         # 核心实现解释
│   ├── mcp-sdk-integration.md  # 关于 MCP SDK 使用的详细信息
│   └── tools-reference.md      # 可用工具的参考
├── src/
    └── eclass_mcp_server/      # 主要包
        ├── __init__.py         # 包初始化
        ├── server.py           # 核心服务器实现和工具处理器
        ├── authentication.py   # 身份验证功能
        ├── course_management.py # 与课程相关的功能
        ├── html_parsing.py     # HTML 解析实用程序
        └── test/               # 功能验证测试脚本
            ├── __init__.py
            ├── test_login.py
            ├── test_courses.py
            └── run_all_tests.py

安装

先决条件

此服务器需要 Python 3.10 或更高版本。MCP SDK 版本 1.20.0+ 需要 Python 3.10+。

安装依赖项

使用 UV 安装服务器(推荐):

# 克隆仓库
git clone https://github.com/yourusername/eClass-MCP-server.git
cd eClass-MCP-server

# 安装依赖项
uv sync --dev --all-extras

或者使用 pip 安装:

# 使用 Python 3.10+
python3.11 -m pip install -e .
# 或者如果 python3 指向 3.10+
pip install -e .

配置

在根目录创建一个 .env 文件,包含以下配置(或复制并重命名提供的 example.env 文件):

ECLASS_URL=https://eclass.uoa.gr
ECLASS_USERNAME=你的用户名
ECLASS_PASSWORD=你的密码

所有凭据必须在 .env 文件中提供。服务器不接受作为参数的凭据。

使用方法

终端

使用入口脚本运行服务器:

python run_server.py

或者作为模块:

python -m src.eclass_mcp_server.server

Cursor

重要提示:确保安装了 Python 3.10+ 才能在 Cursor 中设置。

前往设置 -> MCP。点击 添加新的全局 MCP 服务器

这将打开全局 mcp.json 文件:

{
  "mcpServers": {
    "eclass-mcp-server": {
      "command": "/path/to/python3.11",
      "args": [
        "/绝对路径/to/eclass-mcp-server/run_server.py"
      ]
    }
  }
}

重要注意事项

  • 使用 Python 3.10+ 的完整路径(例如,/usr/local/bin/python3.11/opt/homebrew/bin/python3.11
  • run_server.py 的路径必须是绝对路径

示例(macOS 使用 Homebrew)

{
  "mcpServers": {
    "eclass-mcp-server": {
      "command": "/usr/local/bin/python3.11",
      "args": [
        "/Users/yourname/Documents/Projects/MCP/eclass-mcp-server/run_server.py"
      ]
    }
  }
}

此命令运行 run_server.py 脚本,该脚本连接 MCP 客户端与主服务器入口点 server.py

<p align="center"> <img src="assets/cursor-server.png" alt="Cursor 服务器卡片"> </p>

Claude Desktop

要在 Claude Desktop 中使用:

  1. 打开 Claude Desktop
  2. 前往设置 > 服务器
  3. 添加具有以下详细信息的新服务器:
    • 名称:eClass MCP
    • 命令:指向你的 run_server.py 脚本的路径
  4. 点击添加服务器
  5. 在与 Claude 聊天时从下拉菜单中选择服务器

工具

服务器提供了以下工具供 MCP 客户端使用:

登录

使用 SSO 身份验证登录到 eClass。

{
  "random_string": "任意值"
}

获取课程

检索已注册课程列表(需先登录)。

{
  "random_string": "任意值"
}

注销

从 eClass 注销。

{
  "random_string": "任意值"
}

认证状态

检查当前认证状态。

{
  "random_string": "任意值"
}

eClass 客户端(非 MCP)

仓库包括 eclass_client.py,这是一个独立的客户端,用于与 eClass 平台交互。这是最初实现,启发了 MCP 服务器的创建。

eClass 客户端的功能

  • 不带 MCP 集成的纯 Python 实现
  • 处理与 UoA 的 SSO 系统的完整认证流程
  • 从 eClass 检索课程信息
  • 提供干净的注销功能

此客户端既作为:

  1. 理解 eClass 认证流程的参考实现
  2. 对于不需要 MCP 集成的项目来说是一个更简单的替代方案

你可以直接运行客户端:

python eclass_client.py

测试

项目包括测试脚本来验证功能:

# 运行所有测试
python -m src.eclass_mcp_server.test.run_all_tests

# 运行特定测试
python -m src.eclass_mcp_server.test.test_login
python -m src.eclass_mcp_server.test.test_courses

文档

完整的文档在 docs/ 目录中可用:

示例 MCP 客户端使用

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
import asyncio

async def run_agent():
    server_params = StdioServerParameters(
        command="python /path/to/eclass-mcp-server/run_server.py",
    )
    
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            # 初始化会话
            await session.initialize()
            
            # 登录到 eClass
            login_result = await session.call_tool("login", {
                "random_string": "dummy"
            })
            print(login_result)
            
            # 获取课程
            courses_result = await session.call_tool("get_courses", {
                "random_string": "dummy"
            })
            print(courses_result)
            
            # 注销
            logout_result = await session.call_tool("logout", {
                "random_string": "dummy"
            })
            print(logout_result)

if __name__ == "__main__":
    asyncio.run(run_agent())

与 AI 代理集成

此 MCP 服务器设计用于与支持模型上下文协议的 AI 代理一起使用。这使得 AI 系统可以直接与 eClass 交互,允许的能力包括:

  • 检索课程信息
  • 查看课程公告
  • 访问课程材料
  • 提交作业(未来功能)

安全性

eClass MCP 服务器的设计将安全性放在首位,特别是关于凭证处理:

本地执行

  • 无云服务:MCP 服务器完全在您的本地机器上运行,没有云组件
  • 无远程存储:凭证和会话数据永远不会离开您的本地环境
  • 用户控制:您完全控制您的认证数据

凭证保护

  • 仅限环境变量:凭证仅存储在本地 .env 文件中
  • 不作为参数传递:所有工具都设计为使用虚拟参数(如 random_string
  • AI 客户端隔离:AI 客户端(如 Claude 或其他 LLMs)不会收到您的凭证
    • 这防止了凭证被:
      • 存储在 AI 提供商的日志中
      • 包含在模型训练数据中
      • 在远程服务器上处理

会话管理

  • 内存中的会话:会话 cookie 和状态仅在内存中维护
  • 无持久性:会话数据在运行之间不会被存储
  • 直接认证:MCP 服务器直接与 eClass 通信,除了您的大学的 CAS 机制外,没有中间人。

推荐做法

  • 安全地存储您的 .env 文件,且永远不要将其提交到版本控制系统
  • 只在受信任的机器上运行服务器
  • 不通过任何提示将参数传递给 MCP 客户端,它们不会被服务器使用,而是会被 AI 代理提供商访问

许可证

GNU 通用公共许可证 v3.0

此项目根据 GNU 通用公共许可证 v3.0 许可 - 详情见 LICENSE 文件。

这对您意味着什么

GPL-3.0 许可证是一种强有力的版权许可证,要求任何人分发此代码或衍生作品时,必须按照相同条款提供源代码。关键点:

  • 自由使用:您可以将此软件用于任何目的
  • 自由研究:您可以查看源代码以了解其工作原理
  • 自由分享:您可以重新分发软件
  • 自由修改:您可以根据需要调整软件

我们为什么选择 GPL-3.0

我们选择了 GPL-3.0 许可证来:

  1. 保护用户安全:确保任何处理凭证的修改必须是开源的,允许用户验证安全实现
  2. 促进共享:鼓励贡献回到社区
  3. 防止滥用:使恶意行为者更难创建封闭源码的衍生品,可能会危及安全
  4. 符合生态系统价值观:与 Open eClass 平台的价值观一致,该平台也是开源的

此许可证对于此软件尤其重要,因为它处理认证和敏感凭证。GPL-3.0 确保对此代码的任何修改保持透明,允许用户验证他们的凭证是如何被处理的。

致谢

  • GUnet(希腊大学网络) 开发和维护 Open eClass 平台,这是一个在希腊学术机构中使用的开源学习管理系统。
  • Open eClass 平台作为免费的开源软件发布,采用 GNU GPL v2.0 许可证,使得此类 MCP 集成成为可能。
  • 特别感谢 GUnet 异步 eLearning 团队持续开发和改进 eClass 平台。
  • 此项目是 Open eClass 系统的一个独立接口,未得到 GUnet 的认可或支持。它尊重 eClass 平台的服务条款,并使用适当的认证机制。

贡献

欢迎贡献!请随意提交 Pull Request。