eClass-MCP服添加福利群:解决AI开发者的「MCP实战痛点」一个用于与Open eClass平台实例交互的MCP服务器,特别支持UoA的SSO认证系统。
该服务器允许AI代理认证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
推荐使用 UV 安装服务器:
# 克隆仓库
git clone https://github.com/yourusername/eClass-MCP-server.git
cd eClass-MCP-server
# 安装依赖项
uv sync --dev --all-extras

或者,使用pip安装:
pip install -e .
在根目录下创建一个.env文件,包含以下配置(或者复制并重命名提供的example.env文件):
ECLASS_URL=https://eclass.uoa.gr ECLASS_USERNAME=your_username ECLASS_PASSWORD=your_password
所有凭据必须在.env文件中提供。服务器不接受参数形式的凭据。
使用入口脚本运行服务器:
python run_server.py
或者作为模块运行:
python -m src.eclass_mcp_server.server
(0.48版本及以上)
前往设置 -> MCP。点击 添加新的全局MCP服务器:
这将打开全局的mcp.json文件:
{ "mcpServers": { "server-name": { "command": "python", "args": ["absolute\\path\\to\\eclass-mcp-server\\run_server.py"] } } }
或者在args字段中尝试这种路径格式:
absolute/path/to/eclass-mcp-server/run_server.py
此命令运行run_server.py脚本,该脚本将MCP客户端连接到server.py中的主服务器入口点。
在Claude Desktop中使用:
run_server.py脚本的路径服务器提供以下工具供 MCP 客户端使用:
使用 SSO 认证登录 eClass。
{
"random_string": "any_value"
}

检索已注册课程的列表(需要先登录)。
{
"random_string": "any_value"
}

从 eClass 注销。
{
"random_string": "any_value"
}

检查当前的认证状态。
{
"random_string": "any_value"
}

该仓库包含 eclass_client.py,这是一个用于与 eClass 平台交互的独立客户端。这是最初的实现,也是创建 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/ 目录下:
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())

该MCP服务器旨在与支持模型上下文协议的AI智能体一起使用。这使AI系统能够直接与eClass交互,从而实现以下功能:
eClass MCP 服务器的设计将安全性作为首要任务,尤其是在凭据处理方面:
.env 文件中random_string).env 文件,切勿将其提交到版本控制系统本项目根据 GNU 通用公共许可证 v3.0 许可——详情请参见 LICENSE 文件。
GPL-3.0 许可证是一个强大的复制左许可证,要求任何分发此代码或衍生作品的人都必须以相同条款提供源代码。要点:
我们选择 GPL-3.0 许可证是为了:
此许可证对于此软件尤其重要,因为它处理身份验证和敏感凭据。GPL-3.0 确保此代码的任何修改都保持透明,允许用户验证其凭据的处理方式。
欢迎贡献! 请随意提交拉取请求。