Python SDK and local servers for University of Tuebingen study systems.
Project description
tue-api-wrapper Python package
Python SDK, FastAPI server, and local MCP server for University of Tübingen study systems.
The package has three entry points:
TuebingenPublicClient: public data that does not need credentialsTuebingenAuthenticatedClient: private student data with explicit credentials or.envtue-mcp: local MCP server for agents and LLM tools
Install for local development
cd package
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
Install MCP support when you want the agent server:
pip install -e ".[mcp]"
Public data example
from tue_api_wrapper import TuebingenPublicClient
client = TuebingenPublicClient()
modules = client.alma.search_modules("machine learning", max_results=10)
events = client.campus.events(query="AI", limit=5)
canteens = client.campus.canteens()
recordings = client.timms.search("theoretische informatik", limit=5)
Authenticated data example
Use a local .env file:
UNI_USERNAME=your-zdv-id
UNI_PASSWORD=your-password
Then:
from tue_api_wrapper import TuebingenAuthenticatedClient
client = TuebingenAuthenticatedClient.from_env()
timetable = client.alma.timetable("Sommer 2026")
tasks = client.ilias.tasks()
deadlines = client.moodle.deadlines(days=30)
inbox = client.mail.inbox(limit=5)
You can also pass credentials directly:
client = TuebingenAuthenticatedClient.login(
username="your-zdv-id",
password="your-password",
)
Local MCP server
cd package
pip install -e ".[mcp]"
tue-mcp
Use stdio for most local agent clients. For HTTP-based clients:
tue-mcp --transport streamable-http --host 127.0.0.1 --port 8765
FastAPI server
tue-api-server
The API starts on http://127.0.0.1:8000 and exposes OpenAPI docs at /docs.
Publishing
Install the published package from PyPI:
pip install tue-api-wrapper
Install with MCP extras:
pip install "tue-api-wrapper[mcp]"
You can also install directly from GitHub:
pip install "tue-api-wrapper @ git+https://github.com/SebastianBoehler/tue-api-wrapper.git#subdirectory=package"
MCP extras from GitHub:
pip install "tue-api-wrapper[mcp] @ git+https://github.com/SebastianBoehler/tue-api-wrapper.git#subdirectory=package"
Release steps live in ../docs/release-pypi.md.
More docs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tue_api_wrapper-0.2.0.tar.gz.
File metadata
- Download URL: tue_api_wrapper-0.2.0.tar.gz
- Upload date:
- Size: 181.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
509a92c30be46b4f72a4ccbcbd8a2bf1e0d5d16048a6bbe110595428a51a257b
|
|
| MD5 |
3e9bffa7edfbcfe623caa829d800e285
|
|
| BLAKE2b-256 |
306a16de512124eeb23be3548f171c719f563ddf4f6132d69f279a35ce202ed9
|
Provenance
The following attestation bundles were made for tue_api_wrapper-0.2.0.tar.gz:
Publisher:
publish-python.yml on SebastianBoehler/tue-api-wrapper
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tue_api_wrapper-0.2.0.tar.gz -
Subject digest:
509a92c30be46b4f72a4ccbcbd8a2bf1e0d5d16048a6bbe110595428a51a257b - Sigstore transparency entry: 1452977581
- Sigstore integration time:
-
Permalink:
SebastianBoehler/tue-api-wrapper@ae0188b2ee3970100eab9cd409fda1a70f58eba3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/SebastianBoehler
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@ae0188b2ee3970100eab9cd409fda1a70f58eba3 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file tue_api_wrapper-0.2.0-py3-none-any.whl.
File metadata
- Download URL: tue_api_wrapper-0.2.0-py3-none-any.whl
- Upload date:
- Size: 194.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bee9efd84f31835aa7b4772ac72fe120dbc06987a6df94b01dbfae50df81cffa
|
|
| MD5 |
b2901e6a7abd69903bbcb47e5bad61ec
|
|
| BLAKE2b-256 |
4fddf82df6961e905d3f120feb61eedb684c91e23dd2bbb2a0fff6205843c156
|
Provenance
The following attestation bundles were made for tue_api_wrapper-0.2.0-py3-none-any.whl:
Publisher:
publish-python.yml on SebastianBoehler/tue-api-wrapper
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
tue_api_wrapper-0.2.0-py3-none-any.whl -
Subject digest:
bee9efd84f31835aa7b4772ac72fe120dbc06987a6df94b01dbfae50df81cffa - Sigstore transparency entry: 1452977722
- Sigstore integration time:
-
Permalink:
SebastianBoehler/tue-api-wrapper@ae0188b2ee3970100eab9cd409fda1a70f58eba3 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/SebastianBoehler
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@ae0188b2ee3970100eab9cd409fda1a70f58eba3 -
Trigger Event:
workflow_dispatch
-
Statement type: