@jamestesting888/tum-mcp 0.6.1 → 0.8.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 CHANGED
@@ -1,5 +1,38 @@
1
1
  # Changes
2
2
 
3
+ ## 0.8.0 — 2026-10-26
4
+
5
+ - Read Artemis courses, lectures, exercises, own feedback and accessible Zulip
6
+ channels after sign-in without separate local scope grants. Preserve server
7
+ permissions, bounded queries and disabled remote writes.
8
+ - Keep standard `--help` for command discovery and guide agents toward relevant
9
+ current-semester metadata before retrieving course content.
10
+
11
+ ## 0.7.0 — 2026-10-26
12
+
13
+ - Share one course app between Study and Exercises, with a single workspace
14
+ selector in the sidebar footer and a responsive mobile outline.
15
+ - Add `prepare-exercises` for source-backed weekly exercises with optional hints,
16
+ explanations, solutions and prepared checks. Support editable tables, long math
17
+ and code drafts, graph selections/paths and line graph sample points. Open work
18
+ uses rubric comparison; the app does not execute code or grade proofs.
19
+ - Keep step navigation in place, shorten controls and show section sources through
20
+ compact reference icons. Preserve browser progress, drafts and passage comments.
21
+ - Use `.tum-mcp/` for private course state and a cited agent course handbook covering
22
+ course organization, schedules, coursework/platforms, assessment and bonus rules.
23
+ Track reviewed source versions, coverage gaps and changed supporting sources.
24
+ - Rename `sync-study` to `sync-course` and `publish-study` to `publish-course`;
25
+ retain managed migration for previous skill names and preserve personal overrides.
26
+ - Keep the shipped app a minimal reusable component template, explicitly distinct
27
+ from an example of good course teaching. Keep rich synthetic tests out of the package.
28
+
29
+ New projects use `app/`; existing `study/` websites remain supported. Run
30
+ `tum-mcp study upgrade PROJECT` explicitly to rename legacy `.study/` metadata;
31
+ it preserves private records and archives the old root instructions. The separate
32
+ `study build PROJECT --upgrade-layout` moves a verified legacy web folder to `app/`
33
+ with a backup. Neither package installation nor update migrates course folders or
34
+ rebuilds personal sites automatically. Exercise publication is opt-in.
35
+
3
36
  ## 0.6.1 — 2026-10-25
4
37
 
5
38
  - Make `tum-mcp update` download and validate the latest npm release before
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Connect your coding agent to Moodle, Artemis and Zulip. Read course content and
4
4
  build a private, source-backed study workspace. Unofficial; independent of TUM.
5
5
 
