MCP 服务器

delegation-school

school.delegation/delegation-school
教育 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Runs a course on delegating work to AI, including learner sessions, lessons, grading, progress tracking, feedback, and operator statistics.

complete_lesson
Record a lesson result for a learner AFTER grading its quiz/assignment. passed:true marks it done and advances; passed:false records the attempt without advancing (reteach). Always include a `reflection` when you have one — it's the signal that improves the course.
输入模式
{'type': 'object', 'required': ['learner', 'slug'], 'properties': {'slug': {'type': 'string', 'description': 'The lesson slug just attempted.'}, 'passed': {'type': 'boolean', 'description': "Did they pass the quiz/assignment? Default true. false = reteach, don't advance."}, 'learner': {'type': 'string', 'description': 'Same EMAIL address used in start_session.'}, 'reflection': {'type': 'string', 'description': 'What confused them, what landed, or what they want next (≤1000 chars). Feeds curriculum improvement.'}}, 'additionalProperties': False}
course_stats
OPERATOR / Inspectable State: usage snapshot of the whole course — learner count, level mix, completions, per-lesson pass rates, and recent reflections. Requires admin_key. Answers 'what is the state of the work?' for an operator agent.
输入模式
{'type': 'object', 'required': ['admin_key'], 'properties': {'admin_key': {'type': 'string', 'description': 'Operator admin key (Worker secret ADMIN_KEY).'}}, 'additionalProperties': False}
get_lesson
Get the full markdown of one lesson by slug. Teach from it: lead with the why, then run the exercise with the learner's real work.
输入模式
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Lesson slug from list_lessons / start_session.'}}, 'additionalProperties': False}
list_lessons
List lessons (slug, title, track, order, summary), optionally filtered to one track.
输入模式
{'type': 'object', 'properties': {'track': {'enum': ['scratch', 'intermediate', 'power'], 'type': 'string', 'description': 'Optional track filter.'}}, 'additionalProperties': False}
overview
What delegation.school is, the three tracks, and how to run the course as the learner's tutor. Background reading.
输入模式
{'type': 'object', 'properties': {}, 'additionalProperties': False}
set_level
OPERATOR: reclassify an existing learner's track (scratch | intermediate | power). Routes through the learner's record so the change sticks. Use when a learner was placed wrong — e.g. a scratch enrollee who's really a power operator. Requires admin_key. The learner must have started a session first.
输入模式
{'type': 'object', 'required': ['learner', 'level', 'admin_key'], 'properties': {'level': {'enum': ['scratch', 'intermediate', 'power'], 'type': 'string', 'description': 'The new level: scratch | intermediate | power.'}, 'learner': {'type': 'string', 'description': "The learner's name/email (same key used in start_session)."}, 'admin_key': {'type': 'string', 'description': 'Operator admin key (Worker secret ADMIN_KEY).'}}, 'additionalProperties': False}
start_session
Call FIRST. Place or resume a learner: returns their level, completed lessons, and the recommended next lesson. Ask for the learner's EMAIL ADDRESS and pass it as `learner` — emails are stable and unique; a bare name collides across learners and gets mistyped. Pass their real name as `name` for the certificate.
输入模式
{'type': 'object', 'required': ['learner'], 'properties': {'name': {'type': 'string', 'description': "Optional: the learner's display name, for the certificate and a friendlier greeting. The email stays the key."}, 'level': {'enum': ['scratch', 'intermediate', 'power'], 'type': 'string', 'description': 'Optional: set/override their level (scratch | intermediate | power).'}, 'learner': {'type': 'string', 'description': "The learner's EMAIL ADDRESS — their stable, unique progress key. Ask for it; do not key off a bare name (names collide across learners and get mistyped)."}}, 'additionalProperties': False}
submit_feedback
Send the course team feedback FOR the learner — what's confusing, a bug, an idea, or praise. No grade, no admin key. Use it the moment a learner is stuck or reacts to something, AND always offer it when a session wraps ('anything confusing, or that you wish it did?'). Routes to the team's Slack + the feedback log so friction becomes a signal instead of a 1:1 text.
输入模式
{'type': 'object', 'required': ['message'], 'properties': {'kind': {'enum': ['stuck', 'bug', 'idea', 'praise', 'other'], 'type': 'string', 'description': 'Optional category.'}, 'lesson': {'type': 'string', 'description': "Optional: the lesson slug it's about."}, 'learner': {'type': 'string', 'description': "Optional: the learner's name/email so the team can follow up."}, 'message': {'type': 'string', 'description': "The learner's feedback, in their own words (≤2000 chars)."}}, 'additionalProperties': False}
verify_ticket
OPERATOR (Capital Factory gift shop): validate a reward code (Golden Ticket GT- or Founding Graduate badge FG-) — returns who earned it, the reward, when, and whether it's been redeemed. Pass redeem:true to mark it redeemed at point of redemption. Requires admin_key.
输入模式
{'type': 'object', 'required': ['code', 'admin_key'], 'properties': {'code': {'type': 'string', 'description': 'The reward code, e.g. GT-AB12CD34 (Station ticket) or FG-AB12CD34 (Founding badge).'}, 'redeem': {'type': 'boolean', 'description': 'If true, mark the ticket redeemed now (one-way).'}, 'admin_key': {'type': 'string', 'description': 'Operator admin key (Worker secret ADMIN_KEY).'}}, 'additionalProperties': False}
已添加
submit_feedback
2026年9月17日 12:54
已添加
set_level
2026年9月17日 12:54
已添加
verify_ticket
2026年9月17日 12:54
已添加
course_stats
2026年9月17日 12:54
已添加
complete_lesson
2026年9月17日 12:54
已添加
get_lesson
2026年9月17日 12:54
已添加
list_lessons
2026年9月17日 12:54
已添加
start_session
2026年9月17日 12:54
已添加
overview
2026年9月17日 12:54