METU ODTUClass MCP Server
Click on "Install 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 ODTUClass MCP ServerWhat assignments are due this week?"
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 ODTUClass MCP Server
A Model Context Protocol (MCP) server for METU's ODTUClass learning management system — enabling AI assistants to query courses, announcements, syllabi, assignment deadlines, and lab schedules directly from odtuclass.metu.edu.tr.
Overview
This server bridges your AI assistant (Antigravity IDE, Claude Desktop, or any MCP-compatible client) with ODTUClass — METU's Moodle-based learning platform. Once connected, you can ask your AI to:
"What courses am I enrolled in this semester?"
"Show me the latest announcements from PHYS 106."
"Download and summarize the syllabus for MATH 130."
"What assignments are due this week?"
"When is my CENG 242 Section 3 recitation?"
Related MCP server: SABIS MCP Server
Available MCP Tools
Tool | Parameters | Description |
|
| Authenticate with METU credentials and cache session token |
|
| List all courses you are enrolled in, with IDs and links |
|
| Fetch latest forum announcements for a course |
|
| Locate and extract syllabus PDFs or course policy pages |
|
| List upcoming deadlines and assignments with time remaining |
|
| Find lab/recitation time and room for a specific section |
All
student_tokenparameters are optional when credentials are configured via environment variables or.env.local.
Authentication
Two methods are supported. Credentials-based login is recommended — it requires no manual token extraction.
Option A — METU Username & Password (Recommended)
Set your credentials in .env.local (gitignored, never committed):
ODTUCLASS_USERNAME=e123456
ODTUCLASS_PASSWORD=your_metu_passwordThe server reads this file on startup, authenticates automatically, and securely caches the session token in .odtuclass_cache/session.json. Subsequent runs reuse the cached token.
You can also ask the AI to log in explicitly:
"Log in to ODTUClass with username
e123456and password..."
Option B — Web Service Token (Security Key)
Visit ODTUClass and log in.
Click your name in the top-right → Preferences.
Under User Account, open Security keys.
Copy the Moodle mobile web service token (32-character alphanumeric string).
Then set it in .env.local:
ODTUCLASS_TOKEN=your_32_character_tokenInstallation
Prerequisites
Python 3.10 or later
pip(oruv)
1. Clone the Repository
git clone https://github.com/your-username/metu-odtuclass-mcp.git
cd metu-odtuclass-mcp2. Create a Virtual Environment
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # macOS / Linux3. Install Dependencies
pip install -r requirements.txt4. Configure Credentials
cp .env.example .env.local
# Edit .env.local with your METU username/password or tokenClient Configuration
Antigravity IDE
Add the following to your workspace .agents/mcp_config.json or global ~/.gemini/config/mcp_config.json:
{
"mcpServers": {
"odtuclass": {
"command": "/path/to/metu-odtuclass-mcp/.venv/Scripts/python.exe",
"args": ["/path/to/metu-odtuclass-mcp/odtuclass_mcp.py"],
"env": {
"ODTUCLASS_BASE_URL": "https://odtuclass.metu.edu.tr"
}
}
}
}Credentials are loaded automatically from .env.local — keep them out of mcp_config.json.
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"odtuclass": {
"command": "/path/to/.venv/Scripts/python.exe",
"args": ["/path/to/metu-odtuclass-mcp/odtuclass_mcp.py"]
}
}
}Selecting a Semester
ODTUClass runs on semester-specific subdomains. The server auto-discovers the active semester by following redirects from odtuclass.metu.edu.tr. To target a specific past semester, set ODTUCLASS_BASE_URL:
Semester | URL |
Current (auto-redirect) |
|
2024–2025 Spring |
|
2024–2025 Fall |
|
2023–2024 Spring |
|
2023–2024 Fall |
|
2023–2024 Summer |
|
Running & Testing
Start the MCP Server
python odtuclass_mcp.pyInteractive Live Test (Multi-Semester)
python test_live.pyPrompts for semester selection, authenticates, and tests course listing, assignment deadlines, announcements, and syllabus fetching interactively.
Visual MCP Inspector (Browser UI)
mcp dev odtuclass_mcp.pyOpens a local browser UI to browse tools and execute them with custom parameters.
Unit Tests
python -m unittest discover tests -vProject Structure
metu-odtuclass-mcp/
├── odtuclass_mcp.py # MCP server definition and tool handlers
├── odtuclass_client.py # ODTUClass Moodle REST API client
│ # · Semester auto-discovery
│ # · Credential-based login
│ # · Secure session token caching
│ # · File download management
├── models.py # Pydantic data models and type definitions
├── requirements.txt # Runtime dependencies
├── pyproject.toml # Package configuration
├── test_live.py # Interactive multi-semester live test script
├── .env.example # Environment variable template (safe to commit)
├── .env.local # Your local credentials (gitignored)
├── .odtuclass_cache/ # Session token cache (gitignored)
├── downloads/ # Downloaded course files (gitignored)
└── tests/
├── __init__.py
└── test_odtuclass.py # Unit and mock test suite (21 tests)Security Notes
File / Folder | Committed to Git? | Purpose |
| ❌ No | Your local credentials and token |
| ✅ Yes | Template showing required variables |
| ❌ No | Cached session token (token only, never password) |
| ❌ No | Downloaded syllabi and course files |
| ✅ Yes (no secrets) | Server path and base URL only |
Never put your METU password directly in
mcp_config.jsonor any committed file. Use.env.localinstead.
License
This project is licensed under the terms of the MIT License.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect your Moodle to AI assistants: courses, content, grading and reports from the chat.
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Create, edit, translate, and export SCORM eLearning modules from a connected AI assistant.
Related MCP Servers
- FlicenseAqualityNot gradedmaintenanceEnables interaction with Canvas LMS courses and assignments directly from your LLM, allowing you to retrieve, search, and summarize course information, check due dates, and access assignment details without leaving your AI assistant.4159
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to securely retrieve academic grades and course information from Sakarya University's SABIS student information system through automated web scraping.2ISC
- FlicenseNot gradedqualityNot gradedmaintenanceEnables University of Toronto students to access academic data from ACORN and Quercus via AI assistants. It provides tools to retrieve course schedules, enrollment details, syllabi, assignments, and announcements.
- FlicenseNot gradedqualityDmaintenanceEnables students to securely access and manage their academic data from Isparta University's OBS system, including grades, transcripts, announcements, and course information through natural language queries.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/erkinemreta1/metu-odtuclass-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server