@jamestesting888/tum-mcp 0.8.0 → 0.9.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 +26 -0
- package/README.md +60 -159
- package/docs/development.md +29 -1
- package/docs/lecture-notes.md +138 -0
- package/docs/setup.md +15 -3
- package/docs/study.md +37 -4
- package/docs/tum-mcp.md +41 -3
- package/npm/backend/manifest.json +3 -3
- package/npm/backend/requirements.txt +8 -0
- package/npm/backend/tum_mcp-0.9.0-py3-none-any.whl +0 -0
- package/npm/tum-mcp.mjs +9 -3
- package/package.json +8 -4
- package/npm/backend/tum_mcp-0.8.0-py3-none-any.whl +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# Changes
|
|
2
2
|
|
|
3
|
+
## 0.9.0 — 2026-10-26
|
|
4
|
+
|
|
5
|
+
- Add read-only TUMonline study, public catalog and partial curriculum-position
|
|
6
|
+
tools, with separate account permissions, verified identity and bounded paging.
|
|
7
|
+
- Add optional Studocu search and reviewed personal PDF collection through
|
|
8
|
+
`tum-mcp install studocu`. Preserve originals, course bindings and recovery
|
|
9
|
+
history; supplementary personal-use sources are excluded from publication.
|
|
10
|
+
- Add optional `tum-mcp install lecture` and Prepare Lecture for timestamped
|
|
11
|
+
Lecture Notes in the existing course app. Prefer transcripts and supplied
|
|
12
|
+
materials, skip whole-silent recordings, preserve original-time coverage and
|
|
13
|
+
request only critical video frames. Publication remains an explicit opt-in.
|
|
14
|
+
- Support isolated, pinned CPU recognition on Windows x64, Intel Mac and supported
|
|
15
|
+
Linux/WSL hosts, alongside Apple Silicon MLX acceleration. Keep heavy recognizer
|
|
16
|
+
dependencies optional; captions/imported WebVTT need no recognizer installation.
|
|
17
|
+
- Handle persistent Studocu SSE replies, enforce response IDs/search limits and
|
|
18
|
+
bound TUMonline policy reads and catalog output. Unify extension status/removal
|
|
19
|
+
and verify both optional workflows together. Shorten the getting-started guide.
|
|
20
|
+
- Preserve existing Moodle compatibility tools, sessions, downloads, customized
|
|
21
|
+
skills and existing course layouts during installation and upgrades.
|
|
22
|
+
|
|
23
|
+
## 0.8.1 — 2026-10-26
|
|
24
|
+
|
|
25
|
+
- Give every doctor/update status a dot: yellow for unverified or attention-needed
|
|
26
|
+
states, green for ready/updated, neutral for information/disabled, and red only
|
|
27
|
+
for failures. Keep status labels readable with terminal colors disabled.
|
|
28
|
+
|
|
3
29
|
## 0.8.0 — 2026-10-26
|
|
4
30
|
|
|
5
31
|
- Read Artemis courses, lectures, exercises, own feedback and accessible Zulip
|
package/README.md
CHANGED
|
@@ -1,196 +1,97 @@
|
|
|
1
1
|
# TUM MCP
|
|
2
2
|
|
|
3
|
-
Connect your coding agent to Moodle, Artemis and
|
|
4
|
-
|
|
3
|
+
Connect your coding agent to **Moodle, Artemis, Zulip and TUMonline**. Read course
|
|
4
|
+
sources with citations and turn them into a private study app. Unofficial and
|
|
5
|
+
independent of TUM.
|
|
5
6
|
|
|
6
|
-
**
|
|
7
|
-
[Release notes](CHANGELOG.md).
|
|
7
|
+
[**npm package**](https://www.npmjs.com/package/@jamestesting888/tum-mcp) ·
|
|
8
|
+
[Release notes](CHANGELOG.md) · [Setup guide](docs/setup.md)
|
|
8
9
|
|
|
9
|
-
##
|
|
10
|
+
## Get started
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
```text
|
|
14
|
-
Install @jamestesting888/tum-mcp on this computer. Check Node.js is 22.14+.
|
|
15
|
-
Run npm install --global @jamestesting888/tum-mcp@latest, then:
|
|
16
|
-
tum-mcp setup --client codex
|
|
17
|
-
Use --client claude, cursor, antigravity, or generic for a different client.
|
|
18
|
-
Preserve existing settings and customized skills. Follow the activation steps.
|
|
19
|
-
Help me run tum-mcp connect in an interactive terminal and choose services.
|
|
20
|
-
I will complete sign-in/MFA in the browser. Never request secrets in chat.
|
|
21
|
-
Run tum-mcp doctor to explain what is available and what still needs setup.
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
## Connect
|
|
25
|
-
|
|
26
|
-
You need **Node.js 22.14+**, **a Chromium browser**, and your TUM account.
|
|
12
|
+
Requires **Node.js 22.14+**, a Chromium browser and your TUM account.
|
|
27
13
|
|
|
28
14
|
```sh
|
|
29
15
|
npm install --global @jamestesting888/tum-mcp@latest
|
|
30
16
|
tum-mcp setup --client codex
|
|
31
17
|
tum-mcp connect
|
|
32
18
|
tum-mcp doctor
|
|
33
|
-
tum-mcp --help
|
|
34
19
|
```
|
|
35
20
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
Choose a client with `--client`: `codex`, `claude`, `cursor` or `antigravity`.
|
|
42
|
-
Setup configures MCP and installs all six skills; follow any activation or
|
|
43
|
-
restart prompts. Use `generic` for manual MCP setup.
|
|
44
|
-
|
|
45
|
-
For existing Cursor and Antigravity setups, run `tum-mcp update` to add the skills.
|
|
46
|
-
Updates and uninstall preserve customized files and report them for review.
|
|
47
|
-
|
|
48
|
-
Supports macOS, Windows, glibc Linux x86_64/ARM64 and WSL 3.x. In WSL, sign-in
|
|
49
|
-
opens a Windows browser. Add `--host windows` to setup for a Windows client that
|
|
50
|
-
uses the WSL backend. [Browser and WSL setup](docs/setup.md#wsl).
|
|
21
|
+
Choose `codex`, `claude`, `cursor`, `antigravity` or `generic` as the client.
|
|
22
|
+
Follow the activation/restart instructions. In `connect`, select services with
|
|
23
|
+
**Space**, then **Enter**, and complete sign-in/MFA in the browser. Never paste
|
|
24
|
+
credentials into chat. Setup supplies its own Python runtime; Git, Docker and a
|
|
25
|
+
native keyring are unnecessary.
|
|
51
26
|
|
|
52
|
-
|
|
53
|
-
|
|
27
|
+
Works on macOS, Windows, glibc Linux x86_64/ARM64 and WSL. For a Windows client
|
|
28
|
+
using a WSL backend, add `--host windows` to setup.
|
|
29
|
+
[Browser and platform details](docs/setup.md).
|
|
54
30
|
|
|
55
31
|
## Read and study
|
|
56
32
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
| Artemis | Lectures, text/online/video units, student slide PDFs, released exercise statements and permitted own feedback |
|
|
61
|
-
| Zulip | Selected course channels, discussion search and cited catch-up |
|
|
62
|
-
|
|
63
|
-
Campus access is read-only. Exercise start, deployment, execution, submission,
|
|
64
|
-
posting and read-state changes are unavailable.
|
|
65
|
-
|
|
66
|
-
### Skills and example requests
|
|
67
|
-
|
|
68
|
-
The package includes six skills. Once you've chosen a course from
|
|
69
|
-
your connections, try requests like these:
|
|
70
|
-
|
|
71
|
-
| Skill | Use it to | Example request |
|
|
72
|
-
| --- | --- | --- |
|
|
73
|
-
| `read-content` | Read and explain course sources with citations | "Can you explain what we covered in last week's lecture?" |
|
|
74
|
-
| `sync-course` | Create or refresh a course project | "Set up a study project for this course." |
|
|
75
|
-
| `prepare-study` | Build lessons, flashcards and practice | "Make me a study website with flashcards and practice questions." |
|
|
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." |
|
|
78
|
-
| `audio-notes` | Save spoken lessons under `audio/` | "Turn this into audio notes I can listen to on the go." |
|
|
79
|
-
|
|
80
|
-
Useful follow-ups in an existing project:
|
|
33
|
+
Ask your agent to explain course material, find announcements or catch up on a
|
|
34
|
+
Zulip channel. Campus access is read-only and follows your account permissions;
|
|
35
|
+
submissions, posting and exercise execution are unavailable.
|
|
81
36
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
### Recommended study flow
|
|
91
|
-
|
|
92
|
-
1. **`sync-course`**: Set up a project for your course and collect its material.
|
|
93
|
-
Use it again when new material is available.
|
|
94
|
-
2. **`prepare-study`**: Turn that material into a study website with explanations,
|
|
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
|
|
98
|
-
phone. Check the [publishing requirements](#publish-for-phone-access-optional) first.
|
|
99
|
-
4. **`audio-notes`** (optional): Turn the prepared content into spoken lessons.
|
|
100
|
-
Use them to revisit prepared topics while walking or commuting.
|
|
101
|
-
|
|
102
|
-
Each project holds one course. To open the website locally, run this from the
|
|
103
|
-
course project folder:
|
|
37
|
+
| Workflow | Example request |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| `read-content` | “Explain this week's lecture with source citations.” |
|
|
40
|
+
| `sync-course` | “Set up a project for this course and collect its materials.” |
|
|
41
|
+
| `prepare-study` | “Build lessons, flashcards and practice in a study website.” |
|
|
42
|
+
| `prepare-exercises` | “Add guided exercises from this week's released sheet.” |
|
|
43
|
+
| `audio-notes` | “Turn the prepared lessons into audio notes.” |
|
|
44
|
+
| `publish-course` | “Publish my reviewed study site for phone access.” |
|
|
104
45
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
46
|
+
Each project holds one course. Run `tum-mcp study` in its folder to open the app.
|
|
47
|
+
Ask the agent to refresh it when sources change or address comments left in the
|
|
48
|
+
app. [Study guide and demo](docs/study.md).
|
|
108
49
|
|
|
109
|
-
|
|
110
|
-
|
|
50
|
+
TUMonline currently provides study names/degrees, public course catalog metadata
|
|
51
|
+
and partial course curriculum positions. The catalog does not show enrollments.
|
|
52
|
+
Grades, exams, progress and full curricula are unavailable. Review its local
|
|
53
|
+
account policy with `tum-mcp manage tumonline`.
|
|
54
|
+
[TUMonline permissions](docs/tum-mcp.md#tumonline-permissions).
|
|
111
55
|
|
|
112
|
-
|
|
56
|
+
## Optional extensions
|
|
113
57
|
|
|
114
|
-
|
|
115
|
-
your agent runs and an eligible paid GitHub plan. Sign in locally, then check it:
|
|
58
|
+
Install only the workflows you need, then reload your client:
|
|
116
59
|
|
|
117
60
|
```sh
|
|
118
|
-
|
|
119
|
-
tum-mcp
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
`doctor` checks CLI availability; `--live` also verifies GitHub authentication.
|
|
123
|
-
A coding platform's GitHub connector does not sign in the local CLI. No token
|
|
124
|
-
needs to be pasted into the agent or stored by TUM MCP.
|
|
125
|
-
|
|
126
|
-
**The repository is private. The website is public.** Review the lesson text,
|
|
127
|
-
quotations and source links before asking your agent to publish.
|
|
128
|
-
|
|
129
|
-
Later builds update the same site. `tum-mcp study` also prints its hosted URL.
|
|
130
|
-
See [publishing details](docs/study.md#publish-a-study-website).
|
|
131
|
-
|
|
132
|
-
## Sign-in and session privacy
|
|
133
|
-
|
|
134
|
-
Sign-in and MFA happen in a temporary browser window. Only service-owned session
|
|
135
|
-
cookies are retained; identity-provider cookies are discarded when it closes.
|
|
136
|
-
Sessions stay on your computer in encrypted files with owner-restricted keys.
|
|
137
|
-
Configured local clients share those connections and saved preferences.
|
|
138
|
-
|
|
139
|
-
## Your study project
|
|
140
|
-
|
|
141
|
-
The agent keeps each course in its own folder. After preparing the website,
|
|
142
|
-
your project looks like this, with audio added when requested:
|
|
143
|
-
|
|
144
|
-
```text
|
|
145
|
-
my-course/
|
|
146
|
-
├── AGENTS.md Your rules and a short pointer to agent context
|
|
147
|
-
├── materials/
|
|
148
|
-
│ ├── content/ Lectures, slides and reading
|
|
149
|
-
│ ├── exercises/ Exercise sheets and practice material
|
|
150
|
-
│ ├── exams/ Available exam and revision material
|
|
151
|
-
│ └── other/ Announcements and course information
|
|
152
|
-
├── app/
|
|
153
|
-
│ ├── content.json Lessons, flashcards and practice questions
|
|
154
|
-
│ └── index.html Your study website
|
|
155
|
-
├── audio/ Optional audio notes
|
|
156
|
-
│ ├── scripts/ Narration text
|
|
157
|
-
│ └── tracks/ Audio lessons
|
|
158
|
-
└── .tum-mcp/
|
|
159
|
-
├── course.md Cited course orientation, rules and unknowns
|
|
160
|
-
├── state.json Course identity and source versions
|
|
161
|
-
└── comments.json Passage comments, when added
|
|
61
|
+
tum-mcp install lecture # Prepare Lecture + TUM-Live tools and local ASR
|
|
62
|
+
tum-mcp install lecture --no-asr # Use captions/imported WebVTT instead
|
|
63
|
+
tum-mcp install studocu # Supplementary Studocu collection workflow
|
|
64
|
+
tum-mcp extensions status
|
|
162
65
|
```
|
|
163
66
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
67
|
+
**Lecture Notes** captures the professor's extra explanations, examples and
|
|
68
|
+
caveats, with timestamp links. It starts with transcripts and lecture materials;
|
|
69
|
+
only critical visuals need recording frames. Local recognition uses Apple Silicon
|
|
70
|
+
acceleration or a separate CPU runtime on supported hosts.
|
|
71
|
+
[Lecture Notes and recognizer requirements](docs/lecture-notes.md).
|
|
167
72
|
|
|
168
|
-
|
|
73
|
+
**Studocu** adds public search and reviewed import of permitted original PDFs you
|
|
74
|
+
save in your browser. Search coverage is incomplete; browser credentials stay out
|
|
75
|
+
of the integration. These supplementary materials remain for personal use and
|
|
76
|
+
cannot be included in published sites. [Studocu workflow](docs/study.md#studocu-materials).
|
|
169
77
|
|
|
170
|
-
|
|
171
|
-
tum-mcp
|
|
172
|
-
```
|
|
78
|
+
Remove either extension with `tum-mcp uninstall lecture` or
|
|
79
|
+
`tum-mcp uninstall studocu`. Notes, evidence and customizations are preserved.
|
|
173
80
|
|
|
174
|
-
|
|
175
|
-
same npm location and refreshes configured clients. It never downgrades a newer
|
|
176
|
-
installation. Use `tum-mcp update --local` to refresh the installed version without checking npm.
|
|
177
|
-
From 0.6.0 or earlier, upgrade the npm package once to obtain this command.
|
|
178
|
-
Sessions, preferences and downloads carry forward. User-edited entries and skills are
|
|
179
|
-
preserved and reported for review. Reload the client; refresh its cached plugin
|
|
180
|
-
if needed. Study sites are updated separately through the study workflows.
|
|
81
|
+
## Privacy, updates and removal
|
|
181
82
|
|
|
182
|
-
|
|
83
|
+
Sessions are encrypted locally. Your agent uses your configured AI provider to
|
|
84
|
+
process selected material. Publishing requires local GitHub CLI authentication
|
|
85
|
+
and an eligible GitHub plan: **the repository is private; the website is public**.
|
|
86
|
+
Review content before publishing. [Publishing details](docs/study.md#publish-a-study-website).
|
|
183
87
|
|
|
184
88
|
```sh
|
|
89
|
+
tum-mcp update # Upgrade the package and refresh managed clients
|
|
185
90
|
tum-mcp uninstall
|
|
186
91
|
```
|
|
187
92
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
`--purge-runtime` to remove generated runtimes or `--forget-credentials` to
|
|
191
|
-
remove saved local credentials. [Removal details](docs/setup.md#update-and-remove).
|
|
192
|
-
Use `--client NAME` to remove just one client, or `--keep-package` to retain npm.
|
|
193
|
-
|
|
194
|
-
[Guide](docs/tum-mcp.md) · [Setup](docs/setup.md) · [Study workflows](docs/study.md) · [Development](docs/development.md)
|
|
93
|
+
Sessions, downloads, course projects and edited skills are preserved. Reload the
|
|
94
|
+
client after updates. [Update and removal options](docs/setup.md#update-and-remove).
|
|
195
95
|
|
|
96
|
+
[Command guide](docs/tum-mcp.md) · [Development](docs/development.md) ·
|
|
196
97
|
[MIT](LICENSE) · [NOTICE](NOTICE) · [Report a problem](https://github.com/jamestesting0/tum-mcp/issues)
|
package/docs/development.md
CHANGED
|
@@ -22,6 +22,9 @@ npm run test:package-lifecycle
|
|
|
22
22
|
|
|
23
23
|
Python 3.13 is the managed runtime. Install Tesseract for OCR tests. Default tests
|
|
24
24
|
use synthetic sources and credentials. No language-server installation is needed.
|
|
25
|
+
Studocu fixtures must likewise use synthetic documents and local transports, never
|
|
26
|
+
browser cookies, personal account details or live downloaded PDFs. The extension
|
|
27
|
+
is off by default; validate both selected and unselected skill packs.
|
|
25
28
|
Set `TUM_MOODLE_SYSTEM_KEYRING=1` for a unique synthetic native-store round trip.
|
|
26
29
|
The ordinary campus runtime uses encrypted local files and owner-restricted keys.
|
|
27
30
|
Set `TUM_MCP_BROWSER_INTEGRATION=1` to include the real HTTP static-export browser
|
|
@@ -56,12 +59,20 @@ CI runs macOS, Windows and Linux, plus both distribution engines on WSL 3.x.
|
|
|
56
59
|
Consumer checks install the actual npm artifact, discover tools, build a study
|
|
57
60
|
site and test available Chromium browsers with temporary profiles and synthetic
|
|
58
61
|
pages. WSL verifies Windows browser transport. No live account is used.
|
|
59
|
-
Upgrade checks cover public 0.
|
|
62
|
+
Upgrade checks cover public 0.8.0 and 0.8.1, client refresh, customized-file conflicts,
|
|
60
63
|
failed preparation, runtime repair and removal that preserves work/credentials.
|
|
61
64
|
The package-lifecycle check uses a local synthetic registry and real isolated
|
|
62
65
|
global npm prefixes to verify downloads, backend validation, replacement,
|
|
63
66
|
failure ordering and one-command removal. It does not publish a test release.
|
|
64
67
|
All five jobs must pass on the exact pushed commit before completion is claimed.
|
|
68
|
+
Desktop jobs additionally install the optional hash-locked CPU recognizer and
|
|
69
|
+
transcribe the synthetic speech fixture; supported Apple Silicon runners also
|
|
70
|
+
exercise MLX. This explicit test downloads public pinned model files, never campus
|
|
71
|
+
recordings. Ordinary test runs skip it unless `TUM_MCP_LECTURE_ASR_INTEGRATION=1`.
|
|
72
|
+
Recognition runs before package lifecycle checks to expose native dependency
|
|
73
|
+
failures early. Windows also runs the affected browser/UTF-8 fixture checks first.
|
|
74
|
+
Its complete job budget is 35 minutes for native ACL and subprocess coverage;
|
|
75
|
+
the macOS and Linux budgets remain 25 minutes.
|
|
65
76
|
|
|
66
77
|
Live Moodle checks are opt-in: `TUM_MOODLE_LIVE=1 uv run pytest tests/live -q`.
|
|
67
78
|
They use the developer's selected course and saved session. Keep them out of CI.
|
|
@@ -129,3 +140,20 @@ Chromium sign-in/MFA, read a PDF and forum, download a file, then restart and ch
|
|
|
129
140
|
session reuse. Automated synthetic sign-in does not certify human SSO on every OS.
|
|
130
141
|
For UI changes, exercise the generated app at narrow/wide widths in both themes;
|
|
131
142
|
check keyboard navigation, reduced motion, source links and retained progress.
|
|
143
|
+
|
|
144
|
+
## Optional Lecture extension
|
|
145
|
+
|
|
146
|
+
Base setup exposes six workflows and no `tum_live_*` tools. `install lecture`
|
|
147
|
+
records explicit selection, refreshes managed clients and provisions the optional
|
|
148
|
+
recognizer only when requested/supported. `--no-asr` keeps captions/imported WebVTT.
|
|
149
|
+
Heavy recognition dependencies and model weights stay outside the base environment
|
|
150
|
+
and package artifacts. `lecture_processing/` owns bounded media/ASR evidence;
|
|
151
|
+
`lecture_content.py`, `lecture_data.py` and `lecture_assets.py` validate the notes
|
|
152
|
+
and figures used by the static app. See [the workflow guide](lecture-notes.md).
|
|
153
|
+
|
|
154
|
+
Use `skills validate --all` to check the packaged optional workflow without installing
|
|
155
|
+
it; default validation checks the selected six/seven. Activation statistics remain
|
|
156
|
+
unmeasured until genuine fresh-session trial records exist. Default tests use
|
|
157
|
+
synthetic media and course data. `test:consumer` and `test:upgrade` exercise optional
|
|
158
|
+
install/update/export/removal from an actual local npm artifact. Never publish or
|
|
159
|
+
stage npm as a test.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Lecture Notes
|
|
2
|
+
|
|
3
|
+
Install the optional extension only when needed:
|
|
4
|
+
|
|
5
|
+
```sh
|
|
6
|
+
tum-mcp install lecture
|
|
7
|
+
# Captions/imported WebVTT without provisioning recognition:
|
|
8
|
+
tum-mcp install lecture --no-asr
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Restart the coding client to load Prepare Lecture and the three TUM-Live metadata
|
|
12
|
+
tools. Base setup keeps its six skills and existing services. Removing the option
|
|
13
|
+
with `tum-mcp uninstall lecture` preserves course notes, evidence, sessions,
|
|
14
|
+
model caches and customizations. Reinstalling can reuse them.
|
|
15
|
+
|
|
16
|
+
Ask: “Prepare Lecture Notes from this recording and these slides, focusing on
|
|
17
|
+
what the professor explains beyond the material.” It adds Lecture Notes to the
|
|
18
|
+
same course app, alongside Study and Exercises. Notes have coherent explanations,
|
|
19
|
+
examples, important qualifications, formulas, selective source images and direct
|
|
20
|
+
timestamp access. Attribution review stays private, so the reading flow is clean.
|
|
21
|
+
Lecture Notes has no quizzes or flashcards; broader teaching/practice stays in Study.
|
|
22
|
+
|
|
23
|
+
## Processing order and cost
|
|
24
|
+
|
|
25
|
+
1. Validate the selected recording. Whole-recording silence markers make it invalid;
|
|
26
|
+
stop before content, including cached transcripts/images. Missing duration can
|
|
27
|
+
be resolved from bounded playlist metadata. Partial silence/cuts retain the
|
|
28
|
+
original recording clock.
|
|
29
|
+
2. Prefer existing captions or supplied original-time WebVTT. Otherwise the optional
|
|
30
|
+
pinned local recognizer scans retained audio in resumable chunks. It checks all
|
|
31
|
+
channels, preserves coverage gaps and flags uncertain/repetitive recognition.
|
|
32
|
+
Three quiet samples alone cannot invalidate a recording.
|
|
33
|
+
3. Read compact transcript passages, map the full retained lecture and compare with
|
|
34
|
+
verified slides/materials. Select additional reasoning, examples, corrections,
|
|
35
|
+
caveats and advice; do not claim novelty when comparison materials are missing.
|
|
36
|
+
4. Use only a few critical recording frames when text/materials leave a consequential
|
|
37
|
+
visual question unresolved. No default previews or frame-by-frame model calls.
|
|
38
|
+
Captures use measured times and verified image bytes. Supporting diagrams use
|
|
39
|
+
normal content blocks, with private attribution review.
|
|
40
|
+
5. Review the notes, citations and selected figures, then build a coherent batch.
|
|
41
|
+
|
|
42
|
+
Vision cost depends on the chosen model and image size. This workflow reduces
|
|
43
|
+
unnecessary images and model context; it does not promise a fixed price or a
|
|
44
|
+
measured accuracy improvement. In the selected 81-minute retained-audio experiment,
|
|
45
|
+
compact text for 200 passages used 39,412 bytes versus 372,519 with word details,
|
|
46
|
+
with identical text/times. An unchanged preparation reused 12 recognition
|
|
47
|
+
checkpoints with zero inference and fetched about 456 KB of playlist metadata.
|
|
48
|
+
These are observations from that source and cache, not universal benchmarks.
|
|
49
|
+
A direct media playlist offered no separate audio rendition; the processor used
|
|
50
|
+
bounded muxed segments rather than guessing alternative download URLs.
|
|
51
|
+
|
|
52
|
+
## Host commands
|
|
53
|
+
|
|
54
|
+
Use the existing course binding and campus connection. Authentication is separate
|
|
55
|
+
from HTTP media retrieval; do not export cookies or pass signed URLs to download
|
|
56
|
+
commands. Captions and imported original-time WebVTT work without a recognizer.
|
|
57
|
+
Automatic ASR installs separately with hash-locked CPython 3.13 wheels and lazy,
|
|
58
|
+
revision-pinned public model weights; neither is part of the base runtime.
|
|
59
|
+
|
|
60
|
+
| Host | Local recognizer |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| Apple Silicon macOS 15+ | MLX acceleration by default |
|
|
63
|
+
| Apple Silicon macOS 14 | CPU int8 |
|
|
64
|
+
| Intel macOS 13+ | CPU int8 |
|
|
65
|
+
| Windows x64 | CPU int8; Microsoft Visual C++ runtime required |
|
|
66
|
+
| Linux/WSL x86_64 or ARM64, glibc 2.28+ | CPU int8 |
|
|
67
|
+
|
|
68
|
+
Native Windows ARM64, 32-bit systems and musl Linux have no supported locked
|
|
69
|
+
runtime. Use captions/imported WebVTT there. CPU inference requires compatible
|
|
70
|
+
CTranslate2 instructions (SSE4.1 on x86); installation verifies native imports and
|
|
71
|
+
int8 support before selecting the runtime. See the upstream
|
|
72
|
+
[CTranslate2 requirements](https://opennmt.net/CTranslate2/installation.html).
|
|
73
|
+
Windows, Linux x64 and Apple Silicon recognition have native CI smoke checks;
|
|
74
|
+
Intel Mac and Linux ARM64 compatibility also depends on the published wheels.
|
|
75
|
+
|
|
76
|
+
FFmpeg and ffprobe must be on PATH for recording audio extraction or selected
|
|
77
|
+
video frames. They are unnecessary for imported captions and cached text.
|
|
78
|
+
`lecture runtime status` reports the selected engine and missing prerequisites.
|
|
79
|
+
Use `lecture runtime install` to retry after fixing a prerequisite. Advanced users
|
|
80
|
+
can set `TUM_MCP_LECTURE_ENGINE=cpu` consistently for installation and preparation
|
|
81
|
+
to bypass Metal; the default `auto` retains existing MLX runtimes and model caches.
|
|
82
|
+
An engine switch uses separate caches. No cloud transcription API is configured.
|
|
83
|
+
|
|
84
|
+
CPU decoding uses int8, one worker and at most four threads. It consumes the full
|
|
85
|
+
retained audio, with word timestamps and no VAD retiming. ASR remains fallible,
|
|
86
|
+
especially for names and notation; compare important wording with slides and the
|
|
87
|
+
recording rather than treating confidence scores as proof.
|
|
88
|
+
|
|
89
|
+
```sh
|
|
90
|
+
tum-mcp lecture inspect PROJECT
|
|
91
|
+
tum-mcp lecture runtime status
|
|
92
|
+
tum-mcp lecture prepare PROJECT --recording URL
|
|
93
|
+
# One selected recording with supplied captions:
|
|
94
|
+
tum-mcp lecture prepare PROJECT --recording URL --transcript lecture.vtt
|
|
95
|
+
# Read bounded compact pages; continue with returned next_offset:
|
|
96
|
+
tum-mcp lecture transcript PROJECT --recording KEY --start 0 --end 28800 --limit 200 --offset 0
|
|
97
|
+
# Only after identifying an unresolved visual question:
|
|
98
|
+
tum-mcp lecture prepare PROJECT --recording URL --frame-at SECONDS
|
|
99
|
+
tum-mcp lecture frames PROJECT --recording KEY --start START --end END
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
`--words` adds word alignment details to transcript reads. `prepare --previews`
|
|
103
|
+
explicitly requests approximate seek candidates; they are not verified capture
|
|
104
|
+
times. `--language en` is appropriate only for a known English recording.
|
|
105
|
+
|
|
106
|
+
Prepared media, raw transcripts, receipts and review notes stay under `.tum-mcp/`.
|
|
107
|
+
Safe source receipts can be reconciled into the shared inventory:
|
|
108
|
+
|
|
109
|
+
```sh
|
|
110
|
+
tum-mcp lecture export-snapshot PROJECT --output snapshot.json
|
|
111
|
+
tum-mcp study sync PROJECT --snapshot snapshot.json
|
|
112
|
+
tum-mcp study schema lectures
|
|
113
|
+
tum-mcp study build PROJECT --local-only
|
|
114
|
+
tum-mcp study inspect PROJECT
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The agent authors `app/lectures.json` using real source hashes and coverage; the
|
|
118
|
+
legacy `study/` layout stays supported. Captured images stage in
|
|
119
|
+
`.tum-mcp/lecture-assets/` and copy only when selected. Source freshness and note
|
|
120
|
+
semantic revision are separate, preserving passage comments through harmless
|
|
121
|
+
receipt/image updates. Local comments support `--view lectures --lecture KEY`.
|
|
122
|
+
|
|
123
|
+
Open with `tum-mcp study` from the course folder. For a credential-free synthetic
|
|
124
|
+
preview after installing the extension, use `tum-mcp study demo PROJECT --lectures`.
|
|
125
|
+
The default demo still has only Study and Exercises. Synthetic teaching/timestamps
|
|
126
|
+
exercise the product and do not establish real lecture accuracy.
|
|
127
|
+
|
|
128
|
+
## Publication
|
|
129
|
+
|
|
130
|
+
Lecture Notes is excluded from publication by default, including old saved
|
|
131
|
+
configurations. After reviewing public exposure, use the existing publish-course
|
|
132
|
+
workflow with `--include-lectures`; Exercises has a separate choice. Exclusion
|
|
133
|
+
removes lecture text, lecture-only sources/math and referenced images from exports,
|
|
134
|
+
and removes previously managed remote images while preserving unrelated files.
|
|
135
|
+
Raw media/transcripts, comments and private review metadata are never exported.
|
|
136
|
+
The entire export, including its ownership marker, must fit 16 MiB and 100 files.
|
|
137
|
+
Essential figures are not silently omitted/compressed; a notes-only app excluded
|
|
138
|
+
from publication cannot produce an empty site.
|
package/docs/setup.md
CHANGED
|
@@ -21,9 +21,15 @@ tum-mcp --help
|
|
|
21
21
|
|
|
22
22
|
Use `--client claude`, `cursor`, `antigravity`, or `generic` for another client.
|
|
23
23
|
Codex needs the plugin enabled and a restart when prompted. Cursor and
|
|
24
|
-
Antigravity setup installs all six skills and MCP configuration; restart each
|
|
24
|
+
Antigravity setup installs all six base skills and MCP configuration; restart each
|
|
25
25
|
client afterward. Existing MCP-only setups gain the skills through `tum-mcp update`
|
|
26
26
|
or another setup run. Generic setup writes configuration for manual installation.
|
|
27
|
+
|
|
28
|
+
Studocu is optional: run `tum-mcp install studocu`, then reload the client. The
|
|
29
|
+
extension adds the `sync-studocu` skill and its tools. `tum-mcp extensions status`
|
|
30
|
+
reports the local selection; `tum-mcp extensions remove studocu` disables it and
|
|
31
|
+
preserves course materials and customized files. Generic clients use
|
|
32
|
+
`tum-mcp skills export DESTINATION` to install the active pack manually.
|
|
27
33
|
Setup preserves unrelated settings and refuses to
|
|
28
34
|
replace customized entries. It does not authenticate or fetch courses.
|
|
29
35
|
|
|
@@ -31,12 +37,12 @@ replace customized entries. It does not authenticate or fetch courses.
|
|
|
31
37
|
|
|
32
38
|
Run **`tum-mcp connect`**, with no arguments, in an interactive terminal:
|
|
33
39
|
|
|
34
|
-
1. Use up/down to move and Space to select Moodle, Artemis and/or
|
|
40
|
+
1. Use up/down to move and Space to select Moodle, Artemis, Zulip and/or TUMonline.
|
|
35
41
|
2. Press Enter. If several browsers are installed, choose one and press Enter.
|
|
36
42
|
3. Complete TUM sign-in/MFA in the opened window. Only selected service tabs open.
|
|
37
43
|
4. Return to the terminal for the saved-connection result.
|
|
38
44
|
|
|
39
|
-
|
|
45
|
+
The services use the same temporary-browser sign-in and encrypted session storage flow.
|
|
40
46
|
No API key or native credential-store prompt is needed. A temporary browser
|
|
41
47
|
profile keeps the connection separate from your everyday browser. Ctrl+C closes it and preserves
|
|
42
48
|
connections that already completed. A dumb terminal uses numbered prompts.
|
|
@@ -51,6 +57,12 @@ After sign-in, Artemis and Zulip can read content available to your campus accou
|
|
|
51
57
|
No local course/channel grants are required. Your agent uses status/discover and
|
|
52
58
|
course metadata to find relevant current-semester material, then makes bounded reads.
|
|
53
59
|
An account ID identifies a saved service connection; it is not your TUM login.
|
|
60
|
+
TUMonline additionally has a local policy: `tum-mcp manage tumonline --show`
|
|
61
|
+
shows it, `tum-mcp manage tumonline` changes the studies and courses permission,
|
|
62
|
+
and `tum-mcp manage tumonline --disconnect` removes its saved local session.
|
|
63
|
+
Use `--account ACCOUNT_ID` if more than one TUMonline account is configured.
|
|
64
|
+
Study names, public course metadata and public course curriculum positions are available by default; full curriculum and
|
|
65
|
+
grades or progress are not yet available. [Details and limitations](tum-mcp.md#tumonline-permissions).
|
|
54
66
|
`tum-mcp --help` lists commands; `tum-mcp study build --help` shows command options.
|
|
55
67
|
|
|
56
68
|
## WSL
|
package/docs/study.md
CHANGED
|
@@ -1,6 +1,37 @@
|
|
|
1
1
|
# Course study projects
|
|
2
2
|
|
|
3
|
-
Six
|
|
3
|
+
Six base skills cover source reading, course sync, Study preparation, Exercises preparation, audio and publishing.
|
|
4
|
+
The optional `prepare-lecture` skill adds a Lecture Notes workspace; install it with
|
|
5
|
+
`tum-mcp install lecture`. See [Lecture Notes](lecture-notes.md).
|
|
6
|
+
The optional `sync-studocu` skill collects selected student-uploaded material separately.
|
|
7
|
+
|
|
8
|
+
## Studocu materials
|
|
9
|
+
|
|
10
|
+
Install the optional extension with `tum-mcp install studocu` and reload your
|
|
11
|
+
client. Ask `sync-studocu` to collect materials for a course project. It can
|
|
12
|
+
initialize a Studocu-only project with a verified course and semester.
|
|
13
|
+
Search is anonymous and bounded; a limited result set is not a complete inventory.
|
|
14
|
+
`tum-mcp studocu connect` explains how to sign in to Studocu in your own browser.
|
|
15
|
+
The extension cannot infer account entitlement or download original files through
|
|
16
|
+
the public MCP. Save an original that your account permits in the browser.
|
|
17
|
+
|
|
18
|
+
The skill records a reviewed selection with `tum-mcp studocu plan PROJECT
|
|
19
|
+
--selection FILE` and tracks it with `tum-mcp studocu status PROJECT --json`.
|
|
20
|
+
Import a selected original with `tum-mcp studocu import PROJECT --document-id ID
|
|
21
|
+
--file FILE`. The document-to-file association is user-selected. Originals go to
|
|
22
|
+
`materials/studocu/summaries`, `materials/studocu/exams` (including mocks and
|
|
23
|
+
solutions), or `materials/studocu/other`. Files remain local and retain their
|
|
24
|
+
original bytes. Consult the skill's collection reference for the selection schema.
|
|
25
|
+
Exact matches in the same group, type and known year share one original through
|
|
26
|
+
a private alias. Each selected document retains its own source identity and URL.
|
|
27
|
+
Changing a document's classification or refreshing its original separates aliases
|
|
28
|
+
when they no longer match; previous versions remain in private history.
|
|
29
|
+
When an existing selection is planned again, unchanged duplicate originals are
|
|
30
|
+
consolidated. Edited or missing files are preserved for review.
|
|
31
|
+
|
|
32
|
+
Local study material can cite student uploads. Publishing rejects included
|
|
33
|
+
Studocu-backed sources; this source check cannot identify uncited copied text or
|
|
34
|
+
replace a review of the published content.
|
|
4
35
|
They run in your local agent, using the connected
|
|
5
36
|
MCP tools to read course sources. The CLI validates and stores the resulting local
|
|
6
37
|
files; it does not run an AI model.
|
|
@@ -35,8 +66,10 @@ failed setup retries the same saved repository rather than creating duplicates.
|
|
|
35
66
|
Study is the default hosted workspace, including for old settings. Exercise
|
|
36
67
|
statements, hints and full solutions need explicit `--include-exercises` on the
|
|
37
68
|
publish command after reviewing their public exposure. `--exclude-exercises`
|
|
38
|
-
|
|
39
|
-
Exercises-only site also requires explicit inclusion.
|
|
69
|
+
removes Exercises from subsequent eligible exports, using the same repository and URL. An
|
|
70
|
+
Exercises-only site also requires explicit inclusion. Lecture Notes separately requires
|
|
71
|
+
`--include-lectures`; old settings default to exclusion. `--exclude-lectures` also removes
|
|
72
|
+
previously managed lecture images. A notes-only export with notes excluded is refused.
|
|
40
73
|
|
|
41
74
|
Only the selected generated website renderer and data are uploaded. Downloaded
|
|
42
75
|
originals, credentials, AGENTS.md, study inventory, passage comments, progress,
|
|
@@ -96,7 +129,7 @@ pse-ws26/
|
|
|
96
129
|
course.md Cited course structure, logistics, rules and unknowns
|
|
97
130
|
state.json Course binding, source versions and coverage
|
|
98
131
|
notes/ Detailed course/agent notes when needed
|
|
99
|
-
app/ Shared Study and
|
|
132
|
+
app/ Shared Study, Exercises and optional Lecture Notes website
|
|
100
133
|
content.json Optional source-backed Study content
|
|
101
134
|
exercises.json Optional prepared exercise guidance
|
|
102
135
|
audio/ Optional category audio derived from the prepared website
|
package/docs/tum-mcp.md
CHANGED
|
@@ -107,7 +107,7 @@ tum-mcp study build --help
|
|
|
107
107
|
`connect` takes no arguments or connection options. Move with up/down, toggle
|
|
108
108
|
services with Space, and press Enter. Choose a browser when more than one is
|
|
109
109
|
installed. Only selected tabs open in one temporary browser context. Moodle,
|
|
110
|
-
Artemis and
|
|
110
|
+
Artemis, Zulip and TUMonline all follow this flow.
|
|
111
111
|
Sign-in/MFA stays in the browser. `TERM=dumb` uses numbered prompts. Ctrl+C
|
|
112
112
|
cancels and retains completed connections.
|
|
113
113
|
|
|
@@ -121,15 +121,53 @@ when the temporary browser closes. Existing browser profiles are never imported.
|
|
|
121
121
|
Zulip uses its read-only `/json/` routes with the browser session; no API key is
|
|
122
122
|
required. Reconnect through the same selector when a session expires.
|
|
123
123
|
See [Zulip's dispatcher](https://github.com/zulip/zulip/blob/12.0/zerver/lib/rest.py).
|
|
124
|
-
|
|
124
|
+
For Moodle, Artemis and Zulip, read access follows the authenticated account's server permissions. No local course,
|
|
125
125
|
channel, private-channel or personal-feedback grant is required. Older saved grant
|
|
126
126
|
fields remain readable for compatibility and do not restrict read access. Agents
|
|
127
127
|
prefer relevant current-semester courses and channels, inspect metadata first, and
|
|
128
128
|
page through only the content needed for the request. Explicit older-course requests
|
|
129
129
|
remain supported. Server-denied content, staff-only material and remote writes stay unavailable.
|
|
130
130
|
|
|
131
|
+
### TUMonline permissions
|
|
132
|
+
|
|
133
|
+
TUMonline has a separate, account-specific policy. New connections allow study
|
|
134
|
+
names and degrees, public course catalog metadata and public curriculum positions
|
|
135
|
+
for a selected course by default. The position endpoint is anonymous: no student
|
|
136
|
+
session or identifier is sent. These positions are a partial view, not a full
|
|
137
|
+
program curriculum or personal enrollment list; page order can change upstream.
|
|
138
|
+
Course catalog searches accept a title or course number using 2–80 letters,
|
|
139
|
+
numbers, spaces, dots, underscores, plus signs, slashes or hyphens; continue pages
|
|
140
|
+
with the same query.
|
|
141
|
+
Full curriculum structure is unavailable because its public API requires a separate
|
|
142
|
+
service account. Grades and progress need
|
|
143
|
+
separate consent, but their readers are not yet available; exams, admission,
|
|
144
|
+
account, other IT and miscellaneous readers are also unavailable. No campus write
|
|
145
|
+
operations are provided.
|
|
146
|
+
|
|
147
|
+
Run `tum-mcp manage tumonline --show` to inspect the policy and
|
|
148
|
+
`tum-mcp manage tumonline` in a terminal to select permissions with Space and
|
|
149
|
+
save with Enter. Studies and courses can be allowed or revoked; the remaining
|
|
150
|
+
categories are shown as unavailable and cannot be selected. On basic terminals,
|
|
151
|
+
the command offers a numbered text prompt instead.
|
|
152
|
+
When multiple accounts exist, add `--account ACCOUNT_ID`. Reconnecting preserves
|
|
153
|
+
the policy. `tum-mcp manage tumonline --disconnect` removes the local TUMonline
|
|
154
|
+
credential and retains the policy; it does not revoke remote sessions. An expired
|
|
155
|
+
session requires `tum-mcp connect` again. If the policy is missing or corrupt, use
|
|
156
|
+
`tum-mcp manage tumonline --account ACCOUNT_ID --disconnect` to remove that saved
|
|
157
|
+
session without resetting permissions or affecting other providers.
|
|
158
|
+
|
|
159
|
+
The policy governs what these TUMonline tools return to all MCP clients sharing
|
|
160
|
+
the same local configuration. A local program running as the same user can access
|
|
161
|
+
local files independently, and this policy does not govern other providers' tools,
|
|
162
|
+
including Moodle's own grades tools. Study names are personal and permitted results
|
|
163
|
+
may be transmitted to your configured agent or its AI provider. TUMonline's study
|
|
164
|
+
chooser can contain extra personal fields in its upstream response; the integration
|
|
165
|
+
holds that bounded response only in memory, projects the permitted fields, and does
|
|
166
|
+
not save the response body. Revoking a permission prevents subsequent reads, but
|
|
167
|
+
cannot recall a response already delivered to a client.
|
|
168
|
+
|
|
131
169
|
Settings live outside the installed package in `TUMMCP/config/preferences.json`.
|
|
132
|
-
Moodle sessions live under `TUMMoodle/local-session/`; Artemis and
|
|
170
|
+
Moodle sessions live under `TUMMoodle/local-session/`; Artemis, Zulip and TUMonline credentials
|
|
133
171
|
live under `TUMMCP/credentials/local/`. Each directory has an independent `session.key`.
|
|
134
172
|
Encrypted records and keys have owner-only permissions: 0700 directories / 0600
|
|
135
173
|
keys on POSIX; protected current-user DACLs on Windows through PowerShell. No
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"wheel": "tum_mcp-0.
|
|
3
|
-
"wheelSha256": "
|
|
4
|
-
"requirementsSha256": "
|
|
2
|
+
"wheel": "tum_mcp-0.9.0-py3-none-any.whl",
|
|
3
|
+
"wheelSha256": "0af36e0b89e055a49ae7a8cfa144ff98fdd4feb9e82b724e6ee629f8f4e51b7b",
|
|
4
|
+
"requirementsSha256": "39a401b6e606d3292eb91b8fe9ef60367d4852f203eb409dc52f38b76e513ccf"
|
|
5
5
|
}
|
|
@@ -342,6 +342,10 @@ latex2mathml==3.81.1 \
|
|
|
342
342
|
--hash=sha256:c337668441b71c819b6733905a8058ba9a9d767bae11a0c5fdacb3aff31361bd \
|
|
343
343
|
--hash=sha256:c95add0c0fcdecad2d70567e0643050d5ea1149fb2e98a5d5792fb1c8eea2ed5
|
|
344
344
|
# via tum-mcp
|
|
345
|
+
m3u8==6.0.0 \
|
|
346
|
+
--hash=sha256:566d0748739c552dad10f8c87150078de6a0ec25071fa48e6968e96fc6dcba5d \
|
|
347
|
+
--hash=sha256:7ade990a1667d7a653bcaf9413b16c3eb5cd618982ff46aaff57fe6d9fa9c0fd
|
|
348
|
+
# via tum-mcp
|
|
345
349
|
markdown-it-py==4.2.0 \
|
|
346
350
|
--hash=sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49 \
|
|
347
351
|
--hash=sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a
|
|
@@ -368,6 +372,10 @@ opentelemetry-api==1.45.1 \
|
|
|
368
372
|
--hash=sha256:aa38ed19bcc084ba42782a73255b3582283eced7ad6dddbd6695189e69adfb75 \
|
|
369
373
|
--hash=sha256:b31553efa588ae44bc306f863c785c5333a9ecc091248c6ee68b4b6c87fdedfb
|
|
370
374
|
# via mcp
|
|
375
|
+
packaging==26.3 \
|
|
376
|
+
--hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \
|
|
377
|
+
--hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c
|
|
378
|
+
# via tum-mcp
|
|
371
379
|
pillow==12.3.0 \
|
|
372
380
|
--hash=sha256:06ff022112bc9cbf83b60f8e028d94ad87b60621706487e65f673de61610ab59 \
|
|
373
381
|
--hash=sha256:0740a512dc522224c77d9aa5a8d70d8b7d73fb91f2c21125d8d025d3b8990e45 \
|
|
Binary file
|
package/npm/tum-mcp.mjs
CHANGED
|
@@ -13,6 +13,7 @@ try {
|
|
|
13
13
|
Usage: tum-mcp COMMAND [OPTIONS]
|
|
14
14
|
|
|
15
15
|
setup Configure your coding client and managed runtime
|
|
16
|
+
install Install an optional extension: lecture or studocu
|
|
16
17
|
connect Sign in to selected campus services
|
|
17
18
|
status Show saved connections
|
|
18
19
|
discover List accessible courses or channels
|
|
@@ -23,6 +24,8 @@ Usage: tum-mcp COMMAND [OPTIONS]
|
|
|
23
24
|
serve Run the MCP server over stdio
|
|
24
25
|
version Show the installed version
|
|
25
26
|
skills Manage local workflow skills
|
|
27
|
+
extensions Manage optional extensions
|
|
28
|
+
studocu Manage selected Studocu materials
|
|
26
29
|
study Prepare, preview and publish a course app
|
|
27
30
|
|
|
28
31
|
Use --help for options, for example: tum-mcp study build --help
|
|
@@ -30,7 +33,9 @@ Run setup to provision the managed backend, then connect to sign in.
|
|
|
30
33
|
Reads use your campus account permissions; no local scope selection is needed.`);
|
|
31
34
|
} else if (['--version', 'version'].includes(args[0])) {
|
|
32
35
|
console.log(version);
|
|
33
|
-
} else if ([
|
|
36
|
+
} else if (args[0] === 'install' && args.some(arg => ['--help', '-h'].includes(arg))) {
|
|
37
|
+
console.log('Usage: tum-mcp install lecture [--asr|--no-asr] | tum-mcp install studocu\nInstall an optional Lecture or Studocu workflow and its tools. Lecture recognition dependencies are isolated; models load on demand.');
|
|
38
|
+
} else if (['setup', 'update', 'uninstall'].includes(args[0]) && !['lecture', 'studocu'].includes(args[1]) && args.some(arg => ['--help', '-h'].includes(arg))) {
|
|
34
39
|
const help = {
|
|
35
40
|
update: 'Usage: tum-mcp update [--local]\nInstall the latest npm release and refresh configured clients.\n--local refreshes this installed version without contacting npm.',
|
|
36
41
|
setup: 'Usage: tum-mcp setup [--client codex|claude|cursor|antigravity|generic] [--host local|windows]\nProvision the managed runtime and register explicitly selected clients.',
|
|
@@ -38,12 +43,13 @@ Reads use your campus account permissions; no local scope selection is needed.`)
|
|
|
38
43
|
};
|
|
39
44
|
console.log(help[args[0]]);
|
|
40
45
|
} else {
|
|
46
|
+
if (args[0] === 'install' && !['lecture', 'studocu'].includes(args[1])) throw new Error('Usage: tum-mcp install lecture [--asr|--no-asr] | tum-mcp install studocu.');
|
|
41
47
|
let packageAction = args[0] === 'update';
|
|
42
48
|
if (args[0] === 'update') {
|
|
43
49
|
if (args.length > 2 || (args.length === 2 && args[1] !== '--local')) throw new Error('Usage: tum-mcp update [--local]. Use --help for details.');
|
|
44
50
|
if (args[1] === '--local') { packageAction = false; args = ['update']; }
|
|
45
51
|
}
|
|
46
|
-
if (args[0] === 'uninstall') {
|
|
52
|
+
if (args[0] === 'uninstall' && !['lecture', 'studocu'].includes(args[1])) {
|
|
47
53
|
const { values } = parseArgs({ args: args.slice(1), options: {
|
|
48
54
|
all: { type: 'boolean' }, client: { type: 'string' }, host: { type: 'string' },
|
|
49
55
|
'keep-package': { type: 'boolean' }, 'purge-runtime': { type: 'boolean' }, 'forget-credentials': { type: 'boolean' },
|
|
@@ -58,7 +64,7 @@ Reads use your campus account permissions; no local scope selection is needed.`)
|
|
|
58
64
|
if (packageAction) {
|
|
59
65
|
process.exitCode = await managePackage(args[0], args.slice(1), dataRoot());
|
|
60
66
|
} else {
|
|
61
|
-
let python = ['setup', 'update'].includes(args[0]) ? await ensureRuntime() : currentPython();
|
|
67
|
+
let python = ['setup', 'update', 'install'].includes(args[0]) ? await ensureRuntime() : currentPython();
|
|
62
68
|
if (args[0] === 'uninstall' && !python) python = await ensureRuntime();
|
|
63
69
|
if (!python) throw new Error('SETUP_REQUIRED: Run tum-mcp setup first.');
|
|
64
70
|
const forwarded = args;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jamestesting888/tum-mcp",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Read-only TUM
|
|
3
|
+
"version": "0.9.0",
|
|
4
|
+
"description": "Read-only TUM campus tools and source-backed study, exercise and lecture workflows",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
"docs/setup.md",
|
|
29
29
|
"docs/development.md",
|
|
30
30
|
"docs/tum-mcp.md",
|
|
31
|
-
"docs/study.md"
|
|
31
|
+
"docs/study.md",
|
|
32
|
+
"docs/lecture-notes.md"
|
|
32
33
|
],
|
|
33
34
|
"scripts": {
|
|
34
35
|
"prepack": "node npm/build.mjs",
|
|
@@ -54,6 +55,9 @@
|
|
|
54
55
|
"moodle",
|
|
55
56
|
"artemis",
|
|
56
57
|
"zulip",
|
|
57
|
-
"codex"
|
|
58
|
+
"codex",
|
|
59
|
+
"tumonline",
|
|
60
|
+
"studocu",
|
|
61
|
+
"lecture-notes"
|
|
58
62
|
]
|
|
59
63
|
}
|
|
Binary file
|