该项目遵循模块化架构以提高可维护性:
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
重要提示:确保安装了 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"
]
}
}
}
重要注意事项:
/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。
要在 Claude Desktop 中使用:
run_server.py 脚本的路径服务器提供了以下工具供 MCP 客户端使用:
使用 SSO 身份验证登录到 eClass。
{
"random_string": "任意值"
}
检索已注册课程列表(需先登录)。
{
"random_string": "任意值"
}
从 eClass 注销。
{
"random_string": "任意值"
}
检查当前认证状态。
{
"random_string": "任意值"
}
仓库包括 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 确保对此代码的任何修改保持透明,允许用户验证他们的凭证是如何被处理的。
欢迎贡献!请随意提交 Pull Request。