Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NINOVA_BASE_URLNoBase URL for Ninovahttps://ninova.itu.edu.tr
NINOVA_ENV_FILENoAbsolute path to .env file
NINOVA_PASSWORDYesYour ITU Ninova password
NINOVA_USERNAMEYesYour ITU Ninova username
NINOVA_STATE_DIRNoAbsolute path to state directory
NINOVA_REMOTE_HOSTNoRemote HTTP server host0.0.0.0
NINOVA_REMOTE_PORTNoRemote HTTP server port8000
NINOVA_ALLOWED_HOSTSNoComma-separated allowed hosts
NINOVA_ALLOWED_ORIGINSNoComma-separated allowed origins
NINOVA_PUBLIC_BASE_URLNoPublic base URL for remote server
NINOVA_REMOTE_MCP_PATHNoSecret path for remote MCP endpoint
NINOVA_DISABLE_PLAYWRIGHT_FALLBACKNoSet to '1' to disable Playwright fallback

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
auth_statusA

Check whether Ninova credentials are configured and whether a fresh session can be created.

refresh_sessionA

Force a new login with NINOVA_USERNAME and NINOVA_PASSWORD.

get_dashboardA

Read the Ninova dashboard and summarize courses, recent announcements, assignments, and messages.

list_coursesA

List all discovered Ninova courses from the dashboard.

get_coursesA

Return all courses visible in the Ninova dashboard.

get_course_announcementsC

Return announcements for a specific Ninova course.

get_course_class_filesC

List files and folders under the Ninova 'Sınıf Dosyaları' section for a course.

get_course_lesson_filesB

List files and folders under the Ninova 'Ders Dosyaları' section for a course.

get_course_assignmentsC

Return a course's assignment list together with each assignment's full detail page.

get_course_infoC

Return structured information from a course's 'Sınıf Bilgileri' page.

get_course_sectionsC

List the direct course routes exposed on the Ninova course home page.

get_course_gradesB

Read the Ninova 'Notlar' page for a course.

get_course_message_boardC

Read the Ninova 'Mesaj Panosu' page for a course.

get_course_attendanceC

Read the Ninova 'Yoklama' page for a course.

get_course_remote_learningC

Read the Ninova 'Uzaktan Eğitim' page for a course.

get_course_overviewB

Return a combined view of a course's sections, announcements, assignments, files, grades, message board, attendance, and remote learning routes.

get_dashboard_announcementsC

Return the announcements listed under the Ninova dashboard's aggregated announcements page.

get_dashboard_assignmentsC

Return the assignments listed under the Ninova dashboard's aggregated assignments page, including full details.

sync_all_coursesA

Fetch all visible courses, store a tracking snapshot, and return newly detected changes since the previous sync.

get_updatesC

Read the stored Ninova tracking history and return recent detected changes.

get_upcoming_deadlinesC

Return assignments whose submission deadline is approaching based on the stored tracking snapshot.

read_pageC

Fetch any Ninova page and return a structured summary of text, headings, links, tables, and attachments.

crawl_courseB

Inventory pages and downloadable resources inside a Ninova course tree.

download_resourceB

Download a Ninova file or other authenticated resource to disk.

snapshot_pageB

Save a structured snapshot of a Ninova page for later comparison.

diff_snapshotC

Compare the current state of a Ninova page against a previously stored snapshot.

obs_auth_statusA

Check whether the ITU account can sign in to OBS (obs.itu.edu.tr) via girisv3 single sign-on.

obs_refresh_sessionB

Force a new OBS login and issue a fresh API token.

obs_get_profileB

Return the student's personal details, student number, faculty, department, advisors, and academic programs.

obs_list_semestersA

List every academic semester available for this student, with the internal semester id and term code.

obs_get_graduation_progressB

Return 'Mezuniyetime Ne Kaldı': the course plan requirements, credits earned vs. required, GPA and internship requirements, every completed course, and every course still missing.

obs_get_academic_standingB

Return the semester-by-semester GPA, semester GPA, credit, and class-level history.

obs_get_semester_statusB

Return the academic status snapshot (class level, credits, GPA) for one semester.

obs_get_gradesA

Return the final letter grades for one semester, with grade points and pass/fail flags.

obs_get_interim_gradesB

Return published in-term grades (midterm, quizzes, final) for a semester's courses, each with the class mean, standard deviation, the student's rank, and the component weight — enough to estimate a letter grade before it is posted.

obs_get_course_historyC

Return every graded course across every semester, plus pass/fail counts and the list of failed courses.

obs_get_registered_coursesB

Return the courses the student is registered to for one semester, with CRN, place, and time.

obs_get_scheduleB

Return the weekly class schedule for one semester, sorted by day and start time.

obs_get_exam_scheduleC

Return the final exam dates, times, and rooms for one semester.

obs_get_attendanceA

Return the attendance record for one registered class, identified by its OBS class id.

obs_get_registration_statusA

Return whether course registration is currently open for the student, per semester.

obs_get_internshipsA

Return the student's recorded internships.

obs_get_announcementsC

Return announcements published in OBS.

obs_get_transcriptB

Download the official transcript preview PDF from OBS and save it to disk.

obs_check_prerequisitesB