6
- **Latest release: [0.6.1](https://www.npmjs.com/package/@jamestesting888/tum-mcp).**
6
+ **Package: [@jamestesting888/tum-mcp](https://www.npmjs.com/package/@jamestesting888/tum-mcp).**
7
7
  [Release notes](CHANGELOG.md).
8
8
 
9
9
  ## Agent setup
@@ -30,14 +30,16 @@ npm install --global @jamestesting888/tum-mcp@latest
30
30
  tum-mcp setup --client codex
31
31
  tum-mcp connect
32
32
  tum-mcp doctor
33
+ tum-mcp --help
33
34
  ```
34
35
 
35
36
  Select services with **Space**, then **Enter**. Choose an installed browser and
36
37
  complete sign-in there. Only selected tabs open; Zulip needs no API key.
37
- Enable the [course and channel scopes](docs/tum-mcp.md#connections-and-scopes) you want to use.
38
+ Read access follows your campus account's permissions; no course/channel scope setup is needed.
39
+ Use `tum-mcp study build --help` for a command's options.
38
40
 
39
41
  Choose a client with `--client`: `codex`, `claude`, `cursor` or `antigravity`.
40
- Setup configures MCP and installs all five skills; follow any activation or
42
+ Setup configures MCP and installs all six skills; follow any activation or
41
43
  restart prompts. Use `generic` for manual MCP setup.
42
44
 
43
45
  For existing Cursor and Antigravity setups, run `tum-mcp update` to add the skills.
@@ -63,15 +65,16 @@ posting and read-state changes are unavailable.
63
65
 
64
66
  ### Skills and example requests
65
67
 
66
- The package includes five skills. Once you've chosen a course from
68
+ The package includes six skills. Once you've chosen a course from
67
69
  your connections, try requests like these:
68
70
 
69
71
  | Skill | Use it to | Example request |
70
72
  | --- | --- | --- |
71
73
  | `read-content` | Read and explain course sources with citations | "Can you explain what we covered in last week's lecture?" |
72
- | `sync-study` | Create or refresh a course project | "Set up a study project for this course." |
74
+ | `sync-course` | Create or refresh a course project | "Set up a study project for this course." |
73
75
  | `prepare-study` | Build lessons, flashcards and practice | "Make me a study website with flashcards and practice questions." |
74
- | `publish-study` | Put a prepared website on GitHub Pages | "Put my study site online so I can open it on my phone." |
76
+ | `prepare-exercises` | Prepare optional hints, checks and worked solutions | "Help me work through this week's exercises in the same app." |
77
+ | `publish-course` | Put a prepared website on GitHub Pages | "Put my study site online so I can open it on my phone." |
75
78
  | `audio-notes` | Save spoken lessons under `audio/` | "Turn this into audio notes I can listen to on the go." |
76
79
 
77
80
  Useful follow-ups in an existing project:
@@ -86,11 +89,12 @@ Client setup installs managed copies of the
86
89
 
87
90
  ### Recommended study flow
88
91
 
89
- 1. **`sync-study`**: Set up a project for your course and collect its material.
92
+ 1. **`sync-course`**: Set up a project for your course and collect its material.
90
93
  Use it again when new material is available.
91
94
  2. **`prepare-study`**: Turn that material into a study website with explanations,
92
- flashcards and practice questions.
93
- 3. **`publish-study`** (optional): Put the website online so you can study on your
95
+ flashcards and practice questions. Use **`prepare-exercises`** for released sheets
96
+ with prepared interactive guidance. Both workspaces share one app; either can come first.
97
+ 3. **`publish-course`** (optional): Put the website online so you can study on your
94
98
  phone. Check the [publishing requirements](#publish-for-phone-access-optional) first.
95
99
  4. **`audio-notes`** (optional): Turn the prepared content into spoken lessons.
96
100
  Use them to revisit prepared topics while walking or commuting.
@@ -130,7 +134,7 @@ See [publishing details](docs/study.md#publish-a-study-website).
130
134
  Sign-in and MFA happen in a temporary browser window. Only service-owned session
131
135
  cookies are retained; identity-provider cookies are discarded when it closes.
132
136
  Sessions stay on your computer in encrypted files with owner-restricted keys.
133
- Configured local clients share those connections and selected scopes.
137
+ Configured local clients share those connections and saved preferences.
134
138
 
135
139
  ## Your study project
136
140
 
@@ -139,19 +143,20 @@ your project looks like this, with audio added when requested:
139
143
 
140
144
  ```text
141
145
  my-course/
142
- ├── AGENTS.md Course overview and source index for your agent
146
+ ├── AGENTS.md Your rules and a short pointer to agent context
143
147
  ├── materials/
144
148
  │ ├── content/ Lectures, slides and reading
145
149
  │ ├── exercises/ Exercise sheets and practice material
146
150
  │ ├── exams/ Available exam and revision material
147
151
  │ └── other/ Announcements and course information
148
- ├── study/
152
+ ├── app/
149
153
  │ ├── content.json Lessons, flashcards and practice questions
150
154
  │ └── index.html Your study website
151
155
  ├── audio/ Optional audio notes
152
156
  │ ├── scripts/ Narration text
153
157
  │ └── tracks/ Audio lessons
154
- └── .study/
158
+ └── .tum-mcp/
159
+ ├── course.md Cited course orientation, rules and unknowns
155
160
  ├── state.json Course identity and source versions
156
161
  └── comments.json Passage comments, when added
157
162
  ```
@@ -170,7 +175,7 @@ tum-mcp update
170
175
  same npm location and refreshes configured clients. It never downgrades a newer
171
176
  installation. Use `tum-mcp update --local` to refresh the installed version without checking npm.
172
177
  From 0.6.0 or earlier, upgrade the npm package once to obtain this command.
173
- Sessions, scopes and downloads carry forward. User-edited entries and skills are
178
+ Sessions, preferences and downloads carry forward. User-edited entries and skills are
174
179
  preserved and reported for review. Reload the client; refresh its cached plugin
175
180
  if needed. Study sites are updated separately through the study workflows.
176
181
 
@@ -40,7 +40,7 @@ Each layer owns a different failure boundary:
40
40
  | Public upgrade | Earlier published versions, repair, ownership conflicts and removal |
41
41
  | Native platform | OS credential/ACL behavior; WSL Windows browser transport on both engines |
42
42
 
43
- Study integration fixtures build the real starter once, then copy it into a fresh
43
+ Study integration fixtures build the private rich regression fixture once, then copy it into a fresh
44
44
  project for each test. Launcher tests only need an HTML entry point. Neither
45
45
  shares mutable course state. Client transaction tests use five small synthetic
46
46
  skills, including nested binary assets; full-pack export, migration and installed
@@ -56,7 +56,7 @@ CI runs macOS, Windows and Linux, plus both distribution engines on WSL 3.x.
56
56
  Consumer checks install the actual npm artifact, discover tools, build a study
57
57
  site and test available Chromium browsers with temporary profiles and synthetic
58
58
  pages. WSL verifies Windows browser transport. No live account is used.
59
- Upgrade checks cover public 0.6.0, client refresh, customized-file conflicts,
59
+ Upgrade checks cover public 0.7.0, client refresh, customized-file conflicts,
60
60
  failed preparation, runtime repair and removal that preserves work/credentials.
61
61
  The package-lifecycle check uses a local synthetic registry and real isolated
62
62
  global npm prefixes to verify downloads, backend validation, replacement,
@@ -110,12 +110,14 @@ material remain untrusted data for the skill.
110
110
 
111
111
  ## Study renderer
112
112
 
113
- Author `study/content.json`. Formula blocks use LaTeX compiled locally into safe
113
+ Author `app/content.json` and optional `app/exercises.json`; legacy `study/` remains supported. Formula blocks use LaTeX compiled locally into safe
114
114
  native MathML; legacy MathML remains accepted. Unit `path` labels group the outline
115
115
  without changing learning-progress revisions. Shared modules render all units;
116
116
  content changes do not require a framework or per-unit HTML.
117
117
 
118
- The distributed design/teaching/verification contracts live under
118
+ Shared renderer assets live in `src/tum_mcp/bundled/course_app/site/`. The shipped
119
+ component preview is deliberately minimal; richer learning pilots live in
120
+ `tests/fixtures/course_app/`. The distributed design/teaching/verification contracts live under
119
121
  `src/tum_mcp/bundled/skills/prepare-study/references/`. Local agent notes and
120
122
  screenshots belong in ignored `docs/local/` or `.omo/`. Keep real course projects,
121
123
  session files, databases, downloads and environment files out of artifacts.
package/docs/setup.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Setup and troubleshooting
2
2
 
3
- [README](../README.md) · [Tools and scopes](tum-mcp.md) · [Development](development.md)
3
+ [README](../README.md) · [Tools and access](tum-mcp.md) · [Development](development.md)
4
4
 
5
5
  Use the latest package for the connection, managed update and removal flows below.
6
6
 
@@ -16,11 +16,12 @@ npm install --global @jamestesting888/tum-mcp@latest
16
16
  tum-mcp setup --client codex
17
17
  tum-mcp connect
18
18
  tum-mcp doctor
19
+ tum-mcp --help
19
20
  ```
20
21
 
21
22
  Use `--client claude`, `cursor`, `antigravity`, or `generic` for another client.
22
23
  Codex needs the plugin enabled and a restart when prompted. Cursor and
23
- Antigravity setup installs all five skills and MCP configuration; restart each
24
+ Antigravity setup installs all six skills and MCP configuration; restart each
24
25
  client afterward. Existing MCP-only setups gain the skills through `tum-mcp update`
25
26
  or another setup run. Generic setup writes configuration for manual installation.
26
27
  Setup preserves unrelated settings and refuses to
@@ -46,10 +47,11 @@ For another Chromium build, set `TUM_MCP_BROWSER` to its executable path before
46
47
  running connect. Compatible builds must allow Playwright automation. Safari and
47
48
  Firefox are not supported.
48
49
 
49
- New Artemis/Zulip accounts start without content scopes. Your agent can use
50
- status/discover to show account IDs and available course/channel metadata, then
51
- help you choose [explicit scopes](tum-mcp.md#connections-and-scopes).
50
+ After sign-in, Artemis and Zulip can read content available to your campus account.
51
+ No local course/channel grants are required. Your agent uses status/discover and
52
+ course metadata to find relevant current-semester material, then makes bounded reads.
52
53
  An account ID identifies a saved service connection; it is not your TUM login.
54
+ `tum-mcp --help` lists commands; `tum-mcp study build --help` shows command options.
53
55
 
54
56
  ## WSL
55
57
 
@@ -102,7 +104,7 @@ browser discovery still requires functioning interop.
102
104
  The [publishing workflow](study.md#publish-a-study-website) uses private repositories
103
105
  with public Pages websites and requires an eligible paid GitHub plan.
104
106
  - An expired session uses the same `tum-mcp connect` selector. Reconnecting the
105
- same identity preserves course/channel scopes.
107
+ same identity preserves saved preferences.
106
108
  - If no browser appears, check its installation or `TUM_MCP_BROWSER`. A managed
107
109
  or incompatible Chromium build may prevent automation; try another browser.
108
110
  - Git and Docker are optional. Neither is needed for course reads or the
@@ -111,7 +113,7 @@ browser discovery still requires functioning interop.
111
113
 
112
114
  Sessions are encrypted with owner-restricted local key files. This avoids native
113
115
  credential-store prompts, but anyone obtaining both key and ciphertext can
114
- decrypt them. [Storage locations and recovery](tum-mcp.md#connections-and-scopes)
116
+ decrypt them. [Storage locations and recovery](tum-mcp.md#connections-and-read-access)
115
117
  explain where sessions are saved and how to back them up.
116
118
 
117
119
  ## Update and remove
@@ -123,7 +125,7 @@ tum-mcp update
123
125
  From 0.6.1, `update` retrieves the latest npm release, validates its backend in a
124
126
  temporary installation, replaces the invoked package and refreshes previously
125
127
  configured clients. It preserves the installation prefix and global/local mode.
126
- It does not connect services, change scopes or register additional clients.
128
+ It does not connect services, change preferences or register additional clients.
127
129
  It never downgrades a newer installation. `update --local` skips npm and repairs
128
130
  or refreshes the installed version. Source/pinned builds use this local mode;
129
131
  temporary npx and linked source installations are not replaced automatically.
package/docs/study.md CHANGED
@@ -1,13 +1,13 @@
1
1
  # Course study projects
2
2
 
3
- The five reading, study, audio and publishing skills ship with version **0.6.0**.
3
+ Six focused skills cover source reading, course sync, Study preparation, Exercises preparation, audio and publishing.
4
4
  They run in your local agent, using the connected
5
5
  MCP tools to read course sources. The CLI validates and stores the resulting local
6
6
  files; it does not run an AI model.
7
7
 
8
8
  ## Publish a study website
9
9
 
10
- The optional `publish-study` skill makes a prepared site accessible from a phone
10
+ The optional `publish-course` skill makes a prepared site accessible from a phone
11
11
  or another computer. Its GitHub repository is private; the Pages website is
12
12
  public. An eligible paid GitHub plan is required for Pages from private repositories.
13
13
  This workflow does not provide private website access. Review lesson text,
@@ -29,10 +29,16 @@ tum-mcp study publish --project PROJECT --public-site --repository OWNER/NAME
29
29
 
30
30
  Names use `study-<course>-<semester>` in lowercase with hyphens. A collision gets
31
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
32
+ `.tum-mcp/github.json` bind updates to that course, semester and repository. A
33
33
  failed setup retries the same saved repository rather than creating duplicates.
34
34
 
35
- Only the generated website renderer and lesson data are uploaded. Downloaded
35
+ Study is the default hosted workspace, including for old settings. Exercise
36
+ statements, hints and full solutions need explicit `--include-exercises` on the
37
+ publish command after reviewing their public exposure. `--exclude-exercises`
38
+ returns a combined site to Study only, using the same repository and URL. An
39
+ Exercises-only site also requires explicit inclusion.
40
+
41
+ Only the selected generated website renderer and data are uploaded. Downloaded
36
42
  originals, credentials, AGENTS.md, study inventory, passage comments, progress,
37
43
  audio and arbitrary files stay local. Git itself is not required: the publisher
38
44
  uses authenticated GitHub API calls through `gh`. Local publication settings do
@@ -63,7 +69,7 @@ and offline support are not included.
63
69
 
64
70
  ## Start with one course
65
71
 
66
- Use `sync-study` for both initial setup and later source updates. For a new project,
72
+ Use `sync-course` for both initial setup and later source updates. For a new project,
67
73
  provide the course title and semester when known. The agent verifies
68
74
  its availability, resolves source IDs and asks about ambiguous mappings. A project
69
75
  cannot switch course or semester. Use a separate directory for another course.
@@ -86,18 +92,42 @@ pse-ws26/
86
92
  exams/ Available revision material
87
93
  exercises/ Released statements and practice references
88
94
  other/ Announcements and course information
89
- .study/state.json Course binding, source versions and coverage
90
- study/ Optional interactive study website
95
+ .tum-mcp/
96
+ course.md Cited course structure, logistics, rules and unknowns
97
+ state.json Course binding, source versions and coverage
98
+ notes/ Detailed course/agent notes when needed
99
+ app/ Shared Study and Exercises website
100
+ content.json Optional source-backed Study content
101
+ exercises.json Optional prepared exercise guidance
91
102
  audio/ Optional category audio derived from the prepared website
92
103
  ```
93
104
 
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.
105
+ `AGENTS.md` retains user rules and points agents to `.tum-mcp/course.md`. That short
106
+ handbook explains the course's goals, lectures/tutorials, weekly work and platforms,
107
+ assessment/bonus conditions, communication and preparation map. Claims carry source
108
+ links/locators and checked dates; unknowns and conflicting announcements stay visible.
109
+ Detailed source content remains in materials/. All TUM MCP course state, plans and
110
+ agent notes live under .tum-mcp/.
111
+
112
+ `sync-course` reads the relevant authoritative sources and maintains the handbook;
113
+ the CLI scaffolds it without pretending to understand the course. Its review receipt
114
+ records the local generation and hashes of supporting sources. `study inspect`
115
+ reports changed supporting sources and coverage gaps so refreshes can focus on
116
+ affected claims. A reviewed local snapshot does not establish live freshness or
117
+ complete understanding. See the bundled sync-course context reference for the full
118
+ source-review workflow.
119
+
120
+ To rename existing private `.study/` state explicitly, close other course processes
121
+ and run `tum-mcp study upgrade PROJECT`. It preserves unknown private files,
122
+ comments, publication settings and the full old root instructions as
123
+ `.tum-mcp/legacy-AGENTS.md`. Course identity, materials and browser progress stay the
124
+ same. Existing legacy state remains readable until upgrade; two state folders are
125
+ a conflict to reconcile, never silently merged. This differs from the web-folder
126
+ upgrade below.
97
127
 
98
128
  ## State-based workflow
99
129
 
100
- `sync-study` starts with `tum-mcp study status PROJECT`, a read-only local check:
130
+ `sync-course` starts with `tum-mcp study status PROJECT`, a read-only local check:
101
131
 
102
132
  | Mode | Action |
103
133
  | --- | --- |
@@ -112,7 +142,7 @@ The underlying `study init` and `study sync` commands remain separate.
112
142
 
113
143
  ## Keep it current
114
144
 
115
- Ask `sync-study` to compare the project with connected upstream sources. It
145
+ Ask `sync-course` to compare the project with connected upstream sources. It
116
146
  reuses the saved course, semester, source IDs and reliable revisions. It retrieves
117
147
  changed material and updates course knowledge. Incomplete listings never imply withdrawal. Withdrawn sources
118
148
  keep their local originals; edited or deleted managed files are reported for review.
@@ -127,10 +157,9 @@ restores files when possible and reports any remaining conflict.
127
157
 
128
158
  ## Prepare the website
129
159
 
130
- Ask `prepare-study` to create or extend `study/`. Units follow the course's
160
+ Ask `prepare-study` to create or extend the Study workspace in `app/`. Units follow the course's
131
161
  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:
162
+ including several topics in one week. Every unit has:
134
163
 
135
164
  - A concise explanation with source links, assumptions and worked examples.
136
165
  - Editable LaTeX formulas and inline variables, diagrams, code or comparison tables where they explain the concept.
@@ -173,7 +202,7 @@ glossaries, cards, questions and feedback. Code and dollar signs stay literal.
173
202
 
174
203
  Select text in Content, Flashcards or Practice, then click **Comment** to record what is unclear.
175
204
  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
205
+ notes in `.tum-mcp/comments.json`, separately from learning progress. Click a
177
206
  numbered passage marker or highlighted text to open its notes beside the quote.
178
207
  Markers sit beside section headings or the current card/question position.
179
208
  Notes can be edited, resolved or reopened; changed passages retain their original quotes.
@@ -186,7 +215,7 @@ automatically while the preview is open. Your draft is kept if a note changes
186
215
  elsewhere; choose Use latest or Keep mine before saving. Reload after the agent
187
216
  rebuilds the teaching content.
188
217
 
189
- Content lives in `study/content.json`; shared renderer modules and CSS keep the
218
+ Content lives in `app/content.json`; shared renderer modules and CSS keep the
190
219
  site extensible. Source hashes identify affected units. A stale source stops a
191
220
  build until the explanation is reviewed. Unchanged units retain their revision;
192
221
  revised questions receive separate progress. Customized templates are preserved
@@ -210,11 +239,44 @@ or an unattended preview, use `tum-mcp study serve ./pse-ws26 --port 8765`.
210
239
  If port 8765 is busy, stop the other preview or choose `tum-mcp study --port 8766`.
211
240
  Keep the same address and port between sessions so browser progress remains available.
212
241
 
213
- The preview binds `127.0.0.1`, serves `study/` and saves comments through a bounded
242
+ The preview binds `127.0.0.1`, serves `app/` (or the existing legacy `study/`) and saves comments through a bounded
214
243
  same-origin endpoint. It makes no campus requests.
215
244
  No course credentials are copied into the website. Browser storage holds progress
216
245
  locally. Nothing is published by these commands.
217
246
 
247
+ ## Prepare weekly exercises
248
+
249
+ Ask `prepare-exercises` to prepare released weekly sheets in the same app. Study
250
+ and Exercises can be prepared in either order. When both exist, a selector at the bottom of the sidebar
251
+ switches workspaces and remembers the current place. On phones it lives inside the
252
+ open course outline; there is no second switch in the reading area. Exercises are
253
+ listed directly under sheets, optionally grouped by category.
254
+
255
+ The original statement and subparts come first. Students can solve on paper, mark
256
+ an exercise Reviewed, reveal a worked solution directly, or open **Guidance**.
257
+ Prepared guidance offers one conceptual step, requested hints and specific repair
258
+ feedback. Numeric checks state units/tolerance; choice checks have four options.
259
+ Fillable tables check numeric cells and explicit text variants individually. Graph
260
+ questions support node/edge selections and ordered paths with a visible diagram.
261
+ Line graphs allow sample-point placement, coordinate edits and keyboard adjustment.
262
+ Long math and programming work use saved writing areas and prepared rubrics; code
263
+ is never executed, and symbolic work, proofs and programs are not automatically
264
+ graded. Arbitrary graph drawing can use paper and rubric comparison. Typing, hints and step-by-step guidance are optional. Reviewed records an
265
+ action, not mastery or an assessment result.
266
+
267
+ Drafts and assistance stay in this browser. Editing a checked answer clears its
268
+ verdict. Semantic changes start fresh progress for only that exercise, while retaining older
269
+ browser records; source-hash review alone preserves progress.
270
+ Reset on each workspace home affects only that workspace. Exercise passage comments
271
+ use the existing private comment service; hosted exports do not expose it.
272
+
273
+ Existing `study/` projects continue to work. New projects use `app/`. To upgrade a
274
+ verified legacy layout explicitly, run `tum-mcp study build PROJECT --upgrade-layout`.
275
+ It keeps the original tree at `.tum-mcp/layout-backup/`, preserves the course identity,
276
+ learning revisions, comments, settings and personal files, and stops on customized
277
+ generated files, an occupied backup or two layouts. Repeating a completed upgrade
278
+ is a no-op. Do not create `app/` alongside an existing `study/` by hand.
279
+
218
280
  ## Create and maintain audio notes
219
281
 
220
282
  Use `prepare-study` to author the interactive course, then ask `audio-notes` to
@@ -225,7 +287,7 @@ Create audio notes from this prepared study website, one file per category.
225
287
  Keep course outputs under audio/; prefer free ElevenLabs with local Kokoro fallback.
226
288
  ```
227
289
 
228
- Audio Notes reads `study/content.json`, retaining the course's language, examples,
290
+ Audio Notes reads `app/content.json`, retaining the course's language, examples,
229
291
  assumptions and limitations. It turns tables, formulas, code and diagram sequences
230
292
  into explanations that work without a screen. It does not independently research
231
293
  the course or create new subject matter. An audio-only request reuses the prepared
@@ -287,29 +349,32 @@ material with the previous verified coverage. This is an agent skill, not a new
287
349
 
288
350
  ## Packaged app template
289
351
 
290
- The complete web-app template is packaged with `prepare-study` in `assets/site/`.
352
+ The shared web-app template is packaged in `bundled/course_app/site/`, separately from skill instructions.
291
353
  It includes the shell, navigation, flip cards, practice, diagrams and styling.
292
- Agents author course content in `study/content.json`; `study build` installs the
354
+ Agents author course content in `app/content.json`; `study build` installs the
293
355
  shared template, preserves customized files and checks sources. This keeps new
294
356
  course sites consistent without rebuilding the interface. `tum-mcp study template`
295
357
  shows the bundled files and their combined revision for reproducible development.
296
358
 
297
- ## Try the synthetic example
359
+ ## Try the component template
298
360
 
299
361
  After installing a locally built development artifact:
300
362
 
301
363
  ```sh
302
- tum-mcp study demo ./algorithms-demo
303
- tum-mcp study serve ./algorithms-demo
364
+ tum-mcp study demo ./component-preview
365
+ tum-mcp study serve ./component-preview
304
366
  ```
305
367
 
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.
368
+ This creates one small Study unit and one exercise covering prose, code, tables,
369
+ formulas, graph/process diagrams, cards and response controls. It is a reusable
370
+ component template, not necessarily a good teaching or question-authoring example.
371
+ Actual course authoring follows reviewed sources and the preparation skills. Rich
372
+ learning pilots stay in private test fixtures.
308
373
  It uses no campus account. An existing edited demo is preserved.
309
374
 
310
375
  ## Local helper inputs
311
376
 
312
- Agents use `tum-mcp study schema snapshot` and `tum-mcp study schema content` for
377
+ Agents use `tum-mcp study schema snapshot`, `schema content` and `schema exercises` for
313
378
  validated input schemas. After authenticated tools verify availability, the agent
314
379
  stages a source snapshot with exact course identity, coverage and resource revisions.
315
380
  The helper does not authenticate the snapshot or grant any campus access itself.
package/docs/tum-mcp.md CHANGED
@@ -1,16 +1,16 @@
1
1
  # TUM MCP guide
2
2
 
3
3
  Package: `@jamestesting888/tum-mcp`, CLI: `tum-mcp`, backend: Python 3.13.
4
- Development version **0.6.1 (unreleased)** adds npm package management to the
5
- read-only course retrieval and five local study workflows in 0.6.0.
4
+ The package combines read-only course retrieval, managed client installation and
5
+ six local course workflows.
6
6
 
7
7
  ## Current capabilities
8
8
 
9
9
  The sixteen `moodle_*` tools provide materials, announcements, forums and
10
- explicitly scoped private-record reads. Artemis adds
10
+ own grades, feedback and submission reads. Artemis adds
11
11
  available-course metadata, lectures and learning units, student PDF attachments,
12
12
  released non-quiz statements and permitted exact-commit feedback. Zulip provides
13
- scoped channel/topic search and cited discussion reads.
13
+ bounded channel/topic search and cited discussion reads.
14
14
 
15
15
  Website access is read-only. There are no public exercise workspace, test-run,
16
16
  submission, start, deployment, rebuild or push workflows.
@@ -28,7 +28,7 @@ Lecture routes were checked against the
28
28
  [Artemis source](https://github.com/ls1intum/Artemis/blob/88824427f7ea38512606824c58b8858e539eb2eb/src/main/java/de/tum/cit/aet/artemis/lecture/web/LectureResource.java)
29
29
  and the
30
30
  [student file boundary](https://github.com/ls1intum/Artemis/blob/88824427f7ea38512606824c58b8858e539eb2eb/src/main/java/de/tum/cit/aet/artemis/core/web/FileResource.java).
31
- Synthetic fixtures are the default. Live checks remain private and use explicit scopes.
31
+ Synthetic fixtures are the default. Live checks remain private and relevant to the requested task.
32
32
 
33
33
  ## Build and test the local package
34
34
 
@@ -91,15 +91,17 @@ Python 3.13+, uv, and Git: run `uv sync --locked`, then
91
91
  `uv run tum-mcp setup --client generic` from the checkout. An installed Chromium browser is needed for
92
92
  browser onboarding. See [setup](setup.md) for browser choices and WSL.
93
93
 
94
- ## Connections and scopes
94
+ <a id="connections-and-scopes"></a>
95
+
96
+ ## Connections and read access
95
97
 
96
98
  ```sh
97
99
  tum-mcp connect
98
100
  tum-mcp status
99
101
  tum-mcp discover artemis ACCOUNT_ID
100
102
  tum-mcp discover zulip ACCOUNT_ID
101
- tum-mcp scope artemis ACCOUNT_ID --course COURSE_ID --sensitive
102
- tum-mcp scope zulip ACCOUNT_ID --channel CHANNEL_ID
103
+ tum-mcp --help
104
+ tum-mcp study build --help
103
105
  ```
104
106
 
105
107
  `connect` takes no arguments or connection options. Move with up/down, toggle
@@ -119,10 +121,12 @@ when the temporary browser closes. Existing browser profiles are never imported.
119
121
  Zulip uses its read-only `/json/` routes with the browser session; no API key is
120
122
  required. Reconnect through the same selector when a session expires.
121
123
  See [Zulip's dispatcher](https://github.com/zulip/zulip/blob/12.0/zerver/lib/rest.py).
122
- Existing scopes survive reconnection; new identities start with empty scopes.
123
- Private Zulip channels require `--private-channel ID` as well as `--channel ID`.
124
- `--sensitive` enables own Artemis participation/feedback reads. It grants no
125
- website mutation or local execution permission.
124
+ Read access follows the authenticated account's server permissions. No local course,
125
+ channel, private-channel or personal-feedback grant is required. Older saved grant
126
+ fields remain readable for compatibility and do not restrict read access. Agents
127
+ prefer relevant current-semester courses and channels, inspect metadata first, and
128
+ page through only the content needed for the request. Explicit older-course requests
129
+ remain supported. Server-denied content, staff-only material and remote writes stay unavailable.
126
130
 
127
131
  Settings live outside the installed package in `TUMMCP/config/preferences.json`.
128
132
  Moodle sessions live under `TUMMoodle/local-session/`; Artemis and Zulip credentials
@@ -156,16 +160,17 @@ from activation; the host must confirm a running MCP connection after setup.
156
160
  Use `doctor --live` for bounded authenticated identity checks on saved local
157
161
  sessions and optional GitHub CLI authentication. Campus checks read Moodle's
158
162
  course overview and Artemis/Zulip identity only;
159
- it does not broaden content scopes. `doctor --json` emits schema-versioned JSON
163
+ it does not change server permissions. `doctor --json` emits schema-versioned JSON
160
164
  without terminal styling; combine both flags for live automation. Paths appear
161
165
  in JSON for troubleshooting. Default diagnostics do not create state folders.
162
166
 
163
167
  ## Study workflows
164
168
 
165
- `read-content` retrieves course information across the three websites. `sync-study`
169
+ `read-content` retrieves course information across the three websites. `sync-course`
166
170
  uses read-only local status to initialize an explicitly chosen available course or
167
171
  reconcile an existing project. Incomplete state is preserved for recovery.
168
- `prepare-study` creates or extends its local interactive site. See the
172
+ `prepare-study` authors lessons; `prepare-exercises` authors guided released sheets
173
+ in the same local app. See the
169
174
  [study guide](study.md) for examples, state structure and helper commands.
170
175
 
171
176
  One project holds one course. Source revisions, coverage and course knowledge
@@ -182,13 +187,13 @@ writing files with activation.
182
187
 
183
188
  The Codex adapter uses a contained Node launcher to pin the managed Python in
184
189
  isolated mode; portable stdio manifests require a bare or contained executable.
185
- The shipped pack contains five skills: `read-content`, `sync-study`,
186
- `prepare-study`, `audio-notes` and `publish-study`. Website-specific retrieval
190
+ The shipped pack contains six skills: `read-content`, `sync-course`,
191
+ `prepare-study`, `prepare-exercises`, `audio-notes` and `publish-course`. Website-specific retrieval
187
192
  guidance is loaded from references within read-content. Teaching, schema and design contracts live
188
193
  with prepare-study; the renderer and synthetic example ship as reusable assets.
189
194
  Audio Notes converts prepared content into category tracks and maintains coverage,
190
195
  scripts, voice settings, candidates and archives under the course's `audio/` root.
191
- Publish Study uses host GitHub CLI authentication to create a private repository
196
+ Publish Course uses host GitHub CLI authentication to create a private repository
192
197
  and a public Pages website after explicit publication consent. It chooses a course
193
198
  and semester name, updates the same site after successful study builds, and shows
194
199
  the hosted URL alongside the local launcher URL. No tokens or original course
@@ -203,7 +208,7 @@ routing quality is a separate evaluation from structural and discovery checks.
203
208
  Claude's invocation metadata follows each workflow's selected policy; automatic
204
209
  selection is enabled by default and never grants permission for a mutation.
205
210
 
206
- `setup --client cursor` writes `~/.cursor/mcp.json` and installs all five skills
211
+ `setup --client cursor` writes `~/.cursor/mcp.json` and installs all six skills
207
212
  under `~/.cursor/skills/`.
208
213
  `setup --client antigravity` installs the same skills under `~/.gemini/config/skills/`
209
214
  and writes `~/.gemini/config/mcp_config.json`; an existing
@@ -1,5 +1,5 @@
1
1
  {
2
- "wheel": "tum_mcp-0.6.1-py3-none-any.whl",
3
- "wheelSha256": "59ecf435716e6c0ab68ed9720f2c137b3236f64dd5e962db4c3bf82b76c45ba2",
2
+ "wheel": "tum_mcp-0.8.0-py3-none-any.whl",
3
+ "wheelSha256": "30615a22c87ec1bf74ca02b6adb1c7345f066a5d3c0047beabe60e1472fa7fdd",
4
4
  "requirementsSha256": "25f9efa7a4ffb0b97abcfeb9d4706d04808273ab1b35abcfaa1ef0b66e87591b"
5
5
  }
package/npm/tum-mcp.mjs CHANGED
@@ -9,7 +9,25 @@ let args = process.argv.slice(2);
9
9
  const version = JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version;
10
10
  try {
11
11
  if (args.length === 0 || (args.length === 1 && ['--help', '-h'].includes(args[0]))) {
12
- console.log(`TUM MCP ${version}\nCommands: setup [--client codex|claude|cursor|antigravity|generic], connect, scope, discover, status, doctor [--json] [--live], serve, skills, study, logout, uninstall, update\nRun connect without arguments to select services and an installed Chromium browser. Run setup explicitly to provision the managed Python backend.`);
12
+ console.log(`TUM MCP ${version}
13
+ Usage: tum-mcp COMMAND [OPTIONS]
14
+
15
+ setup Configure your coding client and managed runtime
16
+ connect Sign in to selected campus services
17
+ status Show saved connections
18
+ discover List accessible courses or channels
19
+ doctor Check installation and authentication
20
+ update Update the package and configured clients
21
+ uninstall Remove managed setup and the npm package
22
+ logout Remove one saved connection
23
+ serve Run the MCP server over stdio
24
+ version Show the installed version
25
+ skills Manage local workflow skills
26
+ study Prepare, preview and publish a course app
27
+
28
+ Use --help for options, for example: tum-mcp study build --help
29
+ Run setup to provision the managed backend, then connect to sign in.
30
+ Reads use your campus account permissions; no local scope selection is needed.`);
13
31
  } else if (['--version', 'version'].includes(args[0])) {
14
32
  console.log(version);
15
33
  } else if (['setup', 'update', 'uninstall'].includes(args[0]) && args.some(arg => ['--help', '-h'].includes(arg))) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamestesting888/tum-mcp",
3
- "version": "0.6.1",
3
+ "version": "0.8.0",
4
4
  "description": "Read-only TUM Moodle, Artemis and Zulip integration with source-backed study workflows",
5
5
  "license": "MIT",
6
6
  "type": "module",