Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PYTHONPATHYesAdd the project's `src` directory to PYTHONPATH before running (`python -B -m chaoxing_learning_mcp`).
STUDYFLOW_AUTO_BROWSERNoSet to 0 to disable the automatically launched independent Edge browser (only needed for protocol or no-browser testing).1
STUDYFLOW_BROWSER_MODENoDefault browser mode: `headless` for no window, or `minimized` for a windowed but minimized browser. Can also be set per-session via `configure_course_browser` or the `browser_mode` parameter of `setup_learning_accounts`.minimized
STUDYFLOW_ENABLE_LEGACY_TOOLSNoSet to 1 only for explicit compatibility needs to re-enable the 22 obsolete/diagnostic tool entrypoints omitted from default discovery.0

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
route_learning_taskB

Unified read-only entry point. Choose the mode from user intent and observed task type.

Returns tools and dependencies, not a claim that the session is connected. Does not log in, start playback, save answers, or submit anything.

capabilitiesB

Describe supported operations and explicit mutation boundaries.

refresh_direct_implementationA

Explicitly reload direct course code while preserving its idle browser and thread.

Never reload while a submission outcome is unknown. An unsubmitted review plan may be explicitly discarded and must then be prepared again.

implementation_statusB

Read adapter source identity and current process without credentials or network.

refresh_inventory_implementationC

Update validated inventory code in this process; retain account sessions and verification gates.

inspect_course_score_pageB

Read enrolled-course score pages and their observed links; never navigate or submit.

update_account_credentialsB

Correct an inactive account's credentials without replacing other accounts or mail mapping.

setup_learning_accountsA

Collect credentials once, optional shared SMTP + per-account notify_email; login first account.

Start only after the user supplies learning credentials. Other accounts stay queued in import order; login_accounts([next_id]) reuses ONE browser process. This does not claim any task is completed. Passwords/codes are memory-only.

import_accountsB

Import learning accounts into memory, with optional per-account QQ SMTP notices.

Required: account_id, username, password. Optional TOGETHER: smtp_email, smtp_auth_code, notify_email. Prefer configure_smtp_sender ONCE, then each record supplies only notify_email. Without a shared sender that binding awaits setup. Legacy per-account sender configuration remains supported. No QQ login password. Omit all mail fields to skip email. Ask the user for missing credentials and offer optional mail setup in the same input step; never echo secrets.

list_accountsA

List redacted account state without returning credentials or cookies.

login_accountsA

HTTP login only by default; never switches another account's browser implicitly.

Reuses logged-in sessions. After a platform rejection, change credentials or inspect verification rather than retrying the same password repeatedly. setup_learning_accounts explicitly activates its first account.

list_coursesC

Fetch and parse the current enrolled-course pages for selected accounts.

inspect_courseC

Inspect a user-selected enrolled course URL for task and deadline hints.

export_deadlines_icsB

Export reviewed {title, due_at ISO-8601} reminders to an ICS file.

prepare_user_navigationB

Return a validated user-openable URL and playback preference; does not write course progress.

get_wrong_questionsC

Read complete locally archived mistakes and rejected combinations, without inferring corrected keys.

attach_exam_browserA

Bind an existing extension-controlled tab using its observed DOM; no CDP or login.

Browser controller supplies document.documentElement.outerHTML through its supported read-only API. MCP parses it; all actual UI actions stay with that controller. No cookies, debugger commands, script execution or platform writes.

refresh_exam_browserC

Parse a fresh current-question DOM observation from the same browser tab.

prepare_exam_browser_stepB

Validate reviewed answer and return a UI action plan; never executes it.

The browser controller must re-check current question before normal UI actions, then supply independent navigation/reload readback for draft confirmation. Multiple choice reuses all existing included/excluded-option review rules. Omit answer/review together to use only a valid exact platform-confirmed cache.

wait_exam_browser_saveB

Wait random 2-5 seconds after visible selection, then authorize draft save.

Does not click or submit. The controller must recheck the same question and selection before clicking the plan's Next/Preview control. No final submission.

confirm_exam_browser_draftB

Verify the original question's saved answer in independent navigation DOM readback.

In-place selected state alone is insufficient: controller must obtain HTML after navigation/reload or from the full preview. This does not save answers.

audit_exam_browser_previewC

Audit all observed preview answers; earlier unreviewed questions remain unverified.

exam_browser_progressC

Read actual verified draft count for the browser-controller handoff mode.

attach_exam_sessionB

Attach exactly one existing exam tab through an explicitly configured local CDP endpoint.

Does not launch browsers, log in, or navigate. The browser must already expose the endpoint. Reuse the returned run_id throughout the sequential workflow.