Decide which courses the student may register for, by evaluating each course's published prerequisite expression against their own passed courses, expanded through the course-plan equivalences that cover renamed course codes. Prerequisites reflect the programme's current definitions even for an older plan. Defaults to every course still required for graduation.

obs_get_registration_optionsB

For every course still required for graduation: which codes satisfy it (including renamed equivalents), whether any of them is offered this term with CRNs and meeting times, and whether the prerequisites are met. The single call to drive course-registration planning.

obs_project_gpaA

Project the cumulative GPA under hypothetical grades, e.g. ["YZV 201E:CC", "ING 201A:BB"]. Models ITU's rule that only the last attempt of a course counts and that equivalent course codes are the same course. Reports whether the reconstruction still matches the GPA OBS itself reports, so a silent model drift is visible.

obs_get_elective_poolB

Return every course that can fill one elective slot of the student's course plan, by group id.

obs_get_elective_optionsA

For every elective slot the student has not yet filled: the pool of eligible courses, which of them run this term with CRNs and times, and whether the prerequisites are met.

obs_api_getA

Read any /api/ogrenci/... OBS endpoint directly and return the raw JSON. Read-only escape hatch.

obs_public_active_termA

Return the term whose course schedule is currently published on the public OBS pages, with its term code. This is usually the upcoming term, not the one registration still calls current. No login required.

obs_public_get_prerequisitesA

Return the published prerequisite expression and minimum completed credits for every course in a branch. These reflect the programme's current definitions, not any one course plan. No login required.

obs_public_get_equivalencesA

Return which courses count in place of a plan course, for one course plan and branch. This is how renamed course codes are reconciled across cohorts. No login required.

obs_public_list_plansA

List the course plans published for a programme, with their plan ids. No login required.

obs_public_registration_termB

Return the term the registration system reports as current, which lags the published schedule. No login required.

obs_public_list_branchesA

List every course branch code (BLG, YZV, MAT, ...) published for a program level. No login required.

obs_public_get_scheduleA

Return every published section for a course branch: CRN, meeting days and times, instructor, room, quota, and remaining seats. No login required.

obs_public_find_coursesB

Look up several courses at once by code and return their published sections. No login required.

obs_public_check_conflictsA

Check a candidate set of sections for time clashes and return the resulting weekly timetable. Each selection is {code, crn}; the CRN can be omitted when a course has only one section.

hocametre_search_instructorsA

Search notkutusu.com's public 'hocametre' instructor ratings by (partial) instructor name and return matching profiles with their slugs. No login required; the same person may appear as several duplicate profiles.

hocametre_get_instructorA

Return one instructor profile's anonymous student ratings (note sharing, helpfulness, homework load, attendance strictness, teaching skills; each 1-5 with vote counts) and, optionally, the newest student comments. No login required.

hocametre_lookup_instructorsA

Resolve several instructor names (as printed in the OBS schedule) to their hocametre ratings. Returns every matching profile, most-voted first, plus a vote-weighted 'combined' score because the same instructor is often split across duplicate profiles. No login required.

hocametre_rate_course_sectionsA

For each given course code, list every section published in the public OBS schedule for the upcoming term (CRN, times, room, quota, remaining seats) together with its instructor's hocametre ratings, so sections of the same course can be compared by instructor. No login required.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

C2.9/5.0

Scored across 63 tools

Disambiguation2/5

The server mixes three domains (Ninova LMS, OBS student records, and public hocametre ratings) with many overlapping tools: obs_get_registered_courses vs obs_get_schedule vs obs_get_registration_options, get_course_* vs crawl_course vs read_page, and auth_status vs obs_auth_status vs refresh_session vs obs_refresh_session. Several tools have similar purposes (e.g., get_dashboard_announcements vs get_course_announcements, obs_get_elective_pool vs obs_get_elective_options) and the distinction between Ninova and OBS is not obvious from names alone.

Naming Consistency3/5

There is a consistent verb_noun pattern within each domain (list_courses, crawl_course, download_resource; obs_get_*, obs_public_*; get_course_*), but the three domains use different prefixes and styles: bare verbs (crawl_course, download_resource), obs_* and obs_public_* with get_/list_/check_/find_ verbs, and get_* for Ninova. The naming is readable but the mixed prefixes and inconsistent verb choices (list vs get vs crawl vs read) create moderate inconsistency.

Tool Count2/5

63 tools is far beyond the typical well-scoped MCP server. While the server covers three distinct domains (Ninova LMS, OBS student portal, public hocametre), the count is excessive and many tools are narrow page-readers (get_course_announcements, get_course_class_files, get_course_lesson_files, get_course_info, get_course_sections, get_course_grades, get_course_message_board, get_course_attendance, get_course_remote_learning) that could be consolidated.

Completeness4/5

For the apparent domains, the coverage is quite thorough: Ninova has course listing, file download, announcements, assignments, grades, attendance, and change tracking; OBS has profile, grades, schedule, registration, prerequisites, electives, GPA projection, and an API escape hatch; public data has schedules, prerequisites, equivalences, and instructor ratings. Minor gaps exist (e.g., no OBS course registration action, no hocametre comment posting) but the read-only/planning focus is well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues