Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VIRTUALE_COOKIESNoCookie header for authenticated Virtuale tools (e.g. MoodleSession=...).
VIRTUALE_SESSKEYNoMoodle sesskey for authenticated Virtuale tools.
ALMAESAMI_COOKIESNoCookie header with an authenticated JSESSIONID for AlmaEsami.
VIRTUALE_BASE_URLNoMoodle base URL (default: https://virtuale.unibo.it).https://virtuale.unibo.it
ALMAESAMI_BASE_URLNoAlmaEsami base URL (default: https://almaesami.unibo.it).https://almaesami.unibo.it

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
virtuale_login_with_passwordB

Attempts Moodle form login, then stores cookies and sesskey server-side and returns a session_id.

virtuale_bootstrap_sessionC

Creates a server-side session from an existing sesskey and cookie header.

virtuale_get_env_sessionA

Mints (or reuses) a session_id backed by the server's VIRTUALE_SESSKEY + VIRTUALE_COOKIES env vars. The sesskey/cookies are never returned — only an opaque session_id, so credentials configured in the MCP host's environment never pass through the model's context.

unibo_browser_loginA

Drives a real (headless) Chromium browser through the ADFS SSO login using EMAIL + PASSWORD from the server environment, then — reusing the same shared idp.unibo.it session — completes the AlmaEsami and RPS SAML handshakes too, storing one session and returning an opaque session_id that works with the virtuale_*, almaesami_*, and rps_* tools. The password/sesskey/cookies never pass through the model's context. Each service is best-effort: the result reports per-service success. Only works for accounts without interactive MFA (use the *_bootstrap_session tools for MFA accounts). Mints once and reuses the session on later calls unless force_relogin is set.

virtuale_browser_loginA

Deprecated alias for unibo_browser_login. Drives a headless Chromium through ADFS SSO with EMAIL/PASSWORD and returns an opaque session_id (now covering AlmaEsami and RPS too). Prefer unibo_browser_login.

virtuale_get_session_infoB

Shows stored login metadata and optionally returns cookie header string.

virtuale_logout_sessionA

Removes one stored authenticated session from server memory.

virtuale_health_checkA

Runs a safe no-login Moodle AJAX call to validate base connectivity.

unibo_calendar_resolve_timetable_urlB

Resolves the corsi.unibo.it timetable URL from a unibo.it course page URL.

unibo_calendar_list_curriculaB

Lists available curricula for a timetable URL.

unibo_calendar_list_teachingsB

Parses timetable page HTML and returns lecture/teaching IDs for filtering.

unibo_calendar_get_eventsA

Fetches raw timetable events from @@orario_reale_json with optional teaching-code filtering.

unibo_calendar_get_icsB

Fetches timetable events and returns an ICS calendar string.

virtuale_get_enrolled_coursesD

Calls local_uniboapi_get_enrolled_courses_unibo for the authenticated user.

virtuale_get_course_stateC

Calls core_courseformat_get_state and parses the returned JSON string state model.

virtuale_list_course_filesA

Lists the downloadable files/resources of a Virtuale course, grouped by section (cmid, name, modname, url), derived from core_courseformat_get_state. A slim, token-friendly view of the course contents (not the full state blob); pass a cmid to virtuale_get_resource to fetch a file's content. Read-only.

virtuale_get_panopto_contentC

Calls block_panopto_get_content for a course.

virtuale_quiz_list_course_quizzesA

Lists quiz activities on a course page, with the course-module id (cmid) needed by the other quiz tools.

virtuale_quiz_list_attemptsA

Reads a quiz activity page and returns the student's attempt summaries (status, dates, marks, grade) plus a review URL/attempt id for each finished attempt. Read-only.

virtuale_quiz_get_attempt_reviewA

Reads the review page of one of the student's own finished quiz attempts: each question's text, answer options, the student's selection, correctness, and feedback. Only works for attempts Moodle already allows the student to review (finished, review permitted by the quiz settings) — it does not start, resume, or answer a live attempt.

virtuale_get_resourceA

Fetches a Virtuale file/resource by cmid (builds /mod/resource/view.php?id=) or an explicit url, following the redirect to the protected pluginfile.php content with the authenticated MoodleSession cookie. Always returns metadata (final URL, content-type, size, filename). If save_to (an absolute file path) is given, streams the file to disk and returns the path + byte size. Otherwise returns text inline for text-like files (text/JSON/XML/HTML) and extracts + returns the text of PDFs; very long text is truncated (pass save_to for the full file). Read-only.

almaesami_bootstrap_sessionB

Creates a server-side session from an existing almaesami cookie header (JSESSIONID cookie header for almaesami.unibo.it). Returns an opaque session_id; the cookie is never echoed back.

almaesami_get_env_sessionA

Mints (or reuses) a session_id backed by the server's ALMAESAMI_COOKIES env var. The cookie is never returned — only an opaque session_id.

almaesami_get_exam_planA

Reads the authenticated student's AlmaEsami exam plan (Riepilogo Esami): activities, CFU, status, and whether each is bookable. Read-only; does not book exams.

almaesami_get_exam_historyA

Reads the authenticated student's AlmaEsami exam history (Cronologia): appello date, activity, examiner, type/mode, and status. Read-only.

almaesami_get_messagesA

Reads the authenticated student's AlmaEsami messages (subject, sender, received date, related appello). Read-only; does not delete messages.

almaesami_list_appelliA

Lists the student's upcoming AlmaEsami appelli (bookable exam sessions): date/time, activity, examiner, type/mode, and enrollment window — to answer "when can I sit exam X". Read-only: it never books. NOTE: the underlying endpoint/grid is UNVERIFIED (it lives behind SSO and could not be confirmed live); the result carries unverified: true, and the parser reads fields by content so it tolerates layout changes. If it returns nothing, the exam-plan tool's bookable flags are the confirmed signal, or pass an explicit path.

rps_bootstrap_sessionA

Creates a server-side session from an existing rps cookie header (PHPSESSID cookie header for rps.unibo.it). Returns an opaque session_id; the cookie is never echoed back.

rps_get_env_sessionA

Mints (or reuses) a session_id backed by the server's RPS_COOKIES env var. The cookie is never returned — only an opaque session_id.

rps_get_attendance_recordsB

Reads the authenticated student's RPS attendance records (Rilevazioni): date, subject, lecturer, and lesson duration for each recorded presence. Read-only.

rps_get_registerB

Reads the authenticated student's RPS attendance register (Registro): per-subject hours attended and attendance percentage. Read-only.

sol_bootstrap_sessionA

Creates a server-side session from an existing sol cookie header (JSESSIONID cookie header for studenti.unibo.it). Returns an opaque session_id; the cookie is never echoed back.

sol_get_env_sessionA

Mints (or reuses) a session_id backed by the server's SOL_COOKIES env var. The cookie is never returned — only an opaque session_id.

sol_get_careerA

Reads the authenticated student's Studenti Online (studenti.unibo.it) home page into a career summary: greeting/identity, enrolled course of study, and in-progress requests. Read-only; never submits requests or payments. NOTE: parsed from a single logged-in capture — selectors are best-effort and individual fields degrade to empty rather than failing.

sol_get_servicesA

Lists the Studenti Online service tiles available to the student (name, link, description) — e.g. fees/payments, enrolments, certificates — so a caller can discover what the portal exposes. Read-only; it lists links, it does not act on them.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/gattaa/uniboh'

If you have feedback or need assistance with the MCP directory API, please join our Discord server