uniboh
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VIRTUALE_COOKIES | No | Cookie header for authenticated Virtuale tools (e.g. MoodleSession=...). | |
| VIRTUALE_SESSKEY | No | Moodle sesskey for authenticated Virtuale tools. | |
| ALMAESAMI_COOKIES | No | Cookie header with an authenticated JSESSIONID for AlmaEsami. | |
| VIRTUALE_BASE_URL | No | Moodle base URL (default: https://virtuale.unibo.it). | https://virtuale.unibo.it |
| ALMAESAMI_BASE_URL | No | AlmaEsami base URL (default: https://almaesami.unibo.it). | https://almaesami.unibo.it |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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