/install iserv
IServ (school platform)
This skill uses an HTTP client (no browser automation) to log in and call IServ endpoints.
Credentials / security
- Do NOT hardcode credentials.
- Provide credentials via environment variables.
Single profile:
ISERV_BASE_URL(e.g.https://grabbe-dt.de)ISERV_USERISERV_PASS
Multiple profiles (parallel):
- set
ISERV_PROFILE=\x3Cname>or pass--profile \x3Cname> - provide
ISERV_\x3CPROFILE>_BASE_URL,ISERV_\x3CPROFILE>_USER,ISERV_\x3CPROFILE>_PASS
Commands
cd skills/iserv/scripts
# unread inbox count
./iserv.py mail-unread
# last 3 mails (IMAP)
./iserv.py mail-last --n 3
# upcoming calendar events (JSON)
./iserv.py calendar-upcoming
# list files (JSON)
./iserv.py files-list --path "/" # root
./iserv.py files-list --path "/Files" # typical user file area
# search files/folders recursively by substring
./iserv.py files-search --query "bio" --start-dir "/Files" --max-depth 6
# download a file (best-effort across IServ versions)
./iserv.py files-download --path "/Files/foo.pdf" --out-dir ./downloads
# upload a file (prefers FS Dropzone-style chunked upload; falls back to legacy form upload)
./iserv.py files-upload --file ./foo.pdf --dest-dir "/Files"
# optionally tune chunk size (bytes)
./iserv.py files-upload --file ./foo.pdf --dest-dir "/Files" --chunk-size 8388608
# create folder (best-effort; depends on IServ version)
./iserv.py files-mkdir --path "/Dokumente/Neu"
# rename/move (best-effort)
./iserv.py files-rename --src "/Dokumente/Alt.txt" --dest "/Dokumente/Neu.txt"
# delete (best-effort; USE WITH CARE)
./iserv.py files-delete --path "/Dokumente/Neu.txt"
# messenger: list chats / conversations
./iserv.py messenger-chats
# messenger: fetch messages for a chat
./iserv.py messenger-messages --chat-id \x3CID>
# messenger: send message
./iserv.py messenger-send --chat-id \x3CID> --text "Hello"
# list exercises (best-effort HTML scrape)
./iserv.py exercise-list --limit 50
# view one exercise + list attachments (optionally download them)
./iserv.py exercise-detail --id 123
./iserv.py exercise-detail --id 123 --download-dir ./downloads
# attempt to submit an exercise file (best-effort; depends on IServ version)
./iserv.py exercise-submit --id 123 --file ./solution.pdf --comment "Abgabe"
Notes / next steps
-
Exercises: listing/details/submission are implemented via HTML scraping. Submission is now form-driven (parses the actual
\x3Cform>on the exercise page and posts multipart), which is more robust than guessing an internal upload API. If it still fails on a specific IServ instance, capture:- the HTML of the exercise detail page (after login)
- response status + redirect URL
-
Files: list/download/upload + mkdir/rename/delete are implemented as best-effort across IServ versions. Some instances expose slightly different endpoints; the client tries to discover Symfony FOS routes (when available) and falls back to common API paths.
Ideas to extend further:
- richer exercise parsing (due dates, teacher, description)
- announcements/news
- messenger notifications (currently experimental)
- robust file search, move/copy, and recursive folder download
Reference: IServ routes are discoverable via the bundled FOS routes JS (commonly /iserv/js/fos_js_routes.js; some instances also use /iserv/js/assets/fos_js_routes*.js).
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install iserv - 安装完成后,直接呼叫该 Skill 的名称或使用
/iserv触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Iserv 是什么?
HTTP client for IServ school platforms. Log in to an IServ instance (e.g. https://grabbe-dt.de) and fetch common student data like unread mail counts, calendar events, files/folders, tasks/exercises, announcements/news, and other IServ modules via HTTP endpoints. Includes best-effort file ops + exercise submission. 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 1158 次。
如何安装 Iserv?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install iserv」即可一键安装,无需额外配置。
Iserv 是免费的吗?
是的,Iserv 完全免费(开源免费),可自由下载、安装和使用。
Iserv 支持哪些平台?
Iserv 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Iserv?
由 finnbusse(@finnbusse)开发并维护,当前版本 v0.1.0。