Skip to main content
Glama

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: 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

uvx hisinone-mcp

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

uvx --from hisinone-cli hisinone login

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

Related MCP server: librus-mcp

In Claude Desktop / Cursor nutzen

{"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

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.

Available Tools

4 tools
get_courseA
Read-onlyIdempotent

Zeigt eine HISinOne-Veranstaltung per vollständigem Namen, eindeutigem Suchbegriff oder numerischer Veranstaltungs-ID mit Art, Semester, Lehrperson, Terminen und Räumen. Show a HISinOne course; no login required, read-only.

NameRequiredDescriptionDefault
name_or_idYesVollständiger Veranstaltungstitel, eindeutiger Suchname oder numerische Unit-ID, z. B. 'Beispielseminar zur Datenverarbeitung' oder 7586.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is covered. The description adds context beyond that: 'no login required' tells the agent no authentication step is needed, and the enumerated result fields compensate for the absent output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the lookup modes and followed by the returned fields; nothing extraneous. The German and English halves duplicate the same content, which is a small redundancy but plausibly intentional for a bilingual audience.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, the description covers identifier forms, returned fields, and the auth/read-only posture. Nothing an agent needs in order to call it correctly appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single parameter already documents the accepted title/search-name/unit-ID forms with an example. The description restates the same three identifier modes without adding format rules or ambiguity handling, so the schema is doing the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Zeigt eine HISinOne-Veranstaltung' / 'Show a HISinOne course', and enumerates the accepted identifier forms (full name, unique search term, numeric ID). It also lists what is returned (type, semester, lecturer, dates, rooms), which separates it in spirit from search_courses, though it never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'eindeutigem Suchbegriff' / 'unique search term' implies this is the lookup path when an identifier is unambiguous, but there is no explicit statement of when to prefer search_courses or of what to do when the name is ambiguous. Usage is implied rather than prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_gradesA
Read-onlyIdempotent

Liest die persönliche HISinOne-Leistungsübersicht mit Modul, Prüfung, Note und Status. Benötigt die Sitzung aus hisinone login oder HISINONE_USER/HISINONE_PASSWORD aus der Umgebung; read-only.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely new context the annotations cannot express: the tool requires an authenticated HISinOne session via login or environment credentials, and it confirms 'read-only', which is consistent with the hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two compact sentences: the first front-loads what is read and what comes back, the second covers the auth prerequisite and read-only nature. Nothing is redundant or padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter, no-output-schema tool the description is close to complete: it names the data returned (module, exam, grade, status) and the authentication requirement. Only failure behaviour (e.g. what happens without a valid session) is left unstated, a minor gap given the low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4 under the scoring rules. The description adds no parameter information, but none is needed here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb plus resource ('Liest die persönliche HISinOne-Leistungsübersicht') and enumerates the fields it surfaces (Modul, Prüfung, Note, Status). The purpose is unmistakable and naturally distinct from the sibling tools (search_courses, get_course, get_timetable), though it never explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource name — call this to read your own grades — and the prerequisites (a session from `hisinone login` or HISINONE_USER/HISINONE_PASSWORD env vars) are stated. However, there is no explicit when-to-use/when-not-to-use guidance or routing to alternatives such as get_course.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_timetableA
Read-onlyIdempotent

Liest den persönlichen HISinOne-Stundenplan für heute oder die ganze Kalenderwoche. Benötigt die Sitzung aus hisinone login oder HISINONE_USER/HISINONE_PASSWORD aus der Umgebung; read-only.

NameRequiredDescriptionDefault
weekNoTrue zeigt die ganze Kalenderwoche; False nur den heutigen Tag.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/openWorld, so the description earns credit for adding the authentication prerequisite, which is operational context an agent cannot get from annotations or schema. The 'read-only' restatement is redundant but harmless, and no return shape or empty-result behavior is described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and scope, then the prerequisite. No filler and no repetition beyond the minor 'read-only' echo of the annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full schema coverage and rich annotations, the description supplies what is missing: auth requirement and scope. It stops short of describing what a timetable entry contains, which would help an agent interpret the result without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single `week` parameter already documents 'True zeigt die ganze Kalenderwoche; False nur den heutigen Tag.' The description's 'heute oder die ganze Kalenderwoche' only restates that semantics, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb+resource combination ('Liest den persönlichen HISinOne-Stundenplan') with an explicit scope ('für heute oder die ganze Kalenderwoche'). The resource is clearly distinct from siblings like get_grades or search_courses, though the description never names them to reinforce the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for invocation: it requires an authenticated session from `hisinone login` or HISINONE_USER/HISINONE_PASSWORD in the environment, and states the two usage modes (today vs. full week). It offers no explicit alternatives or when-not-to-use guidance, which is the only shortfall.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_coursesA
Read-onlyIdempotent

Sucht öffentlich im HISinOne-Vorlesungsverzeichnis nach Titel, Veranstaltungsnummer oder Lehrperson und liefert die nummerierten Treffer. Search HISinOne courses; no login required, read-only.

NameRequiredDescriptionDefault
limitNoMaximale Anzahl zurückgegebener Treffer (1 bis 100).
queryYesSuchbegriff für Titel, Veranstaltungsnummer oder Lehrperson, z. B. 'Beispielseminar'.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description still adds real context beyond them: the catalog is public and needs no authentication, and hits are returned numbered, which matters for chaining into a detail lookup. Return format and paging behavior are not described, keeping it shy of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and scope, with no filler. The German and English halves partially duplicate each other, which is a small redundancy but serves bilingual readers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter search with rich annotations and no output schema, the description covers purpose, scope, prerequisites and the shape of the result (numbered hits). It does not explain result fields or that the default limit is 10, but the schema covers the latter, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both query and limit are fully documented in the schema (including the 1-100 range). The description adds little beyond that, merely echoing the searchable fields that the query schema also lists. That is the baseline-3 case where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) plus the resource and its container (HISinOne-Vorlesungsverzeichnis), and names the searchable fields: title, course number, lecturer. It also says results come back numbered. It does not explicitly contrast with get_course, which fetches a single course, so sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'no login required, read-only' plus 'öffentlich' establishes useful preconditions, and searching is the obvious entry point of the workflow. However, there is no explicit routing advice such as 'use get_course to fetch details for a hit' or a note about when not to use it, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updatesv0.1.0
    • First observedget_course
    • First observedget_grades
    • First observedget_timetable
    • First observedsearch_courses

TDQS

A4.1/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct task: course discovery (search_courses), course detail (get_course), personal timetable (get_timetable), and personal grades (get_grades). The split between search and detail is natural rather than ambiguous, and the personal/read-only tools are clearly separated from the public catalog tools.

Naming Consistency5/5

All four tools follow a consistent snake_case verb_noun pattern: search_courses, get_course, get_timetable, get_grades. The only variation is plural vs singular object naming, which matches the semantics and does not impair predictability.

Tool Count5/5

Four tools is well-scoped for a focused read-only HISinOne client covering course search, course detail, timetable, and grades. Each tool has a clear reason to exist, and there is no redundant or filler surface.

Completeness4/5

The surface covers the core read-only student workflows implied by the descriptions: discovering courses, inspecting details, checking the timetable, and reading grades. Minor gaps might include explicit semester or exam-date queries, but the main lifecycle is well covered and login is handled outside the MCP tool set.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables searching and browsing TU Berlin degree programs and modules from Moses' public Modulverzeichnis, including module details, exam types, and cross-program usage, without requiring login.
    5
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Enables read-only access to a Librus Portal account, letting users list linked Synergia accounts and retrieve grades, attendance, timetable, homework, notices, and school information.
    3
    -
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI clients to read a student's own UGent Ufora (D2L Brightspace) data, including courses, announcements, deadlines, grades, course materials, and PDF text, over stdio or local Streamable HTTP. All operations are read-only and run locally against the student's authenticated session.
    19
    2
    MIT