read_current_exam_questionC

Read structured question/options and a content-bound token from the existing tab.

review_current_exam_answerA

Stage one current-model reviewed answer; no platform writes.

review requires model_reviewed=true, certain=true and basis. Multiple choice also requires selected_reasons, excluded_reasons for every option, and cross_checked=true. Unresolved conflicts and previously rejected combinations stop the workflow.

run_exam_question_loopB

Answer and save reviewed questions one at a time using the page's own Next action.

Stops on an unknown answer (returns it for current-model review), error, changed question, 40-second budget, or final preview. Call again to continue. Exact platform-confirmed caches run first; cache misses require current-model review. Never finally submits.

audit_exam_previewC

Compare every answer in the full preview against this run's reviewed saved answers.

exam_loop_progressC

Read loop progress without opening or changing any browser page.

inspect_exam_pageC

Read an existing exam page without running JS or saving answers. GET may refresh exam access state.

analyze_exam_htmlA

Parse an already captured exam HTML offline; no network or platform writes.

prepare_exam_answer_planB

Validate a plan for loaded exam questions only; does not save or submit it.

get_exam_progressC

Count observed saved answers only; a single-question page is not whole-paper progress.

inspect_exam_grading_htmlC

Read actual grading-page HTML supplied by the browser controller, with no submission.

Preview pages or incomplete/unsupported grading structures never establish 100%. Does not promote any cache entry based on model conclusions or partial credit.

attach_course_browserB

Bind the existing Edge tab. Controller supplies DOM; MCP opens no browser.

observe_course_browserC

Parse course directory or chapter-quiz DOM from the bound tab, without network.

prepare_course_quizC

Validate reviewed chapter answers and stage a UI plan; never click or submit.

release_course_quizC

Authorize one UI action after a fresh same-content read and a real 2-5s interval.

start_owned_exam_captureB

Monitor user-driven exam navigation in the current browser; memory-only metadata.

owned_exam_capture_statusC

Read cached sanitized endpoint events; no cookies, headers or parameter values.

stop_owned_exam_captureD–
read_owned_exam_observationC

Read visible controls and offline-parsed questions from existing account pages.

start_desktop_consoleC

Open the explicitly requested local GUI, sharing this process's accounts.

inspect_owned_video_deliveryC

Passively observe actual player report responses; never send/alter reports.

read_owned_video_captionsA

Read already-loaded subtitle cues of this chapter, without seeking or replay.

submit_reviewed_chapter_quizB

Normalize reviewed fields, stage, wait, reobserve and submit ONCE; never guesses answers.

Caller must first observe the complete quiz and supply current-model-reviewed answers/evidence. An unknown result is never replayed by this convenience tool.

runtime_healthD–
verify_runtime_resilienceC

Exercise installed recovery decisions using isolated state, never the active page.

claim_current_accountB

Register the current worker's OS lease without logging in or opening a browser.

load_batch_implementationD

Expose account script queues without restarting browsers or losing memory credentials.

refresh_notification_implementationC

Reload notification code, preserving in-memory credentials, dedup state and delivery queue.

configure_course_browserA

Choose ONE mode for the entire account batch BEFORE login.

headless: no window. minimized: visible-capable independent Edge, starts minimized. Reuse the current process-owned browser for every account. A mode change before login closes the old browser FIRST, never opens a second concurrent instance.

owned_window_statusA

Read the owned window bounds without changing focus, size or window state.

activate_learning_accountA

Activate next sequential account in ONE browser process, replacing only its isolated context.

Never switch across unknown submissions, pending review plans, or verification. Caller must finish/record the current account's tasks before advancing.

monitor_owned_videoA

Local event-driven playback watcher: initial sample, estimated end, pause recovery.

No model/API calls, seeking, visibility emulation, or automatic question answers. status reads cached state only. stop before intentional manual pause.

set_owned_video_rateD

For 1.25: initialize playback then use the inspected player adapter automatically.

Native mode changes real playback only; never seek, mask events or alter reporting.

minimize_owned_windowA

Minimize only this owned browser; do not emulate focus or visibility.

use_window_viewportB

Remove fixed metrics on the current owned page without replacing its session.

start_course_browserB

Launch ONE browser inside this MCP process and seed it with the login session.

Empty account_id opens the official login page without credentials. A later account bind reuses the same browser with memory-only HTTP login cookies. No daily profile copy and no port discovery.

goto_course_pageB

Navigate the owned page with bounded retries and per-attempt logging.

find_chapter_linksB

Read chapter/task links from the owned page (read-only DOM query).

Returns absolute hrefs for chapter nodes (id starting with "cur") and any anchors pointing at study/knowledge pages, so the caller can navigate to an explicit chapter without guessing URL shapes.

