ADD file via upload

main
wangwei10061 4 days ago
parent 00f7c9ce04
commit cba32ab27f

@ -0,0 +1,349 @@
---
name: educoder
description: 提供头歌Educoder实践教学平台的查询服务包括用户登录、课堂管理、作业查询、实训项目查询、考试管理等功能。
---
## 注意事项
- 不要用 copaw 调 mcp 服务,优先使用 npx mcporter。
- 头歌平台需要登录后才能使用,请确保环境变量配置正确。
## 前置配置(只需一次)
### 第一步:设置环境变量
**macOS / Linux**
```
export EDUCODER_LOGIN="你的头歌账号"
export EDUCODER_PASSWORD="你的头歌密码"
```
**WindowsPowerShell**
```
$env:EDUCODER_LOGIN="你的头歌账号"
$env:EDUCODER_PASSWORD="你的头歌密码"
```
**WindowsCMD**
```
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"}'
```
Loading…
Cancel
Save