--- name: educoder description: 提供头歌Educoder实践教学平台的查询服务,包括用户登录、课堂管理、作业查询、实训项目查询、考试管理等功能。 --- ## MCP 服务地址 - 本地开发:`http://localhost:8000/sse` - 远程服务:`http://143.64.38.7:37010/sse` > 使用 SSE 模式连接,客户端配置时填写上述地址之一即可。 ## 注意事项 - 不要用 copaw 调 mcp 服务,优先使用 npx mcporter。 - 头歌平台需要登录后才能使用,请确保环境变量配置正确。 ## 前置配置(只需一次) ### 第一步:设置环境变量 **macOS / Linux:** ``` export EDUCODER_LOGIN="你的头歌账号" export EDUCODER_PASSWORD="你的头歌密码" ``` **Windows(PowerShell):** ``` $env:EDUCODER_LOGIN="你的头歌账号" $env:EDUCODER_PASSWORD="你的头歌密码" ``` **Windows(CMD):** ``` set EDUCODER_LOGIN=你的头歌账号 set EDUCODER_PASSWORD=你的头歌密码 ``` > **没有配置账号密码?** 所有工具调用都会返回鉴权失败。请先完成上述步骤。 ### 第二步:运行安装脚本 **macOS / Linux:** ``` bash setup.sh ``` **Windows 或任何有 Node.js 的环境:** ``` node setup.js ``` > 具体配置文件路径取决于你使用的客户端(OpenClaw / CodeBuddy / Cursor 等),请参考对应文档。 ### 第三步:安装后验证 **安装成功后,必须立刻执行:`educoder_login` 以验证账号配置与服务是否可用。** - 判断登录失败 -> 提示检查账号密码是否正确 - 判断登录成功 -> 正常返回用户信息,说明配置成功 - 当用户提供账号密码后,需要帮助用户直接更新环境变量,不需要用户自己执行 --- ## 触发场景 ### 意图 → 工具 速查表 | 用户意图 | 调用工具 | |----------|---------| | 登录头歌 / 登录Educoder | `educoder_login` | | 查询账号 / 我的信息 / 我是谁 | `educoder_current_user` | | 查询我的课堂 / 我教了哪些课 | `educoder_my_courses` | | 查询课堂学生 / XX课堂有哪些学生 | `educoder_course_students` | | 查询课堂信息 / 课堂设置 | `educoder_course_info` | | 查询课堂分班 | `educoder_course_groups` | | 查询作业列表 / 课堂有哪些作业 | `educoder_homework_list` | | 查询作业提交情况 / 学生作业完成情况 | `educoder_homework_detail` | | 查询考试列表 / 课堂有哪些考试 | `educoder_exercises` | | 搜索实训 / 查找实训项目 | `educoder_shixun_search` | | 查询实训详情 / XX实训的信息 | `educoder_shixun_info` | | 查询我的实训 / 我管理的实训项目 | `educoder_my_shixuns` | | 查询我的实践课程 | `educoder_my_subjects` | ### 不要触发的情况 - 讨论教学方法(不是在查询数据) - 纯聊天中提到"课堂"、"作业" - 与头歌Educoder平台无关的场景 - 要求修改成绩、删除数据等写操作 ### 组合调用示例 > 用户说:"帮我看看我是谁,还有我教了哪些课" 依次调用: 1. `educoder_login`(如未登录) 2. `educoder_current_user` 3. `educoder_my_courses` > 用户说:"查询高等数学课堂的学生和作业情况" 依次调用: 1. `educoder_my_courses`(获取课堂ID) 2. `educoder_course_students` 3. `educoder_homework_list` --- ## 工具详细说明 ### 全局规则 - **登录前置**:如果工具调用返回鉴权失败,先调用 `educoder_login` 登录后重试 - **课堂ID获取**:查询课堂相关信息时,如果用户给的是课堂名称,先通过 `educoder_my_courses` 获取课堂列表找到对应ID - **用户名获取**:需要username参数的工具,先调用 `educoder_current_user` 获取用户名 - **mcp 服务使用注意事项**: - 推荐使用 npx mcporter 调用 MCP 服务(无需全局安装),不建议直接使用 curl; - 严禁使用 copaw 调用 MCP,必须改用 mcporter; - 如果 mcp 服务提示鉴权失败,请引导用户检查 EDUCODER_LOGIN 和 EDUCODER_PASSWORD 环境变量; - 如果 mcp 服务找不到,注意指定 mcp 配置文件的路径; - 如果调用失败,可以换一种方式重试,但若多次尝试仍不成功,请停止并检查配置; - 调用需要参数的 MCP 工具时,必须传入完整的结构化 JSON 参数对象; - 严禁 mcporter 在调用需要参数的 MCP 工具时,遗漏 `--args`。 --- ### 1. `educoder_login` 登录头歌Educoder平台,获取会话凭证。 **典型问法:** "登录头歌" / "帮我登录Educoder" / "进行身份认证" **参数:** 无(从环境变量 EDUCODER_LOGIN 和 EDUCODER_PASSWORD 读取) **交互规则:** - 首次使用或会话过期时必须调用 - 登录成功后才能调用其他工具 --- ### 2. `educoder_current_user` 查询当前登录用户的信息。 **典型问法:** "我是谁" / "我的账号信息" / "查询当前用户" **参数:** 无 **返回内容包括:** 用户名、用户ID、角色信息、所属学校等 --- ### 3. `educoder_my_courses` 查询当前用户教授或管理的课堂列表。 **典型问法:** "我教了哪些课" / "我的课堂列表" / "查询我的课程" **参数:** 无 **返回内容包括:** 课堂名称、课堂ID、课程状态、学生人数等 **注意:** 返回结果中的 emoji 需保留。 --- ### 4. `educoder_course_students` 查询指定课堂的学生名单。 **典型问法:** "XX课堂有哪些学生" / "查询课堂学生名单" / "高等数学班的学生" **参数:** | 参数 | 必填 | 说明 | |------|------|------| | `courseId` | 是 | 课堂ID | **使用逻辑:** - 用户给课堂名称 → 先调 `educoder_my_courses` 获取课堂列表,找到对应 `courseId`,再调本工具 - 用户直接给 `courseId` → 直接调用 --- ### 5. `educoder_course_info` 查询指定课堂的详细信息。 **典型问法:** "查询课堂信息" / "XX课堂的设置" / "课堂详情" **参数:** | 参数 | 必填 | 说明 | |------|------|------| | `courseId` | 是 | 课堂ID | **使用逻辑:** - 用户给课堂名称 → 先调 `educoder_my_courses` 获取课堂列表,找到对应 `courseId`,再调本工具 - 用户直接给 `courseId` → 直接调用 --- ### 6. `educoder_course_groups` 查询指定课堂的分班情况。 **典型问法:** "查询课堂分班" / "XX课堂有哪些分组" / "课堂分班情况" **参数:** | 参数 | 必填 | 说明 | |------|------|------| | `courseId` | 是 | 课堂ID | **使用逻辑:** - 用户给课堂名称 → 先调 `educoder_my_courses` 获取课堂列表,找到对应 `courseId`,再调本工具 - 用户直接给 `courseId` → 直接调用 --- ### 7. `educoder_homework_list` 查询指定课堂的作业列表。 **典型问法:** "查询作业列表" / "XX课堂有哪些作业" / "课堂作业" **参数:** | 参数 | 必填 | 说明 | |------|------|------| | `courseId` | 是 | 课堂ID | **使用逻辑:** - 用户给课堂名称 → 先调 `educoder_my_courses` 获取课堂列表,找到对应 `courseId`,再调本工具 - 用户直接给 `courseId` → 直接调用 --- ### 8. `educoder_homework_detail` 查询指定作业的详细提交情况。 **典型问法:** "查询作业提交情况" / "学生作业完成情况" / "作业详情" **参数:** | 参数 | 必填 | 说明 | |------|------|------| | `homeworkId` | 是 | 作业ID | | `courseId` | 是 | 课堂ID | **使用逻辑:** - 用户给课堂名称 → 先调 `educoder_my_courses` 获取课堂列表,找到对应 `courseId` - 用户给作业名称 → 先调 `educoder_homework_list` 获取作业列表,找到对应 `homeworkId` - 再调本工具获取作业详情 --- ### 9. `educoder_exercises` 查询指定课堂的考试/练习列表。 **典型问法:** "查询考试列表" / "课堂有哪些考试" / "练习列表" **参数:** | 参数 | 必填 | 说明 | |------|------|------| | `courseId` | 是 | 课堂ID | **使用逻辑:** - 用户给课堂名称 → 先调 `educoder_my_courses` 获取课堂列表,找到对应 `courseId`,再调本工具 - 用户直接给 `courseId` → 直接调用 --- ### 10. `educoder_shixun_search` 搜索实训项目。 **典型问法:** "搜索实训" / "查找实训项目" / "搜索Python实训" **参数:** | 参数 | 必填 | 说明 | |------|------|------| | `keyword` | 是 | 搜索关键词 | --- ### 11. `educoder_shixun_info` 查询指定实训项目的详细信息。 **典型问法:** "查询实训详情" / "XX实训的信息" / "实训项目详情" **参数:** | 参数 | 必填 | 说明 | |------|------|------| | `shixunId` | 是 | 实训ID | --- ### 12. `educoder_my_shixuns` 查询当前用户管理或创建的实训项目列表。 **典型问法:** "查询我的实训" / "我管理的实训项目" / "我的实训列表" **参数:** 无 --- ### 13. `educoder_my_subjects` 查询当前用户的实践课程列表。 **典型问法:** "查询我的实践课程" / "我的课程列表" / "实践课程" **参数:** 无 --- ## 输出规范 - 结果结构化展示(列表或表格形式) - 课堂信息至少包含:课堂名称、课堂ID - 实训信息包含:实训名称、实训ID、状态 - 学生信息包含:学生姓名、学号、提交状态 - 作业信息包含:作业名称、作业ID、截止时间、提交情况 - 保留工具返回的原始文案,不要自由发挥改写 ## 红线 - 不编造任何教学数据,必须依赖工具返回 - 不做权限外操作(如修改成绩、删除数据、添加学生等) - 不暴露用户密码等敏感信息 - 不执行任何写操作,仅限查询 ## 调用方式 ```bash # Mac 或 Linux 示例:登录头歌 npx mcporter call educoder-mcp educoder_login # 查询我的课堂 npx mcporter call educoder-mcp educoder_my_courses # 查询指定课堂的学生(需要courseId) npx mcporter call educoder-mcp educoder_course_students --args '{"courseId": "xxx"}' # 搜索实训项目 npx mcporter call educoder-mcp educoder_shixun_search --args '{"keyword": "Python"}' ```