metu-course-info-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@metu-course-info-mcp list computer engineering courses for 2025 fall semester"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
METU Course Info MCP Server
A Model Context Protocol (MCP) server for querying Middle East Technical University (METU / ODTÜ) course details, curriculum requirements, prerequisites, equivalents, and student course categories from the METU Student Portal (SAIS at https://student.metu.edu.tr).
Features
This MCP server integrates with:
View Program Course Details (64):
Search across 200+ METU departments and academic semesters.
List offered courses for any department and semester with credits, ECTS, level, and status.
View detailed course sections, instructor assignments, schedules, and critical announcements.
Query course prerequisites and required minimum passing grades.
Query course replacement / equivalence (Denk Dersler) rules.
View thesis work courses for graduate departments.
View Student Course Categories (178):
View the authenticated student's curriculum program types (e.g. Major / Minor).
View course requirements and elective categories (Must Courses, Departmental Electives, Non-Departmental Electives, Free Electives).
List specific courses required or permitted under each category for the student.
Note regarding View Course Capacity (158): Program 158 uses image CAPTCHA verification on each lookup, and is omitted per current automated requirements.
Related MCP server: cmucourses-connector
Installation
Using uv:
# Clone or navigate to the repository
cd /path/to/metu-course-info-mcp
# Create virtual environment and install
uv venv
uv pip install -e .Configuration
Create or update a .env file in the root directory:
SAIS_USERNAME=your_metu_username # e.g. e123456
SAIS_PASSWORD=your_sais_password # your METU password
LOCALE=tr # tr or en
PORT=8300 # optional port for SSE transportAvailable MCP Tools
Tool Name | Description |
| Lists all METU departments (code & name) and available semesters (e.g. |
| Search department code by name keyword (e.g. |
| Lists all courses offered by a department in a semester with Code, Name, ECTS, Credit, Level, and Type. |
| Retrieves section numbers, instructor names, syllabus link, and critical announcements for a course. |
| Retrieves prerequisite courses, set group numbers, and minimum passing grades (e.g. |
| Retrieves auto-replacement and equivalent courses (Denk Dersler). |
| Retrieves thesis work courses for a department. |
| Retrieves current student's program types and curriculum categories. |
| Retrieves courses listed under a category (Must Courses, Departmental Electives, etc.). |
Running the Server
Stdio Transport (Default for MCP Clients)
# Run using uv
uv run metu-course-info-mcp
# Or directly with Python
.venv/bin/python -m metu_course_info_mcpSSE Transport (HTTP Server)
uv run metu-course-info-mcp --transport sse --port 8300MCP Client Configuration
Claude Desktop / Antigravity / Cursor Configuration
Add this to your MCP configuration file (mcp_config.json or claude_desktop_config.json):
{
"mcpServers": {
"metu-course-info": {
"command": "/Users/ates/Documents/projects/metu-course-info-mcp/.venv/bin/python",
"args": ["-m", "metu_course_info_mcp"],
"env": {
"SAIS_USERNAME": "your_metu_username",
"SAIS_PASSWORD": "your_sais_password",
"LOCALE": "tr"
}
}
}
}Running Tests
uv run pytest -vAvailable Tools
9 toolsget_course_infoB
Retrieve detailed course information for a specific METU course, including sections, instructors, syllabus status, announcements, and lecture schedules.
Inputs: course_code (required), semester_code (required), department_code (required). Returns: sections, semester, department, course_code, +2 more
get_course_prerequisitesA
Retrieve all prerequisite course requirements, prerequisite set groups, and minimum required letter grades (e.g., DD) for a specific METU course.
Inputs: course_code (required), semester_code (required), department_code (required). Returns: result
get_course_replacementsB
Retrieve equivalent and auto-replacement courses (Denk Dersler) for a specific METU course.
Inputs: course_code (required), semester_code (required), department_code (required). Returns: result
get_departments_and_semestersA
Retrieve all available METU academic departments (code and name) and semester terms (e.g., '20251' for 2025-2026 Fall) from Program Course Details (64).
Inputs: no named parameters. Returns: semesters, departments
get_student_course_categoriesA
Retrieve the logged-in student's program types (e.g. MAJOR) and curriculum course categories (MUST COURSE, DEPARTMENTAL ELECTIVE, NONDEPARTMENTAL ELECTIVE, FREE ELECTIVE) from Service 178.
Inputs: no named parameters. Returns: program_types, course_categories
get_student_courses_by_categoryB
Retrieve the list of courses belonging to a student's category (e.g. MUST COURSES or DEPARTMENTAL ELECTIVES with category_id like '1-236' or '2-236').
Inputs: category_id, program_type. Returns: courses, message, category_id, category_name
get_thesis_coursesC
Retrieve all thesis work courses for a department and semester term.
Inputs: semester_code (required), department_code (required). Returns: result
list_program_coursesA
List all offered courses for a given METU department code and semester code. Returns Course Code, Course Name, ECTS Credits, Credits, Level, and Type.
Inputs: semester_code (required), department_code (required). Returns: result
search_departmentsA
Search for METU department codes by keyword (e.g. 'Computer', 'Economics', 'Aerospace', '571').
Inputs: query (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool targets a distinct task: department discovery, course listing, course details, prerequisites, replacements, and student category queries. Even the closely related list_program_courses and get_thesis_courses are clearly separated by their filtered scope.
The majority of tools follow a get_<entity> pattern, with search_departments and list_program_courses as understandable discovery-action variants. The mix of get/list/search is minor and predictable, so the naming remains coherent.
Nine tools is a well-scoped size for this domain, covering catalog browsing, course details, and student-specific curriculum queries without unnecessary overlap or bloat. Each tool earns its place.
The surface covers department lookup, course listings, detailed course information, prerequisites, replacements, and student course categories. Minor gaps like a keyword course search or section-level enrollment details exist, but the core workflows are complete.
Maintenance
Related MCP Connectors
Hosted MCP for LearnOS: search courses, lesson citations, flashcards and notes from any MCP client.
Public read-only MCP access to digital learning concepts, semantic relationships, and citations.
Web and URL utilities over MCP: shorten URLs, screenshot pages, read page metadata, encode URLs.
Search university course materials, your flashcards, quizzes, streak and quota. All tools read-only.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for querying a university course catalog. Enables searching courses, checking prerequisites, and looking up instructors via natural language.-
- FlicenseNot gradedqualityDmaintenanceRemote MCP connector providing live, structured access to CMU Courses public data including courses, prerequisites, schedules, instructors, gen-eds, and final-exam times to help students plan schedules.-
- FlicenseNot gradedqualityDmaintenanceEnables querying student information such as marks, attendance, pending assignments, and timetables from a MySQL database through MCP tools.-
- FlicenseAqualityCmaintenanceConnects AI assistants to METU's Student Affairs Information System using real SSO authentication, enabling retrieval of student info, schedules, transcripts, and announcements through MCP tools.6-