学习中心MCP
贝塔 --功能齐全,经过一个系列的测试。欢迎通过以下方式提供反馈和错误报告 .
MCP服务器,用于使用SQLite数据库的学生学习工作流程。每个实例服务于一个学生——为每个孩子部署一个单独的实例,用于隔离、集中的人工智能辅导。
特性
- 科目 -多国支持的学校科目(UA、CZ、DE等)
- 成绩 -采用欧洲5分制进行成绩追踪(1=最佳,5=最差)
- 话题 -改进跟踪主题
- 作业 -有截止日期的任务跟踪
- 奖励任务 -奖励游戏时间的激励任务
- 游戏分钟 -用于跟踪赢得/花费游戏时间的不可变交易分类账
- 书籍 -带有降价摘要和内容索引的教科书库
- 主题评论 -弱主题的强化跟踪
- 升级 -给家长的坏成绩通知
- 指导工具 -指导AI代理完成工作流程的markdown算法
- 同步提供程序 -可插拔同步框架(EduPage、PRONOTE)
- 秘密 -同步提供程序的安全凭据存储
安装
# Install dependencies
poetry install
# Initialize database
poetry run alembic upgrade head配置
数据库默认为 ./data/learning_hub.db.通过环境变量覆盖:
DATABASE_URL=sqlite+aiosqlite:///./data/learning_hub.db同步提供者凭据(EduPage、PRONOTE等)存储在 secrets 表,并通过MCP工具进行管理(set_secret, list_secrets).
配置系统(SQLite)
运行时配置存储在 configs 桌子。通过MCP工具进行管理(get_config, set_config, list_configs).使用 check_system_readiness 以验证是否设置了所有必需的配置。
具有默认值的条目(通过迁移播种)
| 密钥 | 默认值 | 描述 |
|---|---|---|
GRADE_MINUTES_MAP | {"1":15,"2":10,"3":0,"4":-20,"5":-25} | 等级→ 游戏分钟数转换 |
TOPIC_REVIEW_THRESHOLDS | {"2":1,"3":2,"4":3,"5":3} | 在TopicReview关闭之前,每个年级都需要重复 |
HOMEWORK_BONUS_MINUTES_ONTIME | 10 | 按时完成作业的额外时间 |
HOMEWORK_BONUS_MINUTES_OVERDUE | -10 | 逾期作业处罚记录 |
MAX_PENDING_BONUS_TASKS | 4 | 最大并发待处理奖励任务数 |
MAX_COMPLETED_BONUS_TASKS_PER_WEEK | 15 | 连续7天内最多完成奖励任务 |
DEFAULT_DEADLINE_TIME | 20:00 | 截止日期只有日期的默认时间 |
SETUP_COMPLETED | false | 初始设置是否已完成 |
BASE_CRONS_INSTALLED | false | 是否已创建基本cron作业 |
SYNC_CRON_CONFIGURED | false | 首次成功同步后是否已创建同步cron作业 |
必填项(使用前必须设置)
| 密钥 | 描述 |
|---|---|
TEMP_BOOK_DIR | 用户放置书籍文件进行处理的文件夹 |
BOOKS_STORAGE_DIR | 用于存储已处理书籍的基本文件夹 |
ISSUES_LOG | 问题日志文件的路径 |
FAMILY_LANGUAGE | 与家人沟通的语言 |
用法
运行MCP服务器
poetry run learning-hub-mcpMCP配置
添加到MCP客户端配置中:
{
"mcpServers": {
"learning-hub": {
"command": "poetry",
"args": ["run", "learning-hub-mcp"],
"cwd": "/path/to/learning-hub-mcp"
}
}
}MCP工具(共78个)
科目
create_subject-创建新的学校科目list_subjects-列出科目(筛选条件:学校,is_active)update_subject-更新主题详细信息
话题
create_topic-为主题创建主题list_topics-列出主题(过滤器:subject_id,is_open)close_topic-关闭主题(原因:已解决/跳过/不再相关)
成绩
add_grade-添加一个等级(1-5分,1=最佳),自动创建分钟交易list_grades-列出成绩(筛选条件:科目、日期范围、学校)
奖励任务
create_bonus_task-创建与主题链接的奖励任务(验证限制)list_bonus_tasks-列出任务(筛选器:状态、主题)get_bonus_task-通过ID获得奖励任务get_latest_bonus_task-获取最新的奖励任务apply_bonus_task_result-完成任务、记录成绩并更新主题评论cancel_bonus_task-取消任务check_pending_bonus_task-检查是否有待重用的任务
分钟交易
get_balance-获取当前游戏分钟数平衡add_played_minutes-记录游戏时间(从余额中扣除)create_ad_hoc_transaction-创建手动奖励或惩罚list_transactions-列出交易记录(筛选器:日期范围、类型)
作业
create_homework-创建家庭作业list_homeworks-列出作业(筛选条件:状态、主题)complete_homework-将作业标记为已完成update_homework-更新作业详细信息close_overdue_homeworks-关闭逾期作业,自动创建罚款交易get_pending_homework_reminders-收到到期提醒(D-1、D-2)mark_homework_reminders_sent-将提醒标记为已发送
书籍
add_book-向图书馆添加一本书list_books-列出书籍(筛选条件:主题,has_summary)get_book-凭身份证取书update_book-更新图书详细信息delete_book-删除一本书
主题评论
list_topic_reviews-列出主题评论(筛选器:主题、状态)get_pending_reviews_for_topic-获取某个主题的待定评论mark_topic_reinforced-将审查标记为强化increment_topic_repeat_count-增加复习的重复次数get_priority_topic_for_review-从前4名中选择一个优先主题
家庭成员
create_family_member-添加家庭成员(学生/家长/导师/管理员)list_family_members-列表成员(筛选器:角色)update_family_member-更新成员详细信息delete_family_member-删除成员get_student-获取学生记录
网关
create_gateway-注册消息通道(Telegram等)list_gateways-列出网关(筛选器:family_member、channel)update_gateway-更新网关详细信息delete_gateway-删除网关lookup_gateway-按平台+外部ID查找网关
配置
get_config-按键获取配置值set_config-设置配置值(仅限现有密钥)list_configs-列出所有配置条目
秘密
set_secret-设置机密值(凭据、API密钥)list_secrets-列出机密(仅密钥,值从不公开)
同步提供程序
list_sync_providers-列出所有具有状态的同步提供程序update_sync_provider-激活/停用,链接到学校run_sync-为所有活动提供程序(或特定提供程序)运行同步find_edupage_subdomain-从存储的凭据中检测EduPage学校子域
准备就绪
check_system_readiness-检查系统是否配置正确(活动学校、所需配置)
升级
get_grades_pending_escalation-获取需要家长通知的成绩mark_grades_escalated-按升级标记成绩(通知家长)
指导工具
get_grade_escalation_instructions-将糟糕的成绩上报给导师/管理员get_learning_system_instructions-主指令:完整的系统规则get_student_request_router_instructions-对学生请求进行分类(A/B/C场景)get_bonus_task_assignment_instructions-分配新的奖励任务get_submission_routing_instructions-将提交的工作交给评估人员get_bonus_task_evaluation_instructions-评估已完成的奖金任务get_homework_evaluation_instructions-评估作业提交情况get_book_lookup_instructions-查找并交付教科书页面get_books_workflow_instructions-处理和登记新书get_homework_manual_instructions-手动添加作业(仅限家长)get_grade_manual_instructions-手动添加等级(仅限成人)get_student_content_policy_instructions-外部学生内容的内容安全过滤get_topic_review_curation_instructions-整理并关闭陈旧的话题评论get_base_crons_setup_instructions-设置基本cron作业的说明
OpenClaw桥接插件
这 learning-hub-bridge/ 目录包含一个TypeScript插件,该插件使所有MCP工具都可以作为本机工具使用 开爪 代理工具。
为什么
OpenClaw本身不支持MCP服务器。如果没有这座桥,特工将需要 exec + mcporter --缓慢(每次调用约3秒)、有缺陷(列表中的mcporter序列化问题)、对模型不可见(工具不在工具列表中)。
运作原理
- 在网关启动时,网桥将Python MCP服务器作为子进程(STDIO)生成
- 通过以下方式发现所有工具
client.listTools()(MCP协议) - 通过以下方式将每个工具注册为本地OpenClaw工具
api.registerTool()带前缀learning_hub_ - 代理
execute()→client.callTool(),将多个TextContent块合并到一个JSON数组中 - 如果Python进程死亡,则自动重新连接
在此之后,模型看到 learning_hub_list_subjects, learning_hub_add_grade等直接在其工具列表中。
部署
该桥必须作为OpenClaw扩展安装。源头生活在 learning-hub-bridge/ 在这个仓库中,但OpenClaw从以下位置加载插件 ~/.openclaw/extensions/ /.
步骤1。 将网桥复制到扩展:
cp -r /path/to/learning-hub-mcp/learning-hub-bridge ~/.openclaw/extensions/learning-hub步骤2。 安装依赖项:
cd ~/.openclaw/extensions/learning-hub
npm install步骤3。 将插件配置添加到 openclaw.json:
{
"plugins": {
"entries": {
"learning-hub": {
"enabled": true,
"config": {
"command": "/bin/bash",
"args": ["-lc", "cd /path/to/learning-hub-mcp && exec .venv/bin/learning-hub-mcp"],
"cwd": "/path/to/learning-hub-mcp",
"toolPrefix": "learning_hub"
}
}
}
}
}步骤4。 允许代理使用工具 openclaw.json:
{
"agents": {
"list": [
{
"id": "main",
"tools": {
"alsoAllow": ["learning-hub"]
}
}
]
}
}步骤5。 重新启动网关:
openclaw gateway restart配置项
| 选项 | 描述 | 默认值 |
|---|---|---|
command | 启动MCP服务器的命令 | (必需) |
args | 命令的参数 | (必需) |
cwd | MCP服务器进程的工作目录 | -- |
toolPrefix | 已注册工具名称的前缀 | learning_hub |
MCP更改后的更新
当新工具添加到MCP服务器时,网桥会在网关重新启动时自动拾取它们——不需要更改网桥代码。只需重新启动:
openclaw gateway restart发展
# Run tests
poetry run pytest
# Run tests with coverage
poetry run pytest --cov=learning_hub
# Lint code
poetry run ruff check .
# Fix lint issues
poetry run ruff check --fix .已知限制
- 在一个家庭(一名学生,两所学校:EduPage CZ+UA)进行测试
- PRONOTE同步已实现,但测试最少
- 仅限SQLite——专为单户自住使用而设计
- 需要 开爪 作为AI代理运行时
- 具有不同学校配置的边缘案例可能尚未涵盖
