内容
# eClass MCP 服务器
用于与 [Open eClass](https://github.com/gunet/openeclass) 平台交互的 MCP 服务器,支持 UoA 的 SSO 认证。
<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+">
</p>
<p align="center">
<img src="assets/example.png" alt="示例用法" width="600">
</p>
## 功能
- **SSO 认证**:通过 UoA 的 CAS SSO 系统登录
- **课程检索**:获取已注册课程列表
- **会话管理**:工具调用之间的持久会话
- **状态检查**:验证认证状态
## 快速入门
### 前提条件
- Python 3.10+
- [uv](https://github.com/astral-sh/uv)(推荐)或 pip
### 安装
```bash
git clone https://github.com/sdi2200262/eclass-mcp-server.git
cd eclass-mcp-server
uv sync --dev --all-extras
```
### 配置
创建 `.env` 文件(或复制 `example.env`):
```bash
ECLASS_USERNAME=您的用户名
ECLASS_PASSWORD=您的密码
```
可选设置:
```bash
ECLASS_URL=https://eclass.uoa.gr # 默认
ECLASS_SSO_DOMAIN=sso.uoa.gr # 默认
ECLASS_SSO_PROTOCOL=https # 默认
```
### 运行
```bash
# 使用入口点脚本
python run_server.py
# 或作为模块
python -m src.eclass_mcp_server.server
```
## MCP 客户端配置
要将此 MCP 服务器与 Claude Desktop、VS Code、Cursor 或任何 MCP 兼容的客户端一起使用,请配置您的客户端以运行:
```bash
python3 /绝对路径/to/eclass-mcp-server/run_server.py
```
在客户端的 MCP 配置中设置以下环境变量:
```json
{
"env": {
"ECLASS_USERNAME": "您的用户名",
"ECLASS_PASSWORD": "您的密码"
}
}
```
**可选环境变量:**
- `ECLASS_URL` - OpenEclass 实例 URL(默认:`https://eclass.uoa.gr`)
- `ECLASS_SSO_DOMAIN` - SSO 域名(默认:`sso.uoa.gr`)
- `ECLASS_SSO_PROTOCOL` - SSO 协议(默认:`https`)
请参阅您特定客户端的文档,了解如何将 MCP 服务器添加到您的配置中。
## 可用工具
| 工具 | 描述 |
|------|-------------|
| `login` | 使用 `.env` 中的凭证认证 |
| `get_courses` | 检索已注册课程(需要登录) |
| `logout` | 结束当前会话 |
| `authstatus` | 检查认证状态 |
所有工具都使用虚拟的 `random_string` 参数(MCP 协议要求)。
## 独立客户端
对于非 MCP 用例,包含了一个独立的客户端:
```bash
python eclass_client.py
```
这演示了核心功能,无需 MCP 集成。有关详细信息,请参见 [docs/architecture.md](docs/architecture.md)。
## 文档
- [架构](docs/architecture.md) - 系统设计和认证流程
- [线路协议](docs/reference/wire-protocol.md) - JSON-RPC 消息格式
- [工具参考](docs/reference/tools-reference.md) - 详细工具文档
## 项目结构
```
eclass-mcp-server/
├── run_server.py # 入口点
├── eclass_client.py # 独立客户端(非 MCP)
├── src/eclass_mcp_server/ # 主包
│ ├── server.py # MCP 服务器和工具处理程序
│ ├── authentication.py # SSO 认证
│ ├── course_management.py # 课程操作
│ └── html_parsing.py # HTML 解析实用程序
└── docs/ # 文档
```
## 安全
- 凭证仅存储在本地的 `.env` 中
- 绝不作为工具参数传递(防止 AI 提供商暴露)
- 会话仅在内存中维护
- 无云服务或远程存储
## 许可证
[GNU GPL v3.0](LICENSE) - 这确保了凭证处理的透明度。
## 致谢
- [GUnet](https://github.com/gunet) 提供 [Open eClass 平台](https://github.com/gunet/openeclass)
- 本项目是一个独立的接口,与 GUnet 无关