education-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/LICENSE +21 -0
  2. package/PRIVACY.md +53 -0
  3. package/README.md +144 -0
  4. package/TERMS.md +57 -0
  5. package/dist/index.d.ts +16 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +27 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/server.d.ts +8 -0
  10. package/dist/server.d.ts.map +1 -0
  11. package/dist/server.js +191 -0
  12. package/dist/server.js.map +1 -0
  13. package/dist/tools/explain-concept.d.ts +9 -0
  14. package/dist/tools/explain-concept.d.ts.map +1 -0
  15. package/dist/tools/explain-concept.js +168 -0
  16. package/dist/tools/explain-concept.js.map +1 -0
  17. package/dist/tools/generate-exercise.d.ts +8 -0
  18. package/dist/tools/generate-exercise.d.ts.map +1 -0
  19. package/dist/tools/generate-exercise.js +364 -0
  20. package/dist/tools/generate-exercise.js.map +1 -0
  21. package/dist/tools/generate-flashcards.d.ts +9 -0
  22. package/dist/tools/generate-flashcards.d.ts.map +1 -0
  23. package/dist/tools/generate-flashcards.js +131 -0
  24. package/dist/tools/generate-flashcards.js.map +1 -0
  25. package/dist/tools/generate-lesson-plan.d.ts +8 -0
  26. package/dist/tools/generate-lesson-plan.d.ts.map +1 -0
  27. package/dist/tools/generate-lesson-plan.js +169 -0
  28. package/dist/tools/generate-lesson-plan.js.map +1 -0
  29. package/dist/tools/generate-quiz.d.ts +9 -0
  30. package/dist/tools/generate-quiz.d.ts.map +1 -0
  31. package/dist/tools/generate-quiz.js +153 -0
  32. package/dist/tools/generate-quiz.js.map +1 -0
  33. package/dist/tools/grade-rubric.d.ts +8 -0
  34. package/dist/tools/grade-rubric.d.ts.map +1 -0
  35. package/dist/tools/grade-rubric.js +354 -0
  36. package/dist/tools/grade-rubric.js.map +1 -0
  37. package/dist/tools/index.d.ts +7 -0
  38. package/dist/tools/index.d.ts.map +1 -0
  39. package/dist/tools/index.js +7 -0
  40. package/dist/tools/index.js.map +1 -0
  41. package/dist/types.d.ts +215 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +9 -0
  44. package/dist/types.js.map +1 -0
  45. package/dist/utils/helpers.d.ts +41 -0
  46. package/dist/utils/helpers.d.ts.map +1 -0
  47. package/dist/utils/helpers.js +134 -0
  48. package/dist/utils/helpers.js.map +1 -0
  49. package/dist/utils/index.d.ts +2 -0
  50. package/dist/utils/index.d.ts.map +1 -0
  51. package/dist/utils/index.js +2 -0
  52. package/dist/utils/index.js.map +1 -0
  53. package/package.json +55 -0
@@ -0,0 +1,354 @@
1
+ /**
2
+ * grade_rubric — Create grading rubrics for assignments.
3
+ *
4
+ * Generates structured rubrics with criteria, weights, levels, and descriptors.
5
+ */
6
+ import { timestamp, clamp, requireNonEmpty, rubricLabels, } from "../utils/helpers.js";
7
+ const ESSAY_CRITERIA = [
8
+ {
9
+ name: "Thesis & Argument",
10
+ weight: 30,
11
+ description: "Clarity, strength, and originality of the thesis statement and supporting arguments.",
12
+ levelDescriptions: (labels) => [
13
+ "No clear thesis. Arguments are absent or incoherent.",
14
+ "Thesis is vague or simplistic. Arguments lack sufficient support.",
15
+ "Clear thesis with well-supported arguments. Some original thinking evident.",
16
+ "Exceptional thesis with compelling, nuanced arguments. Demonstrates sophisticated critical thinking.",
17
+ ],
18
+ },
19
+ {
20
+ name: "Evidence & Analysis",
21
+ weight: 25,
22
+ description: "Quality and relevance of evidence; depth of analysis connecting evidence to claims.",
23
+ levelDescriptions: (labels) => [
24
+ "Little to no evidence provided. No analysis present.",
25
+ "Some evidence included but analysis is superficial or disconnected.",
26
+ "Relevant evidence with clear analysis linking evidence to claims.",
27
+ "Exceptional use of diverse, credible evidence with insightful analysis.",
28
+ ],
29
+ },
30
+ {
31
+ name: "Organization & Structure",
32
+ weight: 20,
33
+ description: "Logical flow, paragraph structure, transitions, and overall coherence.",
34
+ levelDescriptions: (labels) => [
35
+ "No discernible organization. Ideas are scattered and confusing.",
36
+ "Basic structure present but transitions are weak. Some paragraphs lack focus.",
37
+ "Well-organized with clear paragraphs and effective transitions.",
38
+ "Masterful organization that enhances the argument. Seamless transitions throughout.",
39
+ ],
40
+ },
41
+ {
42
+ name: "Writing Mechanics",
43
+ weight: 15,
44
+ description: "Grammar, spelling, punctuation, sentence variety, and academic voice.",
45
+ levelDescriptions: (labels) => [
46
+ "Frequent errors that significantly impede comprehension.",
47
+ "Several errors present but meaning is generally clear.",
48
+ "Few minor errors. Writing is clear and uses appropriate academic voice.",
49
+ "Virtually error-free. Sophisticated sentence variety and masterful command of language.",
50
+ ],
51
+ },
52
+ {
53
+ name: "Citations & Formatting",
54
+ weight: 10,
55
+ description: "Proper use of citation format, bibliography, and document formatting.",
56
+ levelDescriptions: (labels) => [
57
+ "No citations or grossly incorrect formatting.",
58
+ "Inconsistent citations with formatting errors.",
59
+ "Correct citations with minor formatting issues.",
60
+ "Perfect citation format and professional document presentation.",
61
+ ],
62
+ },
63
+ ];
64
+ const PRESENTATION_CRITERIA = [
65
+ {
66
+ name: "Content Knowledge",
67
+ weight: 30,
68
+ description: "Depth of understanding, accuracy of information, and completeness of coverage.",
69
+ levelDescriptions: () => [
70
+ "Inaccurate or missing content. Shows minimal understanding.",
71
+ "Basic content covered with some gaps. Understanding is surface-level.",
72
+ "Accurate, thorough content demonstrating solid understanding.",
73
+ "Exceptional depth showing expert-level mastery and original insights.",
74
+ ],
75
+ },
76
+ {
77
+ name: "Delivery & Communication",
78
+ weight: 25,
79
+ description: "Speaking clarity, eye contact, confidence, pacing, and audience engagement.",
80
+ levelDescriptions: () => [
81
+ "Reads directly from notes. Inaudible or unclear. No audience engagement.",
82
+ "Mostly reads from slides. Limited eye contact. Uneven pacing.",
83
+ "Speaks clearly with good eye contact. Engages audience. Appropriate pacing.",
84
+ "Commanding delivery. Natural, conversational style. Captivates the audience.",
85
+ ],
86
+ },
87
+ {
88
+ name: "Visual Aids & Design",
89
+ weight: 20,
90
+ description: "Quality of slides/visuals, design consistency, and effective use of media.",
91
+ levelDescriptions: () => [
92
+ "No visuals or visuals detract from presentation. Walls of text.",
93
+ "Basic visuals with some design issues. Text-heavy slides.",
94
+ "Clean, professional design. Visuals enhance understanding.",
95
+ "Outstanding design. Creative, purposeful visuals that elevate the presentation.",
96
+ ],
97
+ },
98
+ {
99
+ name: "Q&A & Critical Thinking",
100
+ weight: 15,
101
+ description: "Ability to answer questions, handle challenges, and demonstrate deeper thinking.",
102
+ levelDescriptions: () => [
103
+ "Unable to answer questions. Cannot elaborate beyond slides.",
104
+ "Answers basic questions but struggles with follow-ups.",
105
+ "Handles questions confidently. Shows understanding beyond the prepared content.",
106
+ "Expertly addresses all questions. Provides nuanced, insightful responses.",
107
+ ],
108
+ },
109
+ {
110
+ name: "Time Management",
111
+ weight: 10,
112
+ description: "Adherence to time limits and appropriate allocation of time across sections.",
113
+ levelDescriptions: () => [
114
+ "Significantly over or under time. No sense of pacing.",
115
+ "Somewhat over/under time. Some sections rushed or dragged.",
116
+ "Within time limits. Sections appropriately balanced.",
117
+ "Perfect timing with smooth transitions and well-paced sections.",
118
+ ],
119
+ },
120
+ ];
121
+ const PROJECT_CRITERIA = [
122
+ {
123
+ name: "Project Goals & Planning",
124
+ weight: 20,
125
+ description: "Clarity of goals, feasibility of plan, and quality of project management.",
126
+ levelDescriptions: () => [
127
+ "No clear goals or plan. Project lacks direction.",
128
+ "Basic goals stated but plan is incomplete or unrealistic.",
129
+ "Clear, achievable goals with a well-structured plan and timeline.",
130
+ "Exceptional planning with detailed milestones, contingencies, and resource management.",
131
+ ],
132
+ },
133
+ {
134
+ name: "Execution & Quality",
135
+ weight: 30,
136
+ description: "Quality of work produced, technical skill, and attention to detail.",
137
+ levelDescriptions: () => [
138
+ "Project is incomplete or shows minimal effort.",
139
+ "Project is complete but quality is inconsistent.",
140
+ "High-quality work demonstrating strong skills and attention to detail.",
141
+ "Outstanding execution exceeding expectations. Professional-grade quality.",
142
+ ],
143
+ },
144
+ {
145
+ name: "Creativity & Innovation",
146
+ weight: 20,
147
+ description: "Originality of approach, creative problem-solving, and innovative thinking.",
148
+ levelDescriptions: () => [
149
+ "No original thinking. Follows template without adaptation.",
150
+ "Some creative elements but largely conventional approach.",
151
+ "Creative approach with original ideas and innovative solutions.",
152
+ "Highly innovative. Pushes boundaries and demonstrates exceptional creativity.",
153
+ ],
154
+ },
155
+ {
156
+ name: "Documentation & Reflection",
157
+ weight: 15,
158
+ description: "Quality of documentation, process reflection, and lessons learned.",
159
+ levelDescriptions: () => [
160
+ "No documentation. No reflection on process.",
161
+ "Minimal documentation. Superficial reflection.",
162
+ "Thorough documentation with meaningful reflection on the process.",
163
+ "Exceptional documentation. Deep, insightful reflection with clear lessons learned.",
164
+ ],
165
+ },
166
+ {
167
+ name: "Collaboration (if applicable)",
168
+ weight: 15,
169
+ description: "Teamwork, communication, equitable contribution, and conflict resolution.",
170
+ levelDescriptions: () => [
171
+ "Did not contribute meaningfully. Communication absent.",
172
+ "Contributed but unevenly. Communication was inconsistent.",
173
+ "Active, equitable contributor. Good communication and teamwork.",
174
+ "Exceptional team player. Elevated the group's work through leadership and collaboration.",
175
+ ],
176
+ },
177
+ ];
178
+ const LAB_REPORT_CRITERIA = [
179
+ {
180
+ name: "Hypothesis & Purpose",
181
+ weight: 15,
182
+ description: "Clarity of hypothesis, connection to theory, and statement of purpose.",
183
+ levelDescriptions: () => [
184
+ "No hypothesis or purpose stated.",
185
+ "Vague hypothesis that is not clearly testable.",
186
+ "Clear, testable hypothesis connected to relevant theory.",
187
+ "Sophisticated hypothesis with strong theoretical grounding and clear predictions.",
188
+ ],
189
+ },
190
+ {
191
+ name: "Methodology",
192
+ weight: 25,
193
+ description: "Completeness of procedure, appropriateness of methods, and reproducibility.",
194
+ levelDescriptions: () => [
195
+ "Procedure is missing or incomprehensible.",
196
+ "Procedure present but has gaps. Would be difficult to reproduce.",
197
+ "Clear, complete procedure. Another student could reproduce the experiment.",
198
+ "Detailed, rigorous methodology with controls, variables, and safety considerations.",
199
+ ],
200
+ },
201
+ {
202
+ name: "Data & Results",
203
+ weight: 25,
204
+ description: "Accuracy of data collection, appropriate presentation (tables/graphs), and calculations.",
205
+ levelDescriptions: () => [
206
+ "No data collected or data is clearly inaccurate.",
207
+ "Data collected but presentation is disorganized. Errors in calculations.",
208
+ "Accurate data with clear tables/graphs. Correct calculations.",
209
+ "Thorough data collection with professional visualization. Statistical analysis included.",
210
+ ],
211
+ },
212
+ {
213
+ name: "Analysis & Conclusion",
214
+ weight: 25,
215
+ description: "Depth of analysis, connection to hypothesis, discussion of errors and limitations.",
216
+ levelDescriptions: () => [
217
+ "No analysis. Conclusion is absent or unrelated to data.",
218
+ "Basic analysis but conclusion is not well-supported by data.",
219
+ "Solid analysis connecting results to hypothesis. Discusses sources of error.",
220
+ "Insightful analysis with thorough error discussion. Suggests improvements and future experiments.",
221
+ ],
222
+ },
223
+ {
224
+ name: "Formatting & References",
225
+ weight: 10,
226
+ description: "Adherence to lab report format, proper citations, and professional presentation.",
227
+ levelDescriptions: () => [
228
+ "Format is incorrect. No references.",
229
+ "Partial adherence to format. Incomplete references.",
230
+ "Correct format with proper references.",
231
+ "Professional presentation. Thorough, correctly formatted references.",
232
+ ],
233
+ },
234
+ ];
235
+ const CODE_CRITERIA = [
236
+ {
237
+ name: "Correctness & Functionality",
238
+ weight: 35,
239
+ description: "Does the code work correctly? Does it handle edge cases? Does it produce correct output?",
240
+ levelDescriptions: () => [
241
+ "Code does not run or produces incorrect results.",
242
+ "Code runs but has bugs. Handles only basic cases.",
243
+ "Code works correctly for all specified requirements including edge cases.",
244
+ "Flawless functionality. Handles edge cases, invalid input, and boundary conditions gracefully.",
245
+ ],
246
+ },
247
+ {
248
+ name: "Code Quality & Style",
249
+ weight: 25,
250
+ description: "Readability, naming conventions, formatting, comments, and adherence to style guide.",
251
+ levelDescriptions: () => [
252
+ "Unreadable code. No comments. Poor naming conventions.",
253
+ "Some structure but inconsistent style. Minimal comments.",
254
+ "Clean, readable code with meaningful names and appropriate comments.",
255
+ "Exemplary code quality. Self-documenting with concise, helpful comments where needed.",
256
+ ],
257
+ },
258
+ {
259
+ name: "Design & Architecture",
260
+ weight: 20,
261
+ description: "Code organization, modularity, use of functions/classes, and design patterns.",
262
+ levelDescriptions: () => [
263
+ "Monolithic code with no structure. No functions or classes.",
264
+ "Some attempt at structure but code is still largely monolithic.",
265
+ "Well-structured with appropriate use of functions, classes, and modules.",
266
+ "Excellent architecture. Clean separation of concerns, appropriate design patterns, and extensibility.",
267
+ ],
268
+ },
269
+ {
270
+ name: "Testing",
271
+ weight: 10,
272
+ description: "Presence and quality of tests, coverage of edge cases, and test documentation.",
273
+ levelDescriptions: () => [
274
+ "No tests provided.",
275
+ "Minimal testing. Only tests happy path.",
276
+ "Good test coverage including edge cases.",
277
+ "Comprehensive test suite with unit, integration, and edge case tests. Clear test documentation.",
278
+ ],
279
+ },
280
+ {
281
+ name: "Documentation",
282
+ weight: 10,
283
+ description: "README, usage instructions, API documentation, and setup guide.",
284
+ levelDescriptions: () => [
285
+ "No documentation.",
286
+ "Minimal documentation. Missing key information.",
287
+ "Clear README with setup instructions and usage examples.",
288
+ "Comprehensive documentation including API docs, examples, architecture overview, and contribution guide.",
289
+ ],
290
+ },
291
+ ];
292
+ const ASSIGNMENT_TEMPLATES = {
293
+ essay: ESSAY_CRITERIA,
294
+ presentation: PRESENTATION_CRITERIA,
295
+ project: PROJECT_CRITERIA,
296
+ lab_report: LAB_REPORT_CRITERIA,
297
+ code: CODE_CRITERIA,
298
+ };
299
+ // ── Main ───────────────────────────────────────────────────────────────────────
300
+ export function gradeRubric(input) {
301
+ const assignmentTitle = requireNonEmpty(input.assignment_title, "assignment_title");
302
+ const assignmentType = requireNonEmpty(input.assignment_type, "assignment_type").toLowerCase();
303
+ const criteriaCount = clamp(input.criteria_count ?? 4, 2, 10);
304
+ const totalPoints = clamp(input.total_points ?? 100, 10, 1000);
305
+ const scaleLevels = clamp(input.scale_levels ?? 4, 3, 6);
306
+ const templates = ASSIGNMENT_TEMPLATES[assignmentType];
307
+ if (!templates) {
308
+ const valid = Object.keys(ASSIGNMENT_TEMPLATES).join(", ");
309
+ throw new Error(`Unknown assignment type: "${assignmentType}". Valid types: ${valid}`);
310
+ }
311
+ const labels = rubricLabels(scaleLevels);
312
+ const selectedTemplates = templates.slice(0, criteriaCount);
313
+ // Normalize weights to sum to 100
314
+ const totalWeight = selectedTemplates.reduce((sum, t) => sum + t.weight, 0);
315
+ const criteria = selectedTemplates.map((tpl) => {
316
+ const normalizedWeight = Math.round((tpl.weight / totalWeight) * 100);
317
+ const descriptions = tpl.levelDescriptions(labels);
318
+ const levels = labels.map((label, idx) => ({
319
+ score: Math.round((totalPoints * normalizedWeight / 100) * ((idx + 1) / scaleLevels)),
320
+ label,
321
+ description: descriptions[idx] ?? `Meets ${label.toLowerCase()} level expectations.`,
322
+ }));
323
+ return {
324
+ name: tpl.name,
325
+ weight: normalizedWeight,
326
+ description: tpl.description,
327
+ levels,
328
+ };
329
+ });
330
+ // Adjust weights to sum to exactly 100
331
+ const currentSum = criteria.reduce((s, c) => s + c.weight, 0);
332
+ if (currentSum !== 100 && criteria.length > 0) {
333
+ criteria[0].weight += 100 - currentSum;
334
+ }
335
+ const gradingNotes = [
336
+ `Total points: ${totalPoints}. Each criterion is weighted as shown.`,
337
+ `Use this rubric as a guide — provide specific feedback alongside scores.`,
338
+ `When a student falls between two levels, use the lower level's score as a base and add points for demonstrated strengths.`,
339
+ `Consider effort and improvement when providing qualitative feedback, even if the rubric is criterion-based.`,
340
+ `Share this rubric with students before the assignment so they understand expectations.`,
341
+ ];
342
+ return {
343
+ assignment_title: assignmentTitle,
344
+ assignment_type: assignmentType,
345
+ total_points: totalPoints,
346
+ criteria,
347
+ grading_notes: gradingNotes,
348
+ metadata: {
349
+ generated_at: timestamp(),
350
+ scale: `${scaleLevels}-point scale (${labels.join(", ")})`,
351
+ },
352
+ };
353
+ }
354
+ //# sourceMappingURL=grade-rubric.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grade-rubric.js","sourceRoot":"","sources":["../../src/tools/grade-rubric.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { generateQuiz } from "./generate-quiz.js";
2
+ export { generateLessonPlan } from "./generate-lesson-plan.js";
3
+ export { generateFlashcards } from "./generate-flashcards.js";
4
+ export { explainConcept } from "./explain-concept.js";
5
+ export { generateExercise } from "./generate-exercise.js";
6
+ export { gradeRubric } from "./grade-rubric.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { generateQuiz } from "./generate-quiz.js";
2
+ export { generateLessonPlan } from "./generate-lesson-plan.js";
3
+ export { generateFlashcards } from "./generate-flashcards.js";
4
+ export { explainConcept } from "./explain-concept.js";
5
+ export { generateExercise } from "./generate-exercise.js";
6
+ export { gradeRubric } from "./grade-rubric.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Core types for education-mcp tools.
3
+ */
4
+ export interface RateLimitConfig {
5
+ freeMonthlyLimit: number;
6
+ proMonthlyLimit: number;
7
+ proPriceUsd: number;
8
+ }
9
+ export declare const RATE_LIMITS: RateLimitConfig;
10
+ export type QuestionType = "multiple_choice" | "true_false" | "fill_in_blank";
11
+ export type DifficultyLevel = "easy" | "medium" | "hard";
12
+ export type AudienceLevel = "beginner" | "intermediate" | "expert";
13
+ export type AgeGroup = "elementary" | "middle_school" | "high_school" | "college" | "adult";
14
+ export interface QuizQuestion {
15
+ id: number;
16
+ type: QuestionType;
17
+ question: string;
18
+ options?: string[];
19
+ correct_answer: string;
20
+ explanation: string;
21
+ difficulty: DifficultyLevel;
22
+ }
23
+ export interface QuizResult {
24
+ topic: string;
25
+ difficulty: DifficultyLevel;
26
+ question_count: number;
27
+ questions: QuizQuestion[];
28
+ metadata: {
29
+ generated_at: string;
30
+ subject_area: string;
31
+ estimated_duration_minutes: number;
32
+ };
33
+ }
34
+ export interface GenerateQuizInput {
35
+ topic: string;
36
+ question_count?: number;
37
+ question_types?: QuestionType[];
38
+ difficulty?: DifficultyLevel;
39
+ subject?: string;
40
+ age_group?: AgeGroup;
41
+ }
42
+ export interface LessonObjective {
43
+ description: string;
44
+ bloom_level: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create";
45
+ }
46
+ export interface LessonActivity {
47
+ name: string;
48
+ duration_minutes: number;
49
+ description: string;
50
+ materials?: string[];
51
+ teacher_notes?: string;
52
+ }
53
+ export interface AssessmentItem {
54
+ type: "formative" | "summative";
55
+ description: string;
56
+ criteria?: string[];
57
+ }
58
+ export interface LessonPlanResult {
59
+ title: string;
60
+ subject: string;
61
+ grade_level: string;
62
+ duration_minutes: number;
63
+ objectives: LessonObjective[];
64
+ standards?: string[];
65
+ materials: string[];
66
+ warm_up: LessonActivity;
67
+ activities: LessonActivity[];
68
+ closure: LessonActivity;
69
+ assessment: AssessmentItem[];
70
+ differentiation: {
71
+ struggling: string;
72
+ advanced: string;
73
+ ell: string;
74
+ };
75
+ homework?: string;
76
+ metadata: {
77
+ generated_at: string;
78
+ };
79
+ }
80
+ export interface GenerateLessonPlanInput {
81
+ topic: string;
82
+ subject: string;
83
+ grade_level: string;
84
+ duration_minutes?: number;
85
+ objectives_count?: number;
86
+ include_standards?: boolean;
87
+ include_homework?: boolean;
88
+ }
89
+ export interface Flashcard {
90
+ id: number;
91
+ front: string;
92
+ back: string;
93
+ hint?: string;
94
+ tags: string[];
95
+ difficulty: DifficultyLevel;
96
+ /** Spaced repetition metadata */
97
+ sr: {
98
+ interval_days: number;
99
+ ease_factor: number;
100
+ repetitions: number;
101
+ };
102
+ }
103
+ export interface FlashcardDeckResult {
104
+ title: string;
105
+ topic: string;
106
+ card_count: number;
107
+ cards: Flashcard[];
108
+ study_tips: string[];
109
+ metadata: {
110
+ generated_at: string;
111
+ estimated_study_minutes: number;
112
+ review_schedule: string[];
113
+ };
114
+ }
115
+ export interface GenerateFlashcardsInput {
116
+ topic: string;
117
+ card_count?: number;
118
+ difficulty?: DifficultyLevel;
119
+ include_hints?: boolean;
120
+ tags?: string[];
121
+ }
122
+ export interface ConceptExplanation {
123
+ concept: string;
124
+ level: AudienceLevel;
125
+ age_group: AgeGroup;
126
+ explanation: string;
127
+ analogy?: string;
128
+ key_points: string[];
129
+ common_misconceptions: string[];
130
+ prerequisites: string[];
131
+ related_concepts: string[];
132
+ examples: string[];
133
+ further_reading?: string[];
134
+ metadata: {
135
+ generated_at: string;
136
+ word_count: number;
137
+ };
138
+ }
139
+ export interface ExplainConceptInput {
140
+ concept: string;
141
+ level?: AudienceLevel;
142
+ age_group?: AgeGroup;
143
+ include_analogy?: boolean;
144
+ include_examples?: boolean;
145
+ max_length?: number;
146
+ }
147
+ export type ExerciseSubject = "math" | "physics" | "chemistry" | "biology" | "computer_science";
148
+ export interface ExerciseStep {
149
+ step_number: number;
150
+ description: string;
151
+ formula?: string;
152
+ result?: string;
153
+ }
154
+ export interface Exercise {
155
+ id: number;
156
+ problem: string;
157
+ subject: ExerciseSubject;
158
+ difficulty: DifficultyLevel;
159
+ solution: {
160
+ steps: ExerciseStep[];
161
+ final_answer: string;
162
+ };
163
+ hints: string[];
164
+ common_mistakes: string[];
165
+ }
166
+ export interface ExerciseSetResult {
167
+ topic: string;
168
+ subject: ExerciseSubject;
169
+ exercise_count: number;
170
+ exercises: Exercise[];
171
+ metadata: {
172
+ generated_at: string;
173
+ estimated_completion_minutes: number;
174
+ skills_practiced: string[];
175
+ };
176
+ }
177
+ export interface GenerateExerciseInput {
178
+ topic: string;
179
+ subject: ExerciseSubject;
180
+ exercise_count?: number;
181
+ difficulty?: DifficultyLevel;
182
+ include_hints?: boolean;
183
+ show_steps?: boolean;
184
+ }
185
+ export interface RubricLevel {
186
+ score: number;
187
+ label: string;
188
+ description: string;
189
+ }
190
+ export interface RubricCriterion {
191
+ name: string;
192
+ weight: number;
193
+ description: string;
194
+ levels: RubricLevel[];
195
+ }
196
+ export interface GradeRubricResult {
197
+ assignment_title: string;
198
+ assignment_type: string;
199
+ total_points: number;
200
+ criteria: RubricCriterion[];
201
+ grading_notes: string[];
202
+ metadata: {
203
+ generated_at: string;
204
+ scale: string;
205
+ };
206
+ }
207
+ export interface GradeRubricInput {
208
+ assignment_title: string;
209
+ assignment_type: string;
210
+ criteria_count?: number;
211
+ total_points?: number;
212
+ scale_levels?: number;
213
+ subject?: string;
214
+ }
215
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,WAAW,EAAE,eAIzB,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG,iBAAiB,GAAG,YAAY,GAAG,eAAe,CAAC;AAC9E,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,eAAe,GAAG,aAAa,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5F,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,eAAe,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,0BAA0B,EAAE,MAAM,CAAC;KACpC,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,YAAY,EAAE,CAAC;IAChC,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB;AAID,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;CACtF;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,WAAW,GAAG,WAAW,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,eAAe,EAAE;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAID,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,eAAe,CAAC;IAC5B,iCAAiC;IACjC,EAAE,EAAE;QACF,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,uBAAuB,EAAE,MAAM,CAAC;QAChC,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAID,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,QAAQ,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,kBAAkB,CAAC;AAEhG,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE;QACR,KAAK,EAAE,YAAY,EAAE,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,4BAA4B,EAAE,MAAM,CAAC;QACrC,gBAAgB,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;CACH;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAID,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
package/dist/types.js ADDED
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Core types for education-mcp tools.
3
+ */
4
+ export const RATE_LIMITS = {
5
+ freeMonthlyLimit: 30,
6
+ proMonthlyLimit: -1,
7
+ proPriceUsd: 9.99,
8
+ };
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,CAAC,MAAM,WAAW,GAAoB;IAC1C,gBAAgB,EAAE,EAAE;IACpB,eAAe,EAAE,CAAC,CAAC;IACnB,WAAW,EAAE,IAAI;CAClB,CAAC"}