iu-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., "@iu-mcpgüz finali ne zaman, kaç gün kaldı?"
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.
iu-mcp
Resmî olmayan, açık kaynaklı bir Model Context Protocol (MCP) sunucusu. İstanbul Üniversitesi öğrencileri Claude'a okul hakkında soru sorar; cevaplar üniversitenin kendi herkese açık sayfalarından gelir ve her cevapta kaynak bağlantısı vardır.
İstanbul Üniversitesi ile bağlantısı yoktur. Bağımsız bir öğrenci projesidir; üniversite tarafından onaylanmamış, işletilmemiştir ve üniversite logosu kullanmaz. Önemli tarihleri her cevaptaki resmî bağlantıdan doğrula.
Türkçe · English
Ne yapar
Sekiz araç. Claude soruna göre doğru olanı kendisi seçer.
Araç | Ne cevaplar | Kaynak (herkese açık, giriş yok) |
| Dönem başı/sonu, final ve bütünleme haftaları, ders ekleme-bırakma, bir sonraki önemli tarihe kaç gün kaldığı | 2026-2027 resmî önlisans/lisans takvim PDF'i, ogrenci.istanbul.edu.tr |
| Günün (ya da 7 güne kadar) kahvaltı, öğle, akşam ve vegan menüsü | |
| 9 fakültenin öğrenci duyuruları, duyurular, haberler, etkinlikler (varsayılan BBTF) | fakülte siteleri |
| Güncel dönemin program ve sınıf bazında ders programı bağlantıları, fakültenin duyurduğu önemli notlar (hangi dersler AKSİS yerine web programına göre takip edilir) | fakülte sitesi |
| Staj kuralları, SSS, Erasmus anlaşmaları, değişim programları… fakülte sitesindeki bilgi sayfaları. Konu vermezsen mevcut sayfa listesini döner | fakülte siteleri (9 fakülte) |
| Ders kodu/adıyla AKTS, öğretim üyesi, amaç, haftalık konular, not dağılımı | ebs.istanbul.edu.tr (varsayılan: Bilgisayar Mühendisliği) |
| Hangi sınıfta hangi dersler, AKTS toplamı | EBS |
| Harf notlarından dönem ve genel not ortalaması (AKTS ağırlıklı, özel ölçek verilebilir). Tamamen çevrimdışı | yok |
Ayrıca haftalik_ozet prompt'u: tek tıkla haftalık özet (yaklaşan tarihler, duyurular, bugünün menüsü).
Bilerek yok: giriş isteyen hiçbir sistem (OBS, AKSİS). Sunucu öğrenci kimlik bilgisi istemez ve alamaz.
Related MCP server: School MCP
Nasıl çalışır
Sunucu bilgisayarında yerel çalışır (stdio). Claude bir araç çağırır, sunucu ilgili herkese açık sayfayı okur, ayrıştırır ve düzenli bir sonuç döner.
Kurulum
Python 3.10+ gerekir.
git clone https://github.com/haliksuveyt/iu-mcp.git
cd iu-mcp
python -m venv .venv
.venv/Scripts/pip install -e . # Windows; macOS/Linux: .venv/bin/pip install -e .Claude'a bağlama
Claude Code (bu klasörden proje kapsamında; .mcp.json hazır) ya da genel:
claude mcp add iu-mcp -- /tam/yol/iu-mcp/.venv/Scripts/python.exe -m iu_mcp.serverClaude Desktop: claude_desktop_config.json dosyasına ekle (Ayarlar → Geliştirici → Yapılandırmayı düzenle), sonra uygulamayı yeniden başlat:
{
"mcpServers": {
"iu-mcp": {
"command": "C:\\yol\\iu-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "iu_mcp.server"]
}
}
}Windows'ta python.exe yolunu tam yaz.
Örnek sorular
"Güz finaline kaç gün kaldı, hangi tarihler?"
"Yarın öğle yemekhanede ne var? Vegan seçenek?"
"Fakültenin bu haftaki öğrenci duyuruları neler?"
"CMPE3111 izlencesi: AKTS, haftalık konular, not dağılımı."
"Bahar döneminde ders ekleme-bırakma son günü ne zaman?"
"Bilgisayar Mühendisliği 2. sınıf ders programı nerede?"
"Zorunlu staj kuralları neler: kaç gün, AKTS şartı, hangi formlar?"
"6, 4 ve 5 AKTS'lik derslerden AA, BB, CC aldım; 90 AKTS'de GNO'm 2,40'tı. Şimdi kaç oldu?"
Gerçek bir oturum kaydı: docs/ornek-oturum.md.
Kurallar ve sınırlar
Yalnızca herkese açık sayfalar ve o sayfaların kendi kullandığı herkese açık JSON uç noktaları okunur.
robots.txt'e uyulur; sunucunun kendiUser-Agent'ı vardır; aynı siteye 0,5 saniyede en fazla 1 istek gider.Yanıtlar bellekte önbelleğe alınır: takvim ve izlence 24 saat, menü 6 saat, fakülte sayfaları 1 saat, duyurular 15 dakika.
Site kapalıysa araç tahmin yürütmek yerine açık bir hata mesajı döner.
Takvim yalnızca 2026-2027 önlisans/lisans içindir (Tıp, Diş, Hukuk, Eczacılık, AUZEF, Konservatuvar hariç). PDF metin olarak okunur; etiketinden kopuk tarih satırları tahmin edilmeden atlanır. Ara sınav tarihlerini üniversite değil birimler belirler, takvimde yalnız ilan son günü vardır. Yeni yıl PDF'i çıkınca
IU_MCP_TAKVIM_PDFile değiştirilebilir.Ders programı tabloları fakültenin kendi paylaşım bağlantılarıdır; araç bağlantıları ve notları getirir, tablo içeriğini okumaz. Şu an BBTF sayfa düzenini tanır.
Duyurular varsayılan olarak BBTF'den gelir;
fakulteile iktisat, edebiyat, hukuk, fen, işletme, siyasal, iletişim, mimarlık da seçilir. Hepsi aynı CMS'i kullanır; yeni fakülte eklemekFACULTIESiçinde tek satırdır.GNO: varsayılan ölçek 4'lük yaygın tablodur (AA 4,0 … FF 0). Yönetmeliğindeki katsayılar farklıysa
olcekile ver. Resmî ortalama her zaman OBS'dedir.Yemekhane menüsü SKS'nin yayımladığıdır; hafta sonu ve tatilde sık sık boştur. Besin değeri yok.
Site tasarımı değişirse bir ayrıştırıcı bozulabilir; testler bunu yakalar.
Geliştirme
.venv/Scripts/pip install -e ".[dev]"
.venv/Scripts/python -m pytest # kayıtlı yanıtlar + canlı duman testleri
IU_MCP_OFFLINE=1 .venv/Scripts/python -m pytest # yalnız çevrimdışıAyrıştırıcılar, kaydedilmiş gerçek yanıtlar (tests/fixtures/) üzerinde saf fonksiyonlardır. Ayrı bir test sunucuyu stdio üzerinden resmî MCP istemcisiyle başlatıp araç çağırır. Resmî Python MCP SDK (mcp) ile yazıldı; PDF ve HTML ayrıştırma için Python kütüphaneleri çok uygun olduğu için TypeScript yerine seçildi.
Yol haritası
Diğer fakültelerin ders programı sayfa düzenleri
Yeni yıl takviminde otomatik PDF bulma
Kütüphane çalışma saatleri ve duyuruları
Burs ve Erasmus başvuru dönemleri için özet
Yazar
Abdullah Halik Suveyt, Bilgisayar Mühendisliği, İstanbul Üniversitesi.
Lisans
MIT. Veriler ilgili yayıncılara (İstanbul Üniversitesi birimleri) aittir; bu proje yalnızca herkese açık bilgiyi çekip düzenler.
Available Tools
8 toolsakademik_takvimA
İÜ önlisans/lisans 2026-2027 akademik takvimi (resmî PDF).
'ozet' alanı güz ve bahar için ders başlangıç/bitiş, final ve bütünleme tarihlerini verir. Ara sınav tarihlerini üniversite değil birimler belirler; takvimde yalnızca ilan için son gün bulunur. Not: takvimde 'bitirme sınavı' = yarıyıl sonu (final) sınavıdır.
Args: sorgu: Etkinlik adında geçen sözcük (örn. "ders ekleme", "bütünleme"). donem: "guz" ya da "bahar"; boşsa ikisi de. kategori: Etkinlik grubuna göre filtre. yaklasan: True ise yalnızca bugünden sonraki tarihler, yakın olandan başlayarak. sinir: En fazla kaç satır döneceği.
| Name | Required | Description | Default |
|---|---|---|---|
| donem | No | ||
| sinir | No | ||
| sorgu | No | ||
| kategori | No | ||
| yaklasan | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose the important behavioral traits: the data comes from an official PDF and has known gaps (midterm dates absent), plus a terminology mapping ('bitirme sınavı' = final). It omits how results are shaped or whether failures/parse errors are surfaced, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first line, data caveats follow immediately, and the Args block is scannable one-liners. No sentence is padding — even the 'ozet' note earns its place since there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter read tool with zero annotation coverage and no output schema, the description covers purpose, data limitations and every parameter's meaning. It falls short of complete by not describing the returned event record shape beyond the 'ozet' summary field and by leaving kategori's allowed values unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: sorgu (substring of event name), donem ("guz"/"bahar", empty = both), kategori (event group filter), yaklasan (future dates only, nearest first) and sinir (max rows) are all explained. The one gap is that the seven kategori enum values present in the schema are not enumerated or explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact resource and scope: the İÜ associate/undergraduate 2026-2027 academic calendar, sourced from the official PDF. Combined with the argument list it is clear this queries calendar events, though no explicit verb ('sorgula/listele') is used and no sibling tool is named for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a genuine usage caveat — midterm exam dates are set by units, so the calendar only holds the announcement deadline — which implicitly tells the agent when this tool will not answer a question. However, there is no explicit routing to or away from siblings such as duyurular_listesi or ders_programi.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ders_bilgisiA
EBS ders izlencesi: kod, AKTS, hoca, amaç, haftalık konular, değerlendirme.
Args: ders: Ders kodu (örn. "CMPE2105") ya da ad parçası (örn. "data structures"). program: Program adı parçası (örn. "yapay zeka"); boşsa Bilgisayar Mühendisliği (İngilizce, örgün öğretim).
| Name | Required | Description | Default |
|---|---|---|---|
| ders | Yes | ||
| program | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only lookup and lists the kinds of information returned, plus the default program behavior, but it does not explicitly state that the operation is read-only, whether authentication is required, or how multiple matches behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: it states what the tool returns and then documents the arguments. Every sentence carries useful information, with no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter lookup with no annotations and no output schema, the description provides enough context to call the tool correctly, including argument semantics, the default program, and the content areas returned. Minor gaps remain around result shape and behavior when multiple courses match.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: both parameters are explained with examples, including that ders accepts a course code or name substring and that program accepts a program-name substring with a default fallback. It stops short of specifying matching sensitivity or handling of multiple matches.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies a specific resource and operation: retrieving an EBS course syllabus, with the returned content listed as code, ECTS, instructor, purpose, weekly topics, and assessment. It is clear what the tool does, but it does not explicitly distinguish itself from siblings such as ders_programi or mufredat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the purpose and by the parameter examples, especially the note that program defaults to Computer Engineering when empty. However, there is no explicit guidance about when to choose this tool over ders_programi or mufredat, and no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ders_programiA
Fakültenin güncel ders programı: program ve sınıf bazında tablo bağlantıları ile önemli notlar.
Program tabloları fakültenin kendi paylaşımlarıdır; bu araç yalnız bağlantıları ve duyurulan notları (örn. AKSİS yerine web sayfasındaki programa uyulacak dersler) getirir.
Args: fakulte: Boşsa bilgisayar (şu an yalnız BBTF sayfa düzeni desteklenir). program: Süzmek için program adı parçası (örn. "yapay zeka").
| Name | Required | Description | Default |
|---|---|---|---|
| fakulte | No | ||
| program | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does disclose meaningful behavior: it returns only links and announced notes rather than schedule data itself, and only the BBTF page layout is currently supported. It says nothing about failure behavior when an unsupported faculty is passed, or about the shape/size of the returned links.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core statement, followed by an important caveat, then args. Roughly three dense sentences/sections with little waste; the prose caveat sentence is slightly long but each clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-optional-parameter read tool with no output schema and no annotations, the description covers purpose, return nature (links + notes), the single-dependency limitation, and both parameters. What remains missing (link format, empty-result behavior) is minor at this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: fakulte is documented as defaulting to bilgisayar with only BBTF layout supported, and program is documented as a name-substring filter with a concrete example ('yapay zeka'). Minor gap: no guidance on matching case or partial-word behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the faculty's current course schedule) and what it returns: program/class-based table links plus important notes. It also clarifies the tool is only a pointer to externally hosted tables, which sharpens its identity. It does not, however, explicitly distinguish itself from close siblings like ders_bilgisi or mufredat.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the args explanation (empty fakulte defaults to bilgisayar/BBTF, program is a filter substring with an example like 'yapay zeka'). There is no explicit statement of when to prefer this over ders_bilgisi, mufredat, or akademik_takvim, so the agent must infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duyurular_listesiA
İÜ fakültelerinin duyuru, haber ve etkinlikleri (varsayılan: Bilgisayar ve Bilişim Teknolojileri Fakültesi).
Args: tur: ogrenci (öğrenci duyuruları: ders programı, KZÖ, kulüpler…), duyuru (fakülte duyuruları), haber ya da etkinlik. adet: Kaç kayıt (1-30). ara: Başlık veya özette geçen sözcükle filtrele. fakulte: bilgisayar, iktisat, edebiyat, hukuk, fen, isletme, siyasal, iletisim, mimarlik (ad parçası da olur). Boşsa bilgisayar.
| Name | Required | Description | Default |
|---|---|---|---|
| ara | No | ||
| tur | No | ogrenci | |
| adet | No | ||
| fakulte | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the load. It usefully states defaults ('bilgisayar' when fakulte is empty, student type by default) and a range not in the schema (adet 1–100), but it never says whether the call is read-only, what auth/rate conditions apply, or what an item contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in one sentence, followed by a compact Args block where each line adds distinct value. The docstring-style layout is slightly verbose but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 4-parameter read tool with no annotations and no output schema, the description supplies defaults, ranges, enum semantics, and filter behavior. The only gap is that the shape of returned records (fields, dates, links) is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description carries parameter meaning entirely — and does it well: it explains each 'tur' enum member, states the 'adet' range, defines 'ara' as matching title or özet, and clarifies that 'fakulte' accepts a name fragment and falls back to computer science when empty. This is meaningfully more than the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line names a specific resource (İÜ faculty announcements, news, and events) and even states the default scope (Computer and Informatics Technologies Faculty). The verb is implicit in the tool name (list) rather than the description, and no sibling such as fakulte_pagesi is named, so it is clear but not disambiguated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description defines the categories available via 'tur' (student announcements, faculty announcements, news, events), which implies when each is appropriate, but it never states when to choose this tool over siblings like fakulte_bilgisi or akademik_takvim. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fakulte_sayfasiA
Fakülte sitesindeki bilgi sayfaları: staj kuralları, SSS, Erasmus, değişim programları…
Args: konu: Menüde aranacak sözcük (örn. "staj", "erasmus", "sık sorulan"). Boşsa fakültenin tüm sayfa listesi döner; neyin sorulabileceğini görmek için önce bunu kullan. fakulte: bilgisayar, iktisat, edebiyat, hukuk, fen, isletme, siyasal, iletisim, mimarlik. Boşsa bilgisayar.
| Name | Required | Description | Default |
|---|---|---|---|
| konu | No | ||
| fakulte | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does disclose the two fallback behaviors (empty konu yields the whole page list, empty fakulte defaults to bilgisayar) — information not present in the schema, whose defaults are just null. However, it never clarifies whether matching pages are returned as a list of links/titles or as page content, and says nothing about result size or format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short blocks: a purpose line followed by a clearly labeled Args section, with the discovery hint placed where it matters. The trailing ellipsis in the opening line is slightly loose but costs nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, zero-required lookup with no output schema and no annotations, an agent has everything needed: what the tool covers, how to discover available topics, and the faculty default. No structural gap remains beyond fine-grained return-format detail, which is minor for this tool type.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: konu is explained as a menu search term with example values, and fakulte is given as a concrete enumerated list plus its default. The remaining gap is that the enum is prose-only rather than enforced, and matching semantics (exact vs. substring) for konu are unstated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (faculty site information pages) and enumerates representative content types (internship rules, FAQ, Erasmus, exchange programs), which clearly separates it from topic-specific siblings like yemekhane_menusu or akademik_takvim. The retrieval verb itself is only implied by the noun phrase, so it falls short of the explicit verb+resource pairing a 5 requires.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete operating guidance: calling with an empty konu returns the full page list and is recommended first to discover what can be asked. That is a clear usage context, but no when-not conditions or explicit alternatives among the sibling tools are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gno_hesaplaA
Harf notlarından dönem ortalaması ve (istenirse) yeni genel not ortalaması. Çevrimdışı çalışır.
Ortalama AKTS ağırlıklıdır. Varsayılan ölçek 4'lük yaygın tablodur (AA 4.0 … FF 0); kendi
yönetmeliğindeki katsayılar farklıysa olcek ile ver. Resmî hesap için OBS/transkript geçerlidir.
Args: dersler: [{"ad": "Veri Yapıları", "akts": 6, "not": "BB"}, ...] onceki_akts: Bu dönemden önce tamamlanan toplam AKTS. onceki_gno: Bu dönemden önceki genel not ortalaması. olcek: Örn. {"AA": 4, "BA": 3.5, ...}.
| Name | Required | Description | Default |
|---|---|---|---|
| olcek | No | ||
| dersler | Yes | ||
| onceki_gno | No | ||
| onceki_akts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose real behavior: offline operation, AKTS/ECTS-weighted averaging, the default 4.0 scale (AA 4.0 … FF 0), and that results are advisory rather than official. It omits edge-case behavior (unknown letter grades, rounding, what happens if only one of onceki_akts/onceki_gno is given), which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The output behavior and offline property are front-loaded in the first two lines, then the weighting/scale rules, then a per-argument block. Every sentence carries information an agent needs; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, no-annotation, no-output-schema computation tool, the description covers inputs, the weighting rule, the optional new-GPA output, and the official-vs-advisory caveat. It lacks only numeric precision/rounding details and error behavior for malformed grade values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and `dersler` is an untyped object array, so the description is the only source of truth — and it delivers with concrete examples: [{"ad": "Veri Yapıları", "akts": 6, "not": "BB"}] and {"AA": 4, "BA": 3.5, ...}. It also defines onceki_akts and onceki_gno as prior cumulative credits and GPA, adding meaning the bare schema cannot.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence states a specific verb and resource: computes the semester average from letter grades and, optionally, a new cumulative GPA. None of the sibling tools (yemekhane_menusu, akademik_takvim, ders_bilgisi, mufredat, etc.) do computation, so the tool is easy to tell apart without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says the tool works offline and tells the agent to pass `olcek` when the regulation's coefficients differ from the default 4-point table, plus a clear boundary: 'Resmî hesap için OBS/transkript geçerlidir.' It stops short of an explicit 'use this when…' statement, but the context for use is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mufredatA
Bir programın 2026-27 müfredatı: hangi sınıfta hangi dersler, kaç AKTS.
Args: sinif: 1-4; boşsa hepsi. yariyil: "Güz" ya da "Bahar"; boşsa ikisi de. program: Program adı parçası; boşsa Bilgisayar Mühendisliği (İngilizce).
| Name | Required | Description | Default |
|---|---|---|---|
| sinif | No | ||
| program | No | ||
| yariyil | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose a genuinely useful non-obvious behavior: an unset program silently falls back to Bilgisayar Mühendisliği (İngilizce), and unset filters broaden rather than error. It does not clarify whether the tool is read-only, ordering, or what happens when a program name matches nothing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence states the purpose and return content, followed by a compact Args block with one line per parameter. Every sentence earns its place and no restatement of the schema's type information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter read tool with no annotations and no output schema, the definition covers the parameter semantics and the shape of the return (year, courses, ECTS) reasonably well. It only leaves open edge behavior — no match on program, ordering, or result size — which is minor for a curriculum lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema itself carries only titles and null defaults, so the Args block does all the work. It adds real meaning beyond the schema: sinif is bounded to 1-4 and means 'year', yariyil is constrained to Güz/Bahar and means semester, and program is a substring match with a documented default — none of which appears in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line names a specific resource and scope: a program's 2026-27 curriculum, returning which courses fall in which year and their ECTS. That is far more than a restatement of the name 'mufredat', and the output shape is stated. It stops short of a 5 because it never distinguishes itself from plausible siblings such as ders_bilgisi or ders_programi.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the parameter defaults ('boşsa hepsi', 'boşsa Bilgisayar Mühendisliği (İngilizce)'), which tell the agent what happens when it passes nothing. There is no explicit statement of when to prefer this tool over ders_programi or ders_bilgisi, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
akademik_takvim - First observed
ders_bilgisi - First observed
ders_programi - First observed
duyurular_listesi - First observed
fakulte_sayfasi - First observed
gno_hesapla - First observed
mufredat - First observed
yemekhane_menusu
TDQS
Scored across 8 tools
Most tools target clearly distinct resources (menu, calendar, announcements, faculty pages, GPA). The three course-related tools (ders_bilgisi, mufredat, ders_programi) overlap in topic but their descriptions distinguish syllabus content, curriculum mapping, and timetable links. An agent could still occasionally pick mufredat vs ders_programi for a naive course query.
All eight names are consistent snake_case Turkish noun phrases (yemekhane_menusu, akademik_takvim, duyurular_listesi, ders_bilgisi, mufredat, fakulte_sayfasi, ders_programi, gno_hesapla). No mixing of verb/noun or casing conventions.
Eight tools is well within the sweet spot and each maps to a distinct student-facing information need. Nothing feels padded or missing at this granularity.
The surface covers the core student info lifecycle (menus, calendar, announcements, courses, curriculum, timetable, faculty pages, GPA). Gaps remain: only BBTF faculty is fully supported for some tools, and there is no exam schedule or official grade/OBS lookup. These are workable limitations rather than dead ends.
Maintenance
Related MCP Connectors
Search university course materials, your flashcards, quizzes, streak and quota. All tools read-only.
Calorie tracker app for ChatGPT and Claude: read meals, macros, weight and log meals from chat.
Unofficial NTNU course data: search, timetables, grades, course info, and exam logistics.
JusPronto is case-management software for Brazilian law firms. Its remote MCP server (OAuth 2.1 with PKCE, per-permission scopes, audit log) lets Claude and ChatGPT read the firm's own cases, deadlines, agenda, recent court movements and case files with the page cited. Write actions require the lawyer's approval. Requires a JusPronto account.
Related MCP Servers
- 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
- FlicenseAqualityDmaintenanceEnables natural language queries about grades, GPA, attendance, and schedules by connecting Claude to StudentVue school dashboards. Includes analytical tools for grade simulation, what-if scenarios, and academic performance tracking based on live school data.19-
- 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-
- AlicenseBqualityAmaintenanceUnofficial local MCP server for Istanbul Technical University (İTÜ) students. Reads your own Ninova LMS, OBS and Portal data with your own account: assignments and deadlines, grades and cumulative GPA simulation, schedule and exams, registration, course archive, library and campus services. Read-only by default; the two write tools ask for confirmation.108158 PyPI14MIT