@jamestesting888/tum-mcp 0.4.1 → 0.6.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.
- package/CHANGELOG.md +29 -0
- package/NOTICE +2 -4
- package/README.md +157 -59
- package/docs/development.md +118 -80
- package/docs/setup.md +164 -147
- package/docs/study.md +325 -0
- package/docs/tum-mcp.md +184 -135
- package/npm/backend/manifest.json +3 -3
- package/npm/backend/requirements.txt +62 -17
- package/npm/backend/tum_mcp-0.6.0-py3-none-any.whl +0 -0
- package/npm/runtime.mjs +210 -62
- package/npm/tum-mcp.mjs +20 -8
- package/package.json +50 -11
- package/docs/credential-storage-options.md +0 -86
- package/npm/backend/tum_moodle_integration-0.4.1-py3-none-any.whl +0 -0
package/docs/study.md
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
# Course study projects
|
|
2
|
+
|
|
3
|
+
The five reading, study, audio and publishing skills ship with version **0.6.0**.
|
|
4
|
+
They run in your local agent, using the connected
|
|
5
|
+
MCP tools to read course sources. The CLI validates and stores the resulting local
|
|
6
|
+
files; it does not run an AI model.
|
|
7
|
+
|
|
8
|
+
## Publish a study website
|
|
9
|
+
|
|
10
|
+
The optional `publish-study` skill makes a prepared site accessible from a phone
|
|
11
|
+
or another computer. Its GitHub repository is private; the Pages website is
|
|
12
|
+
public. An eligible paid GitHub plan is required for Pages from private repositories.
|
|
13
|
+
This workflow does not provide private website access. Review lesson text,
|
|
14
|
+
quotations and source links for the intended public audience before publishing.
|
|
15
|
+
|
|
16
|
+
Install GitHub CLI on the execution host and run `gh auth login --hostname github.com`.
|
|
17
|
+
`tum-mcp doctor` checks CLI availability without network access; `doctor --live`
|
|
18
|
+
also verifies GitHub authentication. It does not publish anything, open sign-in
|
|
19
|
+
automatically, extract tokens, or change Git credential settings.
|
|
20
|
+
|
|
21
|
+
```sh
|
|
22
|
+
# Preview the chosen name and hosting requirements without GitHub mutations.
|
|
23
|
+
tum-mcp study publish --project PROJECT
|
|
24
|
+
# After choosing public website content; the repository stays private.
|
|
25
|
+
tum-mcp study publish --project PROJECT --public-site
|
|
26
|
+
# Optional account/name override on first setup:
|
|
27
|
+
tum-mcp study publish --project PROJECT --public-site --repository OWNER/NAME
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Names use `study-<course>-<semester>` in lowercase with hyphens. A collision gets
|
|
31
|
+
a stable course suffix; existing repositories are never made public. Settings in
|
|
32
|
+
`.study/github.json` bind updates to that course, semester and repository. A
|
|
33
|
+
failed setup retries the same saved repository rather than creating duplicates.
|
|
34
|
+
|
|
35
|
+
Only the generated website renderer and lesson data are uploaded. Downloaded
|
|
36
|
+
originals, credentials, AGENTS.md, study inventory, passage comments, progress,
|
|
37
|
+
audio and arbitrary files stay local. Git itself is not required: the publisher
|
|
38
|
+
uses authenticated GitHub API calls through `gh`. Local publication settings do
|
|
39
|
+
not contain credentials.
|
|
40
|
+
|
|
41
|
+
After setup, successful `tum-mcp study build PROJECT` commands update that same
|
|
42
|
+
repository automatically. Unchanged verified exports require no network calls
|
|
43
|
+
or commits. The study skills finish related edits in one build. Remote edits
|
|
44
|
+
are preserved for review; the publisher never force-pushes.
|
|
45
|
+
|
|
46
|
+
```sh
|
|
47
|
+
tum-mcp study publish status PROJECT
|
|
48
|
+
tum-mcp study publish sync PROJECT # retry pending/failed deployment
|
|
49
|
+
tum-mcp study publish pause PROJECT # pause future automatic uploads
|
|
50
|
+
tum-mcp study publish resume PROJECT
|
|
51
|
+
tum-mcp study build PROJECT --local-only # skip uploading this build
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Uploads are verified against the Pages build and GitHub checks for the exact
|
|
55
|
+
commit. Pending deployment exits with code 2 and is resumable; a successful
|
|
56
|
+
repository update alone is not a deployed site. Authentication, plan or network
|
|
57
|
+
failures preserve the local build. Polling has a budget of at most 60 seconds,
|
|
58
|
+
in addition to bounded API requests.
|
|
59
|
+
The `tum-mcp study` launcher prints local, hosted and repository URLs, plus pending
|
|
60
|
+
or paused status. Study progress remains per browser; passage comments require
|
|
61
|
+
the local preview and are disabled in the hosted export. Device synchronization
|
|
62
|
+
and offline support are not included.
|
|
63
|
+
|
|
64
|
+
## Start with one course
|
|
65
|
+
|
|
66
|
+
Use `sync-study` for both initial setup and later source updates. For a new project,
|
|
67
|
+
provide the course title and semester when known. The agent verifies
|
|
68
|
+
its availability, resolves source IDs and asks about ambiguous mappings. A project
|
|
69
|
+
cannot switch course or semester. Use a separate directory for another course.
|
|
70
|
+
|
|
71
|
+
```text
|
|
72
|
+
Initialize ./pse-ws26 for Patterns in Software Engineering (WS26/27).
|
|
73
|
+
Use its available Artemis teaching material and record any missing sources.
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
The agent inventories Moodle materials, announcements and forums; Artemis
|
|
77
|
+
lectures, learning units, student slides and statements; and mapped Zulip course
|
|
78
|
+
discussions. It reads only enabled sources. An unavailable login or partially
|
|
79
|
+
retrieved source is recorded as a gap rather than an empty course.
|
|
80
|
+
|
|
81
|
+
```text
|
|
82
|
+
pse-ws26/
|
|
83
|
+
AGENTS.md Course knowledge and current inventory
|
|
84
|
+
materials/
|
|
85
|
+
content/ Lectures, slides and reading
|
|
86
|
+
exams/ Available revision material
|
|
87
|
+
exercises/ Released statements and practice references
|
|
88
|
+
other/ Announcements and course information
|
|
89
|
+
.study/state.json Course binding, source versions and coverage
|
|
90
|
+
study/ Optional interactive study website
|
|
91
|
+
audio/ Optional category audio derived from the prepared website
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
`AGENTS.md` contains a concise prerequisite/notation map, verified assessment facts,
|
|
95
|
+
source locations, coverage and next actions. Detailed source content stays in
|
|
96
|
+
materials. Existing user instructions are preserved; source text is untrusted data.
|
|
97
|
+
|
|
98
|
+
## State-based workflow
|
|
99
|
+
|
|
100
|
+
`sync-study` starts with `tum-mcp study status PROJECT`, a read-only local check:
|
|
101
|
+
|
|
102
|
+
| Mode | Action |
|
|
103
|
+
| --- | --- |
|
|
104
|
+
| `initialize` | Verify the chosen available course, then initialize its inventory. |
|
|
105
|
+
| `sync` | Reuse the bound course/semester and known source IDs; check the requested changes. |
|
|
106
|
+
| `recover` | Inspect incomplete, damaged or conflicting local state before writing. |
|
|
107
|
+
|
|
108
|
+
Existing material without state is inspected before adoption. Damaged state and
|
|
109
|
+
customized instructions are preserved; they are never treated as an empty project.
|
|
110
|
+
The status check does not authenticate services or prove upstream freshness.
|
|
111
|
+
The underlying `study init` and `study sync` commands remain separate.
|
|
112
|
+
|
|
113
|
+
## Keep it current
|
|
114
|
+
|
|
115
|
+
Ask `sync-study` to compare the project with connected upstream sources. It
|
|
116
|
+
reuses the saved course, semester, source IDs and reliable revisions. It retrieves
|
|
117
|
+
changed material and updates course knowledge. Incomplete listings never imply withdrawal. Withdrawn sources
|
|
118
|
+
keep their local originals; edited or deleted managed files are reported for review.
|
|
119
|
+
Unchanged payloads can be reused when their source binding, URL, locator and
|
|
120
|
+
reliable revision match. Pending content stays pending across repeated checks;
|
|
121
|
+
a metadata-only check cannot make unfetched content current.
|
|
122
|
+
|
|
123
|
+
The agent updates course facts outside the inventory block. The helper checks
|
|
124
|
+
that its managed block has not been edited before replacing it. LF/CRLF
|
|
125
|
+
conversions are accepted, and synchronization preserves the existing line-ending style. A failed write
|
|
126
|
+
restores files when possible and reports any remaining conflict.
|
|
127
|
+
|
|
128
|
+
## Prepare the website
|
|
129
|
+
|
|
130
|
+
Ask `prepare-study` to create or extend `study/`. Units follow the course's
|
|
131
|
+
lecture/week sequence when useful, or use consistent topics. For a single course, use a flat list or one category level followed by topics,
|
|
132
|
+
including several topics in one week. The multi-area demo also exercises deeper
|
|
133
|
+
legacy hierarchies. Every unit has:
|
|
134
|
+
|
|
135
|
+
- A concise explanation with source links, assumptions and worked examples.
|
|
136
|
+
- Editable LaTeX formulas and inline variables, diagrams, code or comparison tables where they explain the concept.
|
|
137
|
+
- Flip cards with arrow navigation, Space to flip and 1/2 for Again/Got it.
|
|
138
|
+
- Practice questions with exactly four options, one justified answer and feedback for every option.
|
|
139
|
+
|
|
140
|
+
The agent uses stored material first, so local content edits work offline. Ask for
|
|
141
|
+
an upstream refresh when you want new course content; an existing check is reused
|
|
142
|
+
within the same request. Unchanged units and reviewed material are retained.
|
|
143
|
+
|
|
144
|
+
The skill audits objective coverage, technical accuracy and distractors. Its
|
|
145
|
+
STE-inspired English uses short, direct sentences while retaining necessary terms
|
|
146
|
+
and conditions. The design contract uses TUM blue/navy with quiet reading surfaces,
|
|
147
|
+
local fonts, light/dark themes, keyboard navigation and a phone layout. The outline
|
|
148
|
+
collapses using a midpoint boundary arrow revealed on hover or keyboard focus;
|
|
149
|
+
touch screens keep a visible control. On phones it opens a viewport overlay from
|
|
150
|
+
any reading position, with its own scroll and Escape to close. Theme stays in the
|
|
151
|
+
outline; the reset icon is on the course home. A Next link follows the active
|
|
152
|
+
activity at the end of each view.
|
|
153
|
+
|
|
154
|
+
Revision combines flashcards and practice from topics you select. Open Revision in
|
|
155
|
+
the outline, choose topics and collapse the checklist when ready. It reuses the
|
|
156
|
+
course's categories; selecting a category includes all its topics, and a mixed
|
|
157
|
+
checkbox shows a partly selected category. Revision reuses the
|
|
158
|
+
original items, sources and progress; selecting or removing topics never clears
|
|
159
|
+
your results. The topic selection is remembered locally for this course.
|
|
160
|
+
|
|
161
|
+
The topic picker and its nested categories collapse independently. You can select a
|
|
162
|
+
whole category while it is closed; its count and mixed state reflect the selection.
|
|
163
|
+
At End of set, outlined question rows include a Review action and chevron. Click
|
|
164
|
+
one to review it in a popup. Closing the popup returns
|
|
165
|
+
you to the same results row without changing progress.
|
|
166
|
+
|
|
167
|
+
The website uses Atkinson Hyperlegible Next for headings, explanations and controls.
|
|
168
|
+
Code and mathematical notation retain their specialist fonts. Equations adapt to
|
|
169
|
+
their container and keep local horizontal scrolling for indivisible wide expressions.
|
|
170
|
+
Use `\(v_i\)` in teaching text for inline variables and short expressions (JSON:
|
|
171
|
+
`"Use \\(v_i\\)."`). They compile locally to native MathML, including in tables,
|
|
172
|
+
glossaries, cards, questions and feedback. Code and dollar signs stay literal.
|
|
173
|
+
|
|
174
|
+
Select text in Content, Flashcards or Practice, then click **Comment** to record what is unclear.
|
|
175
|
+
You can also use Ctrl/Command+Alt+M after selecting text. The local preview saves
|
|
176
|
+
notes in `.study/comments.json`, separately from learning progress. Click a
|
|
177
|
+
numbered passage marker or highlighted text to open its notes beside the quote.
|
|
178
|
+
Markers sit beside section headings or the current card/question position.
|
|
179
|
+
Notes can be edited, resolved or reopened; changed passages retain their original quotes.
|
|
180
|
+
Revision notes retain their original topic and card/question identity.
|
|
181
|
+
|
|
182
|
+
Tell your agent: **“Address the open comments in this study project.”** The skill
|
|
183
|
+
reads the notes, checks the cited material, improves the affected explanation and
|
|
184
|
+
verifies the result before recording a resolution. Notes and status changes sync
|
|
185
|
+
automatically while the preview is open. Your draft is kept if a note changes
|
|
186
|
+
elsewhere; choose Use latest or Keep mine before saving. Reload after the agent
|
|
187
|
+
rebuilds the teaching content.
|
|
188
|
+
|
|
189
|
+
Content lives in `study/content.json`; shared renderer modules and CSS keep the
|
|
190
|
+
site extensible. Source hashes identify affected units. A stale source stops a
|
|
191
|
+
build until the explanation is reviewed. Unchanged units retain their revision;
|
|
192
|
+
revised questions receive separate progress. Customized templates are preserved
|
|
193
|
+
and reported, so the agent must review compatibility when extending them.
|
|
194
|
+
|
|
195
|
+
```sh
|
|
196
|
+
tum-mcp study inspect ./pse-ws26
|
|
197
|
+
tum-mcp study build ./pse-ws26
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
From the course project folder, launch the prepared app with:
|
|
201
|
+
|
|
202
|
+
```sh
|
|
203
|
+
tum-mcp study
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
It opens the default browser at `http://127.0.0.1:8765`. Keep the terminal open;
|
|
207
|
+
press Ctrl+C to stop. In WSL, it opens the Windows browser through Windows interop.
|
|
208
|
+
If automatic opening is unavailable, open the printed URL. For a different project
|
|
209
|
+
or an unattended preview, use `tum-mcp study serve ./pse-ws26 --port 8765`.
|
|
210
|
+
If port 8765 is busy, stop the other preview or choose `tum-mcp study --port 8766`.
|
|
211
|
+
Keep the same address and port between sessions so browser progress remains available.
|
|
212
|
+
|
|
213
|
+
The preview binds `127.0.0.1`, serves `study/` and saves comments through a bounded
|
|
214
|
+
same-origin endpoint. It makes no campus requests.
|
|
215
|
+
No course credentials are copied into the website. Browser storage holds progress
|
|
216
|
+
locally. Nothing is published by these commands.
|
|
217
|
+
|
|
218
|
+
## Create and maintain audio notes
|
|
219
|
+
|
|
220
|
+
Use `prepare-study` to author the interactive course, then ask `audio-notes` to
|
|
221
|
+
convert that prepared content into spoken lessons. For example:
|
|
222
|
+
|
|
223
|
+
```text
|
|
224
|
+
Create audio notes from this prepared study website, one file per category.
|
|
225
|
+
Keep course outputs under audio/; prefer free ElevenLabs with local Kokoro fallback.
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Audio Notes reads `study/content.json`, retaining the course's language, examples,
|
|
229
|
+
assumptions and limitations. It turns tables, formulas, code and diagram sequences
|
|
230
|
+
into explanations that work without a screen. It does not independently research
|
|
231
|
+
the course or create new subject matter. An audio-only request reuses the prepared
|
|
232
|
+
course; it does not refresh campus sources or rebuild the website automatically.
|
|
233
|
+
|
|
234
|
+
Before synthesis, Audio Notes consolidates repeated explanations and reviews the
|
|
235
|
+
script for coverage, clear terminology, concise examples and useful recall. It
|
|
236
|
+
preserves distinct ideas and conditions rather than targeting a fixed duration.
|
|
237
|
+
Teaching reviews are tied to the script and narration-guidance fingerprints;
|
|
238
|
+
updated guidance prompts a review of existing scripts without automatically
|
|
239
|
+
regenerating unchanged speech. These checks do not establish learning outcomes.
|
|
240
|
+
|
|
241
|
+
All course-specific audio files stay inside the project's `audio/` directory:
|
|
242
|
+
|
|
243
|
+
```text
|
|
244
|
+
audio/
|
|
245
|
+
scripts/01_category.txt Editable narration, matching the track name
|
|
246
|
+
tracks/01_category.m4a One final AAC M4A per category
|
|
247
|
+
chapters/01_category.json Section titles and measured timestamps
|
|
248
|
+
manifest.json Last verified published coverage and fingerprints
|
|
249
|
+
plan.json Current categories and missing/changed/pending work
|
|
250
|
+
voice.json Actual provider, voice and settings; no credentials
|
|
251
|
+
playlist.m3u Tracks in the intended study order
|
|
252
|
+
README.md Playback, durations and update details
|
|
253
|
+
SOURCES.md Prepared content and original source locators
|
|
254
|
+
COVERAGE.md Source concepts mapped to narration and audio
|
|
255
|
+
.build/ Candidates, resumable chunks, downloads and QA
|
|
256
|
+
archive/ Recoverable superseded versions
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Names remain stable across updates, using prefixes and slugs such as
|
|
260
|
+
`01_security-foundations`. New content within a category updates that complete
|
|
261
|
+
track; a new category receives a new track. Existing audio is compared with
|
|
262
|
+
semantic content and file hashes, so unchanged speech can be reused. Scripts alone
|
|
263
|
+
do not count as completed audio coverage. Manual edits are preserved and reconciled.
|
|
264
|
+
|
|
265
|
+
The skill prefers free ElevenLabs when custom-text generation and downloading work.
|
|
266
|
+
Its anonymous website and authenticated API have different access requirements.
|
|
267
|
+
If free usage runs out or that route is unavailable, local Kokoro is the automatic
|
|
268
|
+
fallback unless the user explicitly restricts the provider. Affected categories
|
|
269
|
+
are regenerated with one Kokoro profile; completed categories remain intact.
|
|
270
|
+
Each category keeps its actual profile on later updates, and mixed providers across
|
|
271
|
+
categories are disclosed. Usage limits are respected; no paid usage or quota
|
|
272
|
+
workarounds are implied. Only reviewed narration goes to a cloud speech provider.
|
|
273
|
+
|
|
274
|
+
Kokoro weights, voices and pronunciation assets are cached once per execution
|
|
275
|
+
host/user, outside the course, with a reusable isolated runtime. The skill specifies
|
|
276
|
+
Windows, macOS and Linux locations, version/hash verification and safe cache reuse.
|
|
277
|
+
Course manifests record portable dependency identities rather than requiring a
|
|
278
|
+
previous machine's model paths. Setup is lazy, only when local synthesis is needed.
|
|
279
|
+
Actual OS/architecture, runtime and course-language compatibility are checked before
|
|
280
|
+
generation; unsupported or restricted hosts retain pending work with an explanation.
|
|
281
|
+
|
|
282
|
+
Candidates are validated before replacing usable tracks. Incomplete generations
|
|
283
|
+
remain pending with reusable work under `.build/`. Ask **“Complete the audio notes
|
|
284
|
+
for the updated study website”** to reconcile added, changed, removed or moved
|
|
285
|
+
material with the previous verified coverage. This is an agent skill, not a new
|
|
286
|
+
`tum-mcp study` CLI subcommand or a built-in speech service.
|
|
287
|
+
|
|
288
|
+
## Packaged app template
|
|
289
|
+
|
|
290
|
+
The complete web-app template is packaged with `prepare-study` in `assets/site/`.
|
|
291
|
+
It includes the shell, navigation, flip cards, practice, diagrams and styling.
|
|
292
|
+
Agents author course content in `study/content.json`; `study build` installs the
|
|
293
|
+
shared template, preserves customized files and checks sources. This keeps new
|
|
294
|
+
course sites consistent without rebuilding the interface. `tum-mcp study template`
|
|
295
|
+
shows the bundled files and their combined revision for reproducible development.
|
|
296
|
+
|
|
297
|
+
## Try the synthetic example
|
|
298
|
+
|
|
299
|
+
After installing a locally built development artifact:
|
|
300
|
+
|
|
301
|
+
```sh
|
|
302
|
+
tum-mcp study demo ./algorithms-demo
|
|
303
|
+
tum-mcp study serve ./algorithms-demo
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
This creates a clearly labelled synthetic course on graphs, BFS and DFS, including
|
|
307
|
+
LaTeX rendered as native MathML, a step-through graph, comparison tables, flashcards and practice.
|
|
308
|
+
It uses no campus account. An existing edited demo is preserved.
|
|
309
|
+
|
|
310
|
+
## Local helper inputs
|
|
311
|
+
|
|
312
|
+
Agents use `tum-mcp study schema snapshot` and `tum-mcp study schema content` for
|
|
313
|
+
validated input schemas. After authenticated tools verify availability, the agent
|
|
314
|
+
stages a source snapshot with exact course identity, coverage and resource revisions.
|
|
315
|
+
The helper does not authenticate the snapshot or grant any campus access itself.
|
|
316
|
+
|
|
317
|
+
```sh
|
|
318
|
+
tum-mcp study init PROJECT --course "Exact course title" --snapshot snapshot.json
|
|
319
|
+
tum-mcp study sync PROJECT --snapshot snapshot.json
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Import paths are confined to the snapshot directory. Data is stored under the
|
|
323
|
+
bound project; credentials and unrelated personal records must never enter it.
|
|
324
|
+
Keep real course projects private and out of package artifacts. Uninstalling the
|
|
325
|
+
package preserves projects; remove your own project directory separately when wanted.
|