open_chapter_quizB

Locate the chapter-quiz iframe: click the quiz tab and lazy-scroll until found.

desktop_accountsD–
desktop_account_toolD–
start_owned_exam_finishC

After full-preview audit, watch visible remaining time and submit once below threshold.

owned_exam_finish_statusD–
stop_owned_exam_finishD–
owned_exam_review_inventoryC

Use already open full preview to identify exact cache hits once per paper.

read_owned_exam_gradingA

Read the current attempt's actual grading page without submitting anything.

send_owned_exam_result_noticeB

Send the verified current exam score once to this account's bound mailbox.

recover_owned_exam_workerB

Read-only liveness fence after a timed-out batch; never replay a save.

stage_owned_exam_reviewsC

Queue already reviewed content fingerprints in memory; do not choose answers.

run_owned_exam_queueC

Execute reviewed questions; stop starting new steps after 20 seconds.

return_owned_exam_questionB

Use the observed Return link to leave full preview without submitting.

preview_owned_exam_questionsB

Open the platform's normal full preview, never click final submission.

inspect_owned_exam_navigationD–
verify_owned_exam_saved_answerD–
refresh_owned_exam_adapterA

Reload only the idle exam adapter; retain browser, capture and review state.

read_owned_exam_questionB

Read current question and exact verified cache without browser navigation.

save_owned_exam_answerC

Save one reviewed answer through normal Next/Preview controls; never final submit.

restore_owned_windowB

Show this account's headed browser for explicitly requested user interaction.

observe_chapter_quizB

Read the quiz iframe DOM in-process and parse it with the existing parser.

submit_chapter_quizB

Select reviewed options, submit ONCE, then read platform grading.

Write safety: exactly one submit click; failures before the click abort, failures after are reported as pending outcomes (never retried).

browser_statusA

Owned-browser lifecycle state plus the recent stage log.

stop_course_browserA

Close the owned browser and stop Playwright (never touches host browsers).

browser_run_logC

Return the full structured stage log; optionally write it to a JSON file.

inspect_owned_pageC

Read the real owned page, cards, frame text, and task markers; optional screenshot.

select_course_cardB

Select one observed video/quiz/learning-objective card by its actual dct selector.

open_course_chapterC

Open exactly one chapter node present in the owned course directory.

control_owned_videoC

Inspect media; play initializes muted UI, applies inspected 1.25 adapter, minimizes and watches locally. Never seek. Use rate=1 for normal speed.

read_owned_browser_viewC

Current account's actual viewport, memory-only; no new browser or focus change.

open_account_browserC

Show the account window; ordinary course automation keeps running.

return_account_to_backgroundB

After manual work, return this account to headless course dispatch.

read_chapter_quiz_gradingA

Read existing platform grading without selecting, submitting or retrying.

observe_video_questionC

Read one actual video popup question and its full options without answering.

answer_video_questionC

Select one reviewed radio answer and submit once in the observed video popup.

continue_rejected_video_questionB

Explicit user-requested dismissal via the player's existing continue callback.

Retains the wrong grading, never resubmits an answer, seeks or claims completion. No automatic dismissal policy is enabled by this one-time operation.

switch_owned_video_lineC

Choose one observed public video line through normal visible UI, once per line/page.

refresh_desktop_implementationB

Update the local GUI gateway while preserving pairing and all account runtimes.

configure_desktop_preferencesD–
desktop_console_statusD–
desktop_report_stateD–
validate_reviewed_chapter_quizC

Validate review format/evidence without staging, selecting or submitting.

open_course_examA

Open the selected enrolled course's observed exam list, without starting an attempt.

enter_selected_examC

Click the uniquely visible named exam in the currently owned exam list.

close_account_workspaceB

Pause this account and close its browser only after preserving exam/write guards.

defer_current_learning_taskC

Explicit host decision for a new evidenced issue; retain unfinished task, never submit.

set_learning_batch_rateC

Set this account's current/future rate; return actual readback, never silent fallback.

inspect_current_taskC

Compact fresh inspection distinguishing quiz, completed video, player and loading.

recover_current_taskC

One normal navigation recovery of an observed task; no browser/session recreation.

start_learning_batchA

Run imported accounts sequentially with exact enrolled-course matching.

accounts=[{account_id, courses:[requested course names or {name,course_id}]}]. Reuses the existing single browser. Never automatically answers/submits quizzes. If a review is needed use existing review tools, then resume_learning_batch.

learning_batch_statusC

Cached compact state only; no page reads, HTTP calls or model API.

resume_learning_batchC

After actual model review/human verification, revalidate the same task before proceeding.

stop_learning_batchA

