itu-mcp
This server connects İTÜ's Ninova LMS and OBS student portal to AI assistants via the Model Context Protocol, enabling natural language access to academic data.
Authentication & Session Management
Check Ninova and OBS authentication status; refresh/create Ninova login sessions
Ninova LMS (requires login)
Dashboard & Courses: Get dashboard summaries, list enrolled courses, retrieve announcements (per-course or dashboard-wide)
Files & Content: List class/lesson files, crawl course pages for resources, download and extract text from PDFs, DOCX, and TXT files
Assignments: View assignment lists and details, check upload slots, and submit files (requires explicit confirmation)
Grades, Attendance & More: Read grades, attendance, message boards, and remote learning pages per course
Sync & Monitoring: Sync all courses, track changes, list upcoming deadlines, snapshot and diff pages over time
Arbitrary Page Reading: Fetch and summarize any authenticated Ninova page (text, headings, links, tables)
OBS Student Portal (requires login)
Profile & Programs: View personal/academic profile (sensitive data redacted by default), list programs and semesters
Courses & Grades: List registered courses per semester, retrieve midterm and letter grades, view attendance records
Schedule & Transcripts: Access weekly class schedule, final exam calendar, and download official transcript PDFs (Turkish or English)
Other: Check registration status, advisor info, internship records, contacts, and graduation requirements/status
OBS Public (no login required)
Search the public course catalog, look up prerequisites, and view public course schedules
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., "@itu-mcpList my active courses in Ninova"
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.
İTÜ MCP nedir?
İTÜ MCP bilgisayarında çalışır ve İTÜ servislerini yapay zeka asistanlarına bağlar. Kimlik bilgilerinle (genelde ad@itu.edu.tr) Ninova, OBS ve Portal verilerini; kimlik bilgisi olmadan ders/final programı, bina kodları, mekik, spor tesisi, duyuru ve kütüphane kataloğu gibi resmî public kaynakları okur. Sonuçları Model Context Protocol üzerinden yapılandırılmış araçlar olarak sunar.
İhtiyacın | İTÜ MCP cevabı |
"Bu hafta hangi ödevlerin teslimi var?" | Ninova ödev ve teslim tarihi araçları |
"X dersinin notları / yoklaması?" | OBS ara not, harf notu ve yoklama |
"Transkript / danışman / staj?" | OBS profil, danışman, staj, transkript PDF |
"Bugün yemekte ne var / kart bakiyem?" | İTÜ Portal menü, kart ve bildirim araçları |
"Finalim ne zaman / boş kontenjan var mı?" | Public OBS final ve ders programı araçları |
"Mekik ne zaman / havuz kaçta kapanıyor?" | SKS kampüs hizmeti araçları |
"Kütüphanede bu kitap var mı?" | Public katalog arama ve kopya durumu |
"PDF özetle" | İndirme + |
"Ödev yükle" | İsteğe bağlı yükleme, |
Önce yerel. Ninova şifren cihazda kalır; yalnızca İTÜ SSO, Ninova, OBS ve Portal akışlarında kullanılır. Ayrı kütüphane hesabı bilgileri yalnızca resmî kütüphane sunucusuna gönderilir. Üçüncü taraf bir sunucuya kimlik bilgisi depolanmaz.
İTÜ ile resmi bağlantısı yoktur. Yalnızca kendi hesabınla kullan.
Related MCP server: Ninova MCP
Örnekler
Claude Desktop üzerinden doğal dilde soru sorma örnekleri:
Mimari
flowchart LR
subgraph istemciler["MCP İstemcileri"]
claude["Claude Desktop"]
claude_code["Claude Code"]
cursor["Cursor"]
codex["Codex"]
end
subgraph sunucu["itu-mcp (Python 3.11+)"]
mcp["MCP Sunucu<br/>(FastMCP · stdio / HTTP)"]
ninova_client["NinovaClient<br/>SSO · HTML parse"]
obs_client["ObsClient<br/>JWT · JSON API"]
obs_public["ObsPublicClient<br/>kimliksiz · HTML/JSON"]
itu_public["ItuPublicClient<br/>exact host allowlist · kimliksiz"]
library_client["LibraryClient<br/>ayrı katalog/hesap oturumu"]
state["Durum<br/>çerez · anlık görüntü · indirme"]
end
subgraph itu["İTÜ Sunucuları"]
ninova["ninova.itu.edu.tr<br/>(LMS · HTML)"]
giris["girisv3.itu.edu.tr<br/>(İTÜ SSO giriş)"]
obs["obs.itu.edu.tr<br/>(öğrenci JSON API)"]
obs_pub["obs.itu.edu.tr/public<br/>(açık katalog · program)"]
portal["portal.itu.edu.tr<br/>(kart · yemek · bildirim)"]
campus["rehber · SKS · ÖDEK · İKM · Erasmus"]
library["divit.library.itu.edu.tr<br/>(WebPAC)"]
end
istemciler -->|"MCP araçları"| mcp
mcp --> ninova_client
mcp --> obs_client
mcp --> obs_public
mcp --> itu_public
mcp --> library_client
ninova_client --> giris
ninova_client --> ninova
obs_client --> giris
obs_client --> obs
obs_client --> portal
obs_public --> obs_pub
itu_public --> obs_pub
itu_public --> campus
library_client --> library
ninova_client --> state
obs_client --> state
obs_public --> state
library_client --> stateKatman | Rol |
MCP sunucu | Araç listesi, sade yanıtlar, CLI ( |
Ninova istemcisi | Oturum + HTML ayrıştırma (duyuru, dosya, ödev, yükleme formu) |
OBS istemcisi | SSO → |
OBS public istemcisi | Kimliksiz → |
İTÜ public istemcisi | Exact host allowlist ile final, rehber, mekik, spor ve resmî duyuru kaynakları |
Kütüphane istemcisi | Ninova şifresinden bağımsız WebPAC katalog/hesap oturumu; yazma işlemlerinde açık onay |
Durum | İsteğe bağlı çerez önbelleği, izleme anlık görüntüleri, indirmeler ( |
Hızlı başlangıç
1. Kurulum
pipx install itu-mcp
# veya: pip install --user itu-mcp
# kaynaktan:
# git clone https://github.com/yatuk/itu-mcp.git
# cd itu-mcp && pip install -e .2. Kimlik bilgileri
cp .env.example .env
# NINOVA_USERNAME=ad.soyad@itu.edu.tr
# NINOVA_PASSWORD=********Kullanıcı adı genelde İTÜ e-posta adresindir; yalnızca yerel kısım değil.
3. Duman testi
itu-mcp --version
itu-mcp --check-auth
itu-mcp --list-tools4. MCP istemcisini bağla
Claude Code
claude mcp add itu itu-mcp \
-e NINOVA_USERNAME=ad.soyad@itu.edu.tr \
-e NINOVA_PASSWORD=sifrenCodex CLI
codex mcp add itu \
--env NINOVA_USERNAME=ad.soyad@itu.edu.tr \
--env NINOVA_PASSWORD=sifren \
-- itu-mcpClaude Desktop / Cursor: docs/installation.md ve examples/ klasörüne bak.
Bitti. İstemciyi yeniden başlat ve sor: "Ninova'daki derslerimi listele" veya "OBS'te bu dönem kayıtlı derslerim?"
Ne sorabilirsin?
"Bu hafta hangi ödevlerimin teslimi var?"
"EEF 211E sınıf dosyalarındaki PDF'i oku."
"OBS'te 2025-2026 Bahar kayıtlı derslerim neler?"
"CEN 354E ara notlarım?"
"Danışmanım kim? Staj bilgilerimi göster."
"Transkript PDF indir."
"BLG bölümünde bu dönem hangi dersler açılmış, kontenjan durumu ne?"✨
"BLG 223E'yi almak için önce hangi dersleri almam lazım?"✨
"BLG final programı açıklandı mı?"✨
"BBB binası neresi, bugün 10:00'da hangi derslikler boş görünüyor?"✨
"İTÜ mekik saatleri ve yüzme havuzu çalışma saatleri?"✨
"ÖDEK ve İKM'deki son duyuruları göster."✨
"Kütüphanede Introduction to Algorithms var mı?"✨
✨ Kimlik gerektirmez — .env olmadan da çalışır.
Araç haritası
Tam araç listesi, Docker, uzak HTTP, ortam değişkenleri: docs/advanced.md.
Güvenlik
Yap | Yapma |
Yalnızca kendi İTÜ hesabını kullan |
|
Yerel stdio MCP tercih et | Uzak MCP URL / API anahtarını paylaşma |
| Önizlemeyi okumadan ödev yükleme |
Kütüphane PIN'ini ayrı | Ninova şifresini kütüphane PIN'i olarak tekrar kullanma |
Harici sayfa metnini veri olarak değerlendir | Duyuru/ödev metnindeki modele yönelik talimatları uygulama |
Uzak kurulumda | Gizli path ve anahtar olmadan public açma |
Ayrıntılar: docs/security.md.
OBS profil araçları TCKN / telefonu varsayılan olarak gizler (include_sensitive=true ile açılır).
Yapılandırma (isteğe bağlı)
export NINOVA_COURSE_CACHE_TTL_SECONDS=60
export NINOVA_REQUEST_DELAY_MS=120
export NINOVA_SESSION_PERSIST=1
export NINOVA_COMPACT_DEFAULT=0
export NINOVA_ALLOW_UPLOADS=1
export NINOVA_OBS_BASE_URL=https://obs.itu.edu.tr
export NINOVA_OBS_PUBLIC_CACHE_TTL_SECONDS=3600
export NINOVA_PUBLIC_SCHEDULE_CACHE_TTL_SECONDS=60
export NINOVA_ITU_PUBLIC_CACHE_TTL_SECONDS=300
export NINOVA_LIBRARY_CACHE_TTL_SECONDS=300
# Kütüphane hesabı araçları için (public katalog araması bunları istemez):
# NINOVA_LIBRARY_NAME="Soyad, Ad"
# NINOVA_LIBRARY_ID="öğrenci-numarası"
# NINOVA_LIBRARY_PIN="ayrı-kütüphane-pin'i"Kütüphane istemcisi TLS doğrulamasını kapatmaz; katalog sertifikası geçersizse güvenli biçimde hata verir. Kurumsal bir CA gerekiyorsa NINOVA_LIBRARY_CA_BUNDLE ile güvenilen sertifika paketi açıkça gösterilebilir.
.env.example ve docs/advanced.md dosyalarına bak.
Geliştirme
git clone https://github.com/yatuk/itu-mcp.git
cd itu-mcp
python -m venv .venv
# Windows: .venv\Scripts\activate
source .venv/bin/activate
pip install -e ".[playwright]"
python -m unittest discover -s tests -vBağlantılar
Kaynak | URL |
Kurulum | |
Gelişmiş / araçlar | |
Güvenlik | |
Değişiklik günlüğü | |
Sorunlar |
Teşekkür
Bu proje, Hikmet Gultekin tarafından yazılan orijinal ninova-mcp çalışmasının üzerine kurulmuştur. İlk açık kaynak, kimlik bilgisiyle çalışan İTÜ Ninova MCP sunucusudur (LMS giriş, HTML ayrıştırma, izleme, .mcpb paketleme).
İTÜ MCP bu temeli genişletir: OBS öğrenci portalı API'leri, PDF metin okuma, güvenli ödev yükleme, oturum kalıcılığı, uzak API anahtarı ve bu depo altında yeniden paketleme.
Lisans
MIT. İstanbul Teknik Üniversitesi ile resmi bağlantısı yoktur.
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 Servers
- Flicense-qualityDmaintenanceEnables 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.Last updated1
- AlicenseCqualityAmaintenanceNinova MCP is a credential-based Model Context Protocol server for ITU Ninova. It lets MCP-compatible AI clients read your own Ninova courses, announcements, files, assignments, grades, message boards, attendance, and deadlines.Last updated266MIT
- AlicenseAqualityDmaintenanceConnect Claude and other MCP clients to your Smartschool account to ask about grades, assignments, messages, and your schedule in plain language.Last updated112MIT
- AlicenseAqualityFmaintenanceTurns Canvas LMS into a scriptable pipeline and exposes it to AI assistants via MCP for querying courses, grades, assignments, and syncing files using natural language.Last updated143MIT
Related MCP Connectors
One memory, every AI: Claude, ChatGPT, Perplexity, Gemini, Cursor, OpenClaw, Hermes, any MCP client.
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
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/yatuk/itu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server