Metadata-Version: 2.4
Name: hisinone-mcp
Version: 0.1.0
Summary: MCP-Server für HISinOne: Veranstaltungen suchen, Details, Stundenplan und Noten lesen
Author-email: smlfg <186922365+smlfg@users.noreply.github.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/smlfg/hisinone-mcp
Project-URL: Repository, https://github.com/smlfg/hisinone-mcp
Keywords: hisinone,campus,university,mcp,model-context-protocol
Classifier: Environment :: Console
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mcp<2,>=1.20
Requires-Dist: hisinone-cli>=0.1.1
Dynamic: license-file

# hisinone-mcp

MCP-Server für HISinOne-Campusportale: öffentlich Veranstaltungen suchen und
Details lesen, nach dem Login den persönlichen Stundenplan und die
Leistungsübersicht abrufen. Ausschließlich lesend.

Der Server ist eine dünne Hülle um den Kern der
[`hisinone-cli`](https://github.com/smlfg/hisinone-cli): Er importiert
`hisinone.client`, `hisinone.config` und `hisinone.parse` und ruft dieselben
Funktionen wie `hisinone suche`, `hisinone veranstaltung`,
`hisinone stundenplan` und `hisinone noten` auf.

## Schnellstart

```bash
uvx hisinone-mcp
```

Für Stundenplan und Noten vorher einmal im Terminal anmelden; die Sitzung liegt
unter `~/.config/hisinone-cli/` (0600):

```bash
uvx --from hisinone-cli hisinone login
```

Danach startet der MCP-Client den Server selbst. Suche und
Veranstaltungsdetails funktionieren ohne Login.

## In Claude Desktop / Cursor nutzen

```json
{"mcpServers":{"hisinone":{"command":"uvx","args":["hisinone-mcp"],"env":{"HISINONE_BASE_URL":"https://campus.uni-freiburg.de/qisserver/pages/cs/sys/portal/hisinoneStartPage.faces"}}}}
```

`HISINONE_BASE_URL` ist optional und überschreibt das Standardportal. Für eine
andere Hochschule die Basis-URL der dortigen HISinOne-Instanz eintragen.

## Claude Code

```bash
claude mcp add hisinone -e HISINONE_BASE_URL=https://campus.uni-freiburg.de/qisserver/pages/cs/sys/portal/hisinoneStartPage.faces -- uvx hisinone-mcp
```

## Tools

| Tool | Beschreibung | Login |
|---|---|---|
| `search_courses` | Veranstaltungen nach Titel, Nummer oder Lehrperson suchen | nein |
| `get_course` | Veranstaltung per Titel oder numerischer Unit-ID anzeigen | nein |
| `get_timetable` | Persönlichen Stundenplan für heute oder die Woche lesen | ja |
| `get_grades` | Persönliche Leistungsübersicht lesen | ja |

Alle Tools sind lesend (`readOnlyHint`) und liefern strukturierte Daten plus
lesbaren Text. Es gibt keine schreibenden Aktionen wie Belegung oder
Prüfungsanmeldung. Fehler kommen als lesbare Meldung mit nächstem Schritt
zurück, nie als Traceback und nie mit Noten oder Personendaten im Log.

## Anmeldung und Konfiguration

Der MCP-Server fragt nie nach Passwörtern und nimmt keine Zugangsdaten als
Tool-Argument an. Er nutzt die Sitzung, die `hisinone login` anlegt. Alternativ
können `HISINONE_USER` und `HISINONE_PASSWORD` wie bei der CLI in der Umgebung
stehen; ohne Sitzung und ohne diese Variablen nennen `get_timetable` und
`get_grades` den nächsten Schritt `hisinone login`.

| Variable | Default | Bedeutung |
|---|---|---|
| `HISINONE_BASE_URL` | Universität Freiburg | Portal-Basis-URL (andere Hochschule, Fake-Server) |
| `HISINONE_USER` | – | Benutzername für die Anmeldung ohne gespeicherte Sitzung |
| `HISINONE_PASSWORD` | – | Passwort nur für Agenten/Tests, wird nie gespeichert oder geloggt |

## Datenquelle

Die Daten stammen aus dem jeweiligen HISinOne-Campusportal über dessen
Weboberfläche. Das Projekt ist inoffiziell, nicht mit den Hochschulen
verbunden und greift ausschließlich lesend zu. Portaländerungen können die
Auswertung brechen.

## Lizenz

MIT, Copyright 2026 smlfg. Siehe `LICENSE`.

<!-- mcp-name: io.github.smlfg/hisinone-mcp -->
