loading…
Search for a command to run...
loading…
AI learning assistant for families. Manages game time rewards based on school grades, homework, and bonus tasks. Syncs with EduPage/PRONOTE. 78 MCP tools with i
AI learning assistant for families. Manages game time rewards based on school grades, homework, and bonus tasks. Syncs with EduPage/PRONOTE. 78 MCP tools with instruction workflows.
Beta — fully functional, tested with one family. Feedback and bug reports welcome via GitHub Issues.
MCP server for student learning workflow with SQLite database. Each instance serves one student — deploy a separate instance per child for isolated, focused AI tutoring.
# Install dependencies
poetry install
# Initialize database
poetry run alembic upgrade head
Database defaults to ./data/learning_hub.db. Override via environment variable:
DATABASE_URL=sqlite+aiosqlite:///./data/learning_hub.db
Sync provider credentials (EduPage, PRONOTE, etc.) are stored in the secrets table and managed via MCP tools (set_secret, list_secrets).
Runtime configuration stored in the configs table. Managed via MCP tools (get_config, set_config, list_configs). Use check_system_readiness to verify all required configs are set.
| Key | Default | Description |
|---|---|---|
GRADE_MINUTES_MAP |
{"1":15,"2":10,"3":0,"4":-20,"5":-25} |
Grade → game minutes conversion |
TOPIC_REVIEW_THRESHOLDS |
{"2":1,"3":2,"4":3,"5":3} |
Repetitions needed per grade before TopicReview is closed |
HOMEWORK_BONUS_MINUTES_ONTIME |
10 |
Bonus minutes for on-time homework |
HOMEWORK_BONUS_MINUTES_OVERDUE |
-10 |
Penalty minutes for overdue homework |
MAX_PENDING_BONUS_TASKS |
4 |
Max concurrent pending bonus tasks |
MAX_COMPLETED_BONUS_TASKS_PER_WEEK |
15 |
Max completed bonus tasks in rolling 7 days |
DEFAULT_DEADLINE_TIME |
20:00 |
Default time when deadline has only a date |
SETUP_COMPLETED |
false |
Whether initial setup has been completed |
BASE_CRONS_INSTALLED |
false |
Whether base cron jobs have been created |
SYNC_CRON_CONFIGURED |
false |
Whether a sync cron job has been created after first successful sync |
| Key | Description |
|---|---|
TEMP_BOOK_DIR |
Folder where users place book files for processing |
BOOKS_STORAGE_DIR |
Base folder for storing processed books |
ISSUES_LOG |
Path to the issue log file |
FAMILY_LANGUAGE |
Language for communication with the family |
poetry run learning-hub-mcp
Add to your MCP client config:
{
"mcpServers": {
"learning-hub": {
"command": "poetry",
"args": ["run", "learning-hub-mcp"],
"cwd": "/path/to/learning-hub-mcp"
}
}
}
create_subject - create a new school subjectlist_subjects - list subjects (filter: school, is_active)update_subject - update subject detailscreate_topic - create a topic for a subjectlist_topics - list topics (filter: subject_id, is_open)close_topic - close topic (reason: resolved/skipped/no_longer_relevant)add_grade - add a grade (1-5 scale, 1=best), auto-creates minute transactionlist_grades - list grades (filter: subject, date range, school)create_bonus_task - create a bonus task linked to a topic (validates limits)list_bonus_tasks - list tasks (filter: status, topic)get_bonus_task - get a bonus task by IDget_latest_bonus_task - get the most recent bonus taskapply_bonus_task_result - complete task, record grade, and update topic reviewscancel_bonus_task - cancel a taskcheck_pending_bonus_task - check if there's a pending task to reuseget_balance - get current game minutes balanceadd_played_minutes - record played game time (deducts from balance)create_ad_hoc_transaction - create manual bonus or penaltylist_transactions - list transactions (filter: date range, type)create_homework - create homework assignmentlist_homeworks - list homework (filter: status, subject)complete_homework - mark homework as doneupdate_homework - update homework detailsclose_overdue_homeworks - close overdue homework, auto-creates penalty transactionget_pending_homework_reminders - get reminders due (D-1, D-2)mark_homework_reminders_sent - mark reminders as sentadd_book - add a book to the librarylist_books - list books (filter: subject, has_summary)get_book - get a book by IDupdate_book - update book detailsdelete_book - delete a booklist_topic_reviews - list topic reviews (filter: subject, status)get_pending_reviews_for_topic - get pending reviews for a topicmark_topic_reinforced - mark review as reinforcedincrement_topic_repeat_count - increment repeat count for a reviewget_priority_topic_for_review - pick a priority topic from top-4create_family_member - add a family member (student/parent/tutor/admin)list_family_members - list members (filter: role)update_family_member - update member detailsdelete_family_member - delete a memberget_student - get the student recordcreate_gateway - register a messaging channel (Telegram, etc.)list_gateways - list gateways (filter: family_member, channel)update_gateway - update gateway detailsdelete_gateway - delete a gatewaylookup_gateway - find gateway by platform + external IDget_config - get a config value by keyset_config - set a config value (existing keys only)list_configs - list all config entriesset_secret - set a secret value (credentials, API keys)list_secrets - list secrets (keys only, values never exposed)list_sync_providers - list all sync providers with statusupdate_sync_provider - activate/deactivate, link to schoolrun_sync - run sync for all active providers (or a specific one)find_edupage_subdomain - detect EduPage school subdomain from stored credentialscheck_system_readiness - check if the system is properly configured (active schools, required configs)get_grades_pending_escalation - get grades needing parent notificationmark_grades_escalated - mark grades as escalated (parent was notified)get_grade_escalation_instructions - escalate bad grades to tutor/adminget_learning_system_instructions - master instruction: full system rulesget_student_request_router_instructions - classify student request (A/B/C scenarios)get_bonus_task_assignment_instructions - assign a new bonus taskget_submission_routing_instructions - route submitted work to evaluatorget_bonus_task_evaluation_instructions - evaluate completed bonus taskget_homework_evaluation_instructions - evaluate homework submissionget_book_lookup_instructions - find and deliver textbook pagesget_books_workflow_instructions - process and register new booksget_homework_manual_instructions - manually add homework (parent only)get_grade_manual_instructions - manually add a grade (adult only)get_student_content_policy_instructions - content safety filtering for external student contentget_topic_review_curation_instructions - curate and close stale topic reviewsget_base_crons_setup_instructions - instructions for setting up base cron jobsThe learning-hub-bridge/ directory contains a TypeScript plugin that makes all MCP tools available as native OpenClaw agent tools.
OpenClaw doesn't support MCP servers natively. Without the bridge, the agent would need exec + mcporter — slow (~3s per call), buggy (mcporter serialization issues with lists), and invisible to the model (tools not in tool list).
client.listTools() (MCP protocol)api.registerTool() with prefix learning_hub_execute() → client.callTool(), merging multiple TextContent blocks into a single JSON arrayAfter this, the model sees learning_hub_list_subjects, learning_hub_add_grade, etc. directly in its tool list.
The bridge must be installed as an OpenClaw extension. The source lives in learning-hub-bridge/ inside this repo, but OpenClaw loads plugins from ~/.openclaw/extensions/<pluginId>/.
Step 1. Copy the bridge to extensions:
cp -r /path/to/learning-hub-mcp/learning-hub-bridge ~/.openclaw/extensions/learning-hub
Step 2. Install dependencies:
cd ~/.openclaw/extensions/learning-hub
npm install
Step 3. Add plugin config to 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"
}
}
}
}
}
Step 4. Allow tools for the agent in openclaw.json:
{
"agents": {
"list": [
{
"id": "main",
"tools": {
"alsoAllow": ["learning-hub"]
}
}
]
}
}
Step 5. Restart gateway:
openclaw gateway restart
| Option | Description | Default |
|---|---|---|
command |
Command to start MCP server | (required) |
args |
Arguments for the command | (required) |
cwd |
Working directory for MCP server process | — |
toolPrefix |
Prefix for registered tool names | learning_hub |
When new tools are added to the MCP server, the bridge picks them up automatically on gateway restart — no bridge code changes needed. Just restart:
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 .
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"learning-hub": {
"command": "npx",
"args": []
}
}
}