Stop queue dispatch without closing the browser or interrupting pending submissions.

start_account_workspaceB

Launch one isolated account browser without starting any course or exam.

recover_terminal_media_accountC

Recover an OS-unlocked terminal worker from an exact saved media scene only.

No submissions are replayed. Fresh platform directories choose remaining tasks. Deferred tasks survive; hourly reporting restarts for this account.

recover_graded_parallel_accountA

Recover ONLY a stuck remote graded worker after independent exact readback.

Compatibility path for old workers which cannot hot-load while their parser has latched an already graded submission. No submissions are sent or replayed. Healthy workers are never stopped. The affected worker's hourly timer restarts.

add_parallel_learning_accountsC

Append imported accounts to this supervisor; reuse existing queues unchanged.

Does not stop, re-login, navigate or rebuild existing workers. Conflicting existing queues are reported, not replaced. Use retry only for terminal failures.

set_parallel_playback_rateC

Apply the user's requested rate to each connected account, retaining separate results.

start_parallel_learning_batchesA

Start every supplied account concurrently, one browser process per account.

Accounts reference already-imported account_id plus courses:[exact names]. Reuse the parent account's existing browser if active; launch isolated MCP workers for the others. Credentials/config transfer only over stdio memory. Both headless and minimized modes work; no numeric concurrency/account cap.

parallel_learning_statusC

Cached account-specific status or compact all-account summary, never browser polling.

parallel_account_toolC

Route a necessary review/readback to the correct account's existing MCP worker.

No login/navigation/session creation here. Unknown submissions remain unknown; each child enforces its ordinary review, freshness and single-submit guards.

retry_parallel_accountD

Recover a terminated startup worker or an orderly fully completed course worker.

inspect_homework_browserB

Inspect a fresh homework-list DOM; never reuse chapter/exam submit tools.

Only the observed empty-list structure is verified. Nonempty assignments require their own observed question/save/grading adapter before any writes.

classify_learning_portalC

Classify exact portal hosts/paths without fabricating navigation URLs.

evaluate_homework_deadlinesC

Evaluate observed inventory. Returning alerts does not deliver notifications.

send_notification_testB

Send one explicitly requested test email using this account's own recipient.

configure_smtp_senderA

Configure ONE shared QQ sender for all learning accounts. Per-account recipients are separate.

QQ ordinary password is not required; SMTP authorization code stays in memory. Does not send a test email automatically.

bind_account_notification_emailB

Bind this learning account's recipient; empty skips mail. Requires shared sender for delivery.

configure_smtp_notificationsA

Optional per-account QQ SMTP configuration. Use authorization code, NOT QQ password.

All empty fields skip notifications. Recipient defaults to sender. Notification permission covers only verification reminders and actual verification QR PNGs. Secrets remain in this MCP process memory and are never included in responses.

smtp_notification_statusC

Cached redacted state only; does not connect SMTP or read a browser.

configure_notification_intervalD–
send_hourly_report_testB

Explicitly send one hourly-format TEST. No fake course events or timer changes.

send_learning_stage_noticeC

Explicitly send current account progress + each quiz score, without page reads.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.3/5.0

Scored across 134 tools

Disambiguation2/5

The set contains many overlapping tool families for the same actions: browser attach/start (attach_course_browser, attach_exam_browser, attach_exam_session, start_course_browser, start_account_workspace), exam reading (read_current_exam_question, read_owned_exam_question, inspect_exam_page, inspect_owned_page), and submission (submit_chapter_quiz, submit_reviewed_chapter_quiz, save_owned_exam_answer, run_exam_question_loop, run_owned_exam_queue). Detailed descriptions attempt to distinguish transport/mode (CDP vs bound tab vs owned browser vs parallel worker), but the boundaries remain unclear for an agent choosing a tool.

Naming Consistency4/5

Nearly all names are snake_case and most follow verb_noun patterns (inspect_exam_page, save_owned_exam_answer, configure_smtp_sender, start_parallel_learning_batches). There are some noun-only status/health names (capabilities, runtime_health, browser_status, desktop_accounts, exam_loop_progress), but they are readable and still consistent in casing.

Tool Count1/5

134 tools is extreme for a study-automation server and strongly suggests fragmentation into many narrow, mode-specific operations. The surface is far beyond what an agent can reasonably discover or select among, with multiple near-duplicate pathways.

Completeness4/5

The surface is vast and covers account lifecycle, course browsing, exam capture/review/save/submit, video control, parallel workers, notifications, deadlines, grading, and implementation refresh. Minor gaps exist (e.g., no account deletion, homework support is only for an empty-list observation, and several tools have empty descriptions), but the core domain is extensively covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues