Skip to main content
Glama

IS MUNI MCP

CI PyPI License: MIT

MCP server pro studenty Masarykovy univerzity — propojí AI agenty (Claude Desktop, Codex, ChatGPT desktop, Claude Code, VS Code, Cursor, …) s Informačním systémem MU, aby pomohli s plánováním studia: rozvrh, deadliny, e-maily, známky, body z bloků, studijní materiály a další.

Nikdy nic nemění. Server pouze čte data (GET + POST jen na povolené čtecí endpointy, typicky AJAX vyhledávání) — neumí odesílat poštu, registrovat předměty, přihlašovat na zkoušky ani jinak cokoliv v IS měnit. Garance je přímo v kódu: klient client.py nemá metody pro PUT/PATCH/DELETE a POST mimo allowlist odmítne (hlídá to i test test_read_only_client).

English summary: read-only MCP server for Masaryk University students — connects AI agents to IS MUNI (timetable, deadlines, mail, grades, course materials). Quickstart below is in Czech; commands are the same in any language. See CONTRIBUTING and SECURITY.

Instalace na 1 klik (bez terminálu) 🖱️

Vyberte si svého AI klienta — terminál není potřeba ani v jednom případě:

Klient

Jak na to

Claude Desktop

Stáhněte is-muni-mcp.mcpb z Releases, dvojklik, vyplňte učo + heslo. Hotovo.

Codex, ChatGPT desktop, Claude Code, VS Code, Cursor

Stáhněte Setup aplikaci pro svůj systém z Releases, dvojklik — otevře se průvodce v prohlížeči, kde vyplníte učo + heslo a zaškrtáte klienty. Hotovo. (ChatGPT desktop čte stejnou konfiguraci jako Codex — stačí ho po instalaci restartovat.)

Soubory v Releasu:

  • IS-MUNI-Setup-macos-arm64.zip — macOS (Apple Silicon; rozbalit, otevřít IS MUNI Setup.app)

  • IS-MUNI-Setup-windows-x64.exe — Windows (stáhnout, dvojklik)

  • is-muni-mcp-linux-x64 — Linux (stáhnout, spustit ./is-muni-mcp wizard)

  • is-muni-mcp.mcpb — Claude Desktop (dvojklik)

⚠️ Aplikace není placeně podepsaná (to stojí ~2500 Kč/rok), takže macOS při prvním otevření zahlásí neověřeného vývojáře: klikněte pravým tlačítkem → Otevřít → Otevřít. Na Windows SmartScreen podobně: Další informace → Přesto spustit. Kód je open-source — sestavení si můžete ověřit ve workflow, nic si nestahuje z internetu.

Heslo slouží jen k přihlášení a nikam se neukládá; server si drží pouze session. Detaily viz SECURITY.

Install in VS Code Add to Cursor

Tlačítka výše přidají server do VS Code / Cursoru jedním kliknutím (vyžadují nainstalovaný uvx a předchozí is-muni-mcp login — jednodušší je Setup aplikace, která umí obojí).

Pak se ptejte třeba: „Co mám příští týden v rozvrhu?“, „Jaké se blíží deadliny?“, „Mám nějaké nepřečtené e-maily?“, „Kolik mám bodů v poznámkových blocích?“

Related MCP server: moodle-mcp

Rychlý start s terminálem (3 kroky)

Pro Claude Code, VS Code, Zed a další klienty. Potřebujete Python 3.10+ a své učo + primární heslo do IS MUNI.

1. Instalace (jednou z možností):

pipx install is-muni-mcp        # doporučeno pro běžné uživatele
# nebo: uv tool install is-muni-mcp
# nebo: pip install --user is-muni-mcp

2. Přihlášení — zeptá se na učo a heslo, heslo se nikam neukládá:

is-muni-mcp login
is-muni-mcp status   # ověření, že přihlášení funguje

Session se uloží do ~/.config/is-muni-mcp/cookie.txt (práva 0600, jen pro vás). Když časem vyprší (typicky dny až týdny), stačí login zopakovat.

3. Napojení na AI klienta — jedna z možností:

is-muni-mcp setup --client claude-desktop   # zapíše konfiguraci za vás
is-muni-mcp setup --client claude-code      # přes `claude mcp add`
is-muni-mcp setup --client codex            # ~/.codex/config.toml (Codex CLI, IDE extenze i ChatGPT desktop)
is-muni-mcp setup --client vscode           # uživatelské mcp.json
is-muni-mcp setup --client cursor           # ~/.cursor/mcp.json
# tip: grafický průvodce (i bez terminálových znalostí): is-muni-mcp wizard

Pak restartujte klienta a ptejte se třeba: „Co mám příští týden v rozvrhu?“, „Jaké se blíží deadliny?“, „Mám nějaké nepřečtené e-maily?“, „Kolik mám bodů v poznámkových blocích?“

Nástroje (25)

Oblast

Nástroje

Student

status, profil, osoba, moje_predmety, predmet_info, moje_znamky, moje_seminarni_skupiny, hledat_predmet, harmonogram

Kalendář a výuka

kalendar, deadlines, rozvrh, zkouskove_terminy (pouze přehled)

Pošta

posta_slozky, posta_seznam, posta_cti

Notifikace

udalosti, pripomenuti (IS připomíná), dashboard (Co se děje / Co vás čeká)

Bloky

poznamkove_bloky (body a hodnocení z průběžných aktivit)

Soubory

soubory_vypis (i rekurzivně), soubor_cti (text rovnou; u prezentací/dokumentů zkusí i automatickou .txt verzi)

Diskuse a vývěska

diskuse_prehled, diskuse_vlakno, vyveska

Ruční konfigurace klientů

Když nechcete použít setup, přidejte server ručně. Příkaz je vždy is-muni-mcp (bez argumentů spustí server přes stdio; přihlášení si najde samo v ~/.config/is-muni-mcp/cookie.txt).

Claude Desktop — do claude_desktop_config.json:

{
  "mcpServers": {
    "is-muni": {
      "command": "is-muni-mcp"
    }
  }
}

Claude Code:

claude mcp add is-muni -- is-muni-mcp

Codex a ChatGPT desktop — do ~/.codex/config.toml (CLI, IDE extenze i ChatGPT desktop app sdílí tuto konfiguraci a spouští lokální stdio servery; po zápisu stačí restartovat aplikaci, stav ukáže /mcp):

[mcp_servers.is-muni]
command = "is-muni-mcp"
startup_timeout_sec = 60

Obecné mcp.json (VS Code, Zed, …) — totéž co výše; konfiguraci pro svůj stroj vytisknete příkazem is-muni-mcp setup --client json (VS Code: setup --client vscode --print-only, Cursor: ... cursor ...).

ChatGPT desktop app — umí lokální stdio servery přes sdílenou Codex konfiguraci (viz Codex výše): stačí is-muni-mcp setup --client codex nebo Setup aplikace a restart ChatGPT. Žádný vzdálený server není potřeba.

ChatGPT web a další klienti bez lokálního stdio — webové ChatGPT umí jen vzdálené MCP servery (URL). Pro tento případ server umí i HTTP transport — musíte ho ale provozovat sami (např. na vlastním VPS) a ChatGPT pak napojit na jeho URL:

is-muni-mcp serve --transport streamable-http --host 127.0.0.1 --port 8000
# URL pro klienta: http://VAS-SERVER:8000/mcp

⚠️ HTTP režim vystavuje vaše data z IS komukoliv s přístupem k URL — provozujte ho jen za autentizací / na privátní síti (Tailscale, VPN) a nikdy ne bez zabezpečení na veřejném internetu.

Docker:

docker build -t is-muni-mcp .
docker run -i --rm -v is-muni-config:/config is-muni-mcp login   # přihlášení (session zůstane ve volume)
docker run -i --rm -v is-muni-config:/config is-muni-mcp         # server přes stdio

Přihlášení — detaily a alternativy

  • is-muni-mcp login — interaktivní přihlášení učem + heslem (doporučeno).

  • is-muni-mcp login --uco 990001 — učo předvyplněné, zeptá se jen na heslo.

  • is-muni-mcp login --cookie "__Host-issession=...; __Host-iscreds=..." — nouzová varianta: vložení hotové session z prohlížeče (Vývojářské nástroje → Application → Cookies → https://is.muni.cz).

  • is-muni-mcp logout — smaže uloženou session.

  • Proměnné prostředí (přednost před uloženou session, vhodné pro servery a CI): ISMU_COOKIE (celý řetězec), ISMU_SESSION + ISMU_CREDS, ISMU_COOKIE_FILE, nebo ISMU_UCO + ISMU_PASSWORD (automatické přihlášení i obnova expirované session). Vzor viz .env.example.

  • Stažené binární soubory: ISMU_DOWNLOAD_DIR (výchozí ~/.cache/is-muni-mcp).

Vývoj a testy

git clone https://github.com/Destingem/is-muni-mcp.git
cd is-muni-mcp
uv sync --group dev
uv run pytest            # fixture testy parserů + test MCP protokolu (offline)
uv run ruff check src tests mcpb packaging && uv run ruff format --check src tests mcpb packaging
ISMU_LIVE_MCP=1 uv run pytest tests/test_mcp.py -q   # + živé volání přes protokol (potřebuje přihlášení)

Testy běží nad redigovanými vzorky stránek IS (tests/fixtures/) — žádný network, žádná reálná data. Detaily viz CONTRIBUTING.

Jak to funguje a limity

  • Data se čtou přímo ze stránek IS (HTML + vložený JSON kalendáře + oficiální iCal export rozvrhu format=ical). Žádné neoficiální API není potřeba.

  • Struktura stránek IS se může změnit — když některý nástroj přestane fungovat, většinou stačí upravit příslušný parser v src/is_muni_mcp/parsers/.

  • Některé agendy IS (např. přepínače období) se doplňují JavaScriptem — server pracuje s aktuálně vybraným obdobím a studiem.

  • Odpovědníky se čtou jen z kalendáře a výpisu souborů — nástroj záměrně neotvírá testovací rozhraní, aby omylem nezahájil pokus.

  • Neoficiální projekt — není dílem ani pod záštitou Masarykovy univerzity.

Licence

MIT — viz LICENSE.

Available Tools

25 tools
dashboardA

Přehled 'Co se právě děje / Co vás čeká / Poslední studijní události' z titulní stránky Studenta.

Inputs: no named parameters.

deadlinesB

Blížící se deadliny: odevzdávárny, odpovědníky, zkoušky a události semestru. Výchozí rozsah: dnes až +30 dní.

Inputs: do, od. Returns: result

diskuse_prehledA

Přehled diskusních fór (obecná, předmětová, tematická...) s odkazy na fóra.

Inputs: no named parameters.

diskuse_vlaknoC

Přečte vlákno diskuse (příspěvky: autor, datum, text). URL z přehledu nebo z kalendáře.

Inputs: url (required), max_prispevku.

harmonogramB

Harmonogram semestru: zápisy, výuka, zkouškové a další termíny. Bez parametru všechny fakulty, jinak zkratka (např. 'FSS').

Inputs: fakulta.

hledat_predmetC

Vyhledávání v katalogu předmětů (kód, název, období, odkaz na detail). Fakulta = číselné ID (prázdné = moje fakulta), období = název ('podzim 2026', prázdné = aktuální).

Inputs: dotaz (required), limit, obdobi, fakulta_id.

kalendarB

Kalendář: události z vývěsky, odevzdávárny, odpovědníky, události semestru, svátky, zkoušky. Data pokrývají aktuální zobrazené období v IS. Datum ve formátu RRRR-MM-DD. Typy: čárkou oddělené kódy (5_1,6_1,6_2,6_3,6_4,6_5,8_1) nebo části názvů (např. 'odevzdávárny,zkoušky').

Inputs: do, od, typy. Returns: result

moje_predmetyA

Zapsané předměty v daném období (kód, název, fakulta). Období např. 'podzim2026', prázdné = aktuální.

Inputs: obdobi. Returns: result

moje_seminarni_skupinyA

Moje seminární skupiny (předmět, skupina, termíny, místnosti) + které předměty skupiny mají. Pouze přehled — nástroj nikoho nikam nepřihlašuje ani neodhlásí.

Inputs: no named parameters.

moje_znamkyA

Moje známky a hodnocení (předmět, kredity, ukončení, hodnocení, datum). Včetně starších období, pokud je IS zobrazuje.

Inputs: no named parameters. Returns: result

osobaC

Kontakt na osobu (typicky vyučujícího): jméno, e-mail, telefon, pracoviště/studium.

Inputs: uco (required).

posta_ctiA

Přečte jednu zprávu (hlavička + tělo + přílohy). ID zprávy ze seznamu; složka volitelně (id).

Inputs: id (required), slozka.

posta_seznamA

Seznam zpráv ve složce (id, od, předmět, datum, velikost, nepřečtená). Složka = id nebo část názvu (např. 'Příchozí'), prázdné = příchozí pošta. Stránkování přes start.

Inputs: pocet, start, slozka, jen_neprectene.

posta_slozkyC

Složky pošty (id, název, počet zpráv).

Inputs: no named parameters. Returns: result

poznamkove_blokyB

Poznámkové bloky: body a hodnocení z průběžných aktivit. Volitelný filtr na kód předmětu.

Inputs: predmet.

predmet_infoC

Detail předmětu: název, vyučující, rozsah, kredity, ukončení, rozvrhové časy, anotace, odkaz na e-learning.

Inputs: kod (required), obdobi, fakulta.

pripomenutiC

'IS připomíná' — personalizovaná upozornění ke studiu (kredity, zápisy, povinnosti).

Inputs: no named parameters. Returns: result

profilB

Osobní stránka: jméno, e-mail, studia, program, forma, stav, plány. Bez parametru = vlastní profil.

Inputs: uco.

rozvrhA

Můj rozvrh na dané období (název, začátek, konec, místo). Výchozí rozsah: aktuální týden (Po–Ne).

Inputs: do, od. Returns: result

soubor_ctiA

Stáhne soubor z IS. Textové soubory vrátí jako text; binární uloží do ISMU_DOWNLOAD_DIR a vrátí cestu. Pro prezentace/dokumenty automaticky zkusí i automaticky generovanou .txt verzi (zkus_txt).

Inputs: url (required), zkus_txt, max_znaku.

soubory_vypisC

Výpis studijních materiálů předmětu (složky: um/odp/ode/op + soubory s odkazy ke stažení). Cesta = podsložka (např. 'um/prezentace'). Rekurze=True projde i podsložky (max. 60 stránek).

Inputs: kod (required), cesta, obdobi, fakulta, +1 more.

statusA

Ověří přihlášení k IS MUNI a vrátí základní identitu (jméno, učo, vybrané studium/období).

Inputs: no named parameters.

udalostiB

Záznamy událostí v ISu (změny zkušebních termínů, bloků, známek, diskusí, vývěsek).

Inputs: no named parameters.

vyveskaC

Vývěska: důležité a sledované zprávy, pozvánky, inzerce. Typ: '' (vše), 'pozvanky', 'inzerce'.

Inputs: typ.

zkouskove_terminyA

Vyhlášené zkušební termíny mých předmětů (pouze přehled — nástroj nikoho nikam nepřihlašuje).

Inputs: no named parameters.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.1/5.0

    Scored across 25 tools

    Disambiguation3/5

    Most tools target distinct areas, but there is noticeable overlap among kalendar, deadlines, pripomenuti, udalosti, and dashboard, all of which can surface similar study-related events or notifications. The descriptions clarify the differences somewhat, but an agent could still easily select the wrong tool for a vague user request.

    Naming Consistency3/5

    Names are consistently lowercase and use underscores for compound terms, which gives a rough visual pattern. However, the linguistic order varies (e.g., 'hledat_predmet' vs. 'posta_cti'), and English terms like 'deadlines' and 'dashboard' are mixed into an otherwise Czech naming scheme.

    Tool Count3/5

    At 25 tools, the set is at the heavy end of the borderline range. Each tool serves a different information-system area, so the count is understandable, but the breadth makes the server feel sprawling rather than tightly scoped.

    Completeness4/5

    The tool set covers the main read-only student workflows well: calendar, deadlines, mail, files, discussions, courses, grades, and personal data. Gaps exist but are minor for this read-only purpose, such as no ability to search for people by name or to upload files; write operations appear intentionally excluded.

    Maintenance

    ActivitySlowing
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      Enables AI agents to access a student's EPFL Moodle data—deadlines, course files, assignments, forums, and grades—through read-only tools.
      12
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Connects AI assistants to the UNED virtual campus (agora.uned.es, Moodle) so students can log in via SSO, sync course materials, and search or read extracted text with page-level citations. It also surfaces deadlines, announcements, grades, classes and calendar events, tracks topic-by-topic progress, generates weekly study plans and exports dates to an .ics calendar.
      21
      1
      MIT
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI assistants to read a student's courses, assignments, exam schedule, weekly course content, and Panopto lecture recordings with timestamped transcripts (transcribing audio when no captions exist). Access is read-only and uses the user's own credentials, which stay local.
      7
      MIT