CLI and MCP server for DSBmobile: German school substitution plans, timetables, news, documents
199
Access DSBmobile, the platform many German schools use for substitution plans (Vertretungspläne), timetables, news and documents, from the command line or from AI assistants via the Model Context Protocol.
The image contains the dsbmobile CLI. Without arguments, it starts the MCP server over stdio.
Source, full documentation and the npm package: github.com/udondan/dsbmobile
| Variable | Required | Description |
|---|---|---|
DSB_USERNAME | yes | DSBmobile username/ID |
DSB_PASSWORD | yes | DSBmobile password |
DSB_CLASS | no | Default class filter for substitutions (e.g. 07b) |
-e NAME without a value passes the variable from your shell.
docker run --rm -e DSB_USERNAME -e DSB_PASSWORD -e DSB_CLASS udondan/dsbmobile substitutions
docker run --rm -e DSB_USERNAME -e DSB_PASSWORD udondan/dsbmobile substitutions --class 07b
docker run --rm -e DSB_USERNAME -e DSB_PASSWORD udondan/dsbmobile timetables
docker run --rm -e DSB_USERNAME -e DSB_PASSWORD udondan/dsbmobile news
docker run --rm -e DSB_USERNAME -e DSB_PASSWORD udondan/dsbmobile documents
All commands print JSON.
docker run --rm -i -e DSB_USERNAME -e DSB_PASSWORD -e DSB_CLASS udondan/dsbmobile
-i keeps stdin open, which the server uses to talk to the client.
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"dsbmobile": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "DSB_USERNAME", "-e", "DSB_PASSWORD", "-e", "DSB_CLASS", "udondan/dsbmobile"],
"env": {
"DSB_USERNAME": "your_username",
"DSB_PASSWORD": "your_password",
"DSB_CLASS": "07b"
}
}
}
}
All tools are read-only.
| Tool | Description |
|---|---|
get_substitutions | Substitution plans, optionally filtered by class |
get_timetables | Timetable entries with plan URLs |
get_news | News from the school |
get_documents | Documents published by the school |
The image works with the Docker MCP Toolkit of Docker Desktop, with credentials stored as Toolkit secrets. Setup: README, section Docker MCP Toolkit.
x.y.z, x.y, x: release versionslatest: most recent releasePlatforms: linux/amd64, linux/arm64. The image runs as the unprivileged user node and ships without npm.
Images are signed with cosign (keyless, via GitHub Actions) and come with SBOM and provenance attestations.
cosign verify udondan/dsbmobile:latest \
--certificate-identity-regexp '^https://github.com/udondan/dsbmobile/\.github/workflows/publish\.yml@' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
MIT
Content type
Image
Digest
sha256:f47d1b63d…
Size
104.3 MB
Last updated
1 day ago
docker pull udondan/dsbmobile