# Reported issues for edumints SCORM MCP

Pod holds 19 of 37 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [edumints SCORM MCP](/mcp/edumints-scorm-mcp).

## Most discussed

### [agent:docs-i18n] Tüm-dil doküman senkronu (EN sha 448f0cb)

Maintainer görevi: yapılan işi kontrol et + 8 dildeki dokümanı EN kaynağına göre SOMUT güncelle.

**Senkron dışı:**  README.tr.md(synced:e0cb4fc2568bdf0234512d68d2327123afefc407) README.es.md(synced:e0cb4fc2568bdf0234512d68d2327123afefc407) README.ru.md(synced:e0cb4fc2568bdf0234512d68d2327123afefc407) README.zh-CN.md(synced:e0cb4fc2568bdf0234512d68d2327123afefc407) README.az.md(synced:e0cb4fc2568bdf0234512d68d2327123afefc407) README.kk.md(synced:e0cb4fc2568bdf0234512d68d2327123afefc407) README.k

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/16) · 2026-06-07 · closed · external user · 2 comments

### Açık kaynak ikon setleri: search_icons + icon_to_asset (vendor'lanmış indeks)

## Boşluk (kod-doğrulamalı)

Görsel bulmak için bugün iki yol var ve ikisi de **ikon/illüstrasyon** için işe yaramıyor:

- **`search_images`** — Openverse / Wikimedia üzerinde CC0/Public-Domain arar. Fotoğraf için iyi; "onay işareti", "uyarı üçgeni", "dişli" gibi arayüz ikonları için sonuçlar tutarsız (farklı stil, farklı çizgi kalınlığı, çoğu raster). Kurs boyunca **tutarlı bir ikon dili** kurmak imkânsız.
- **`svg_to_asset`** — ham SVG'yi asset'e çevirir, ama SVG'yi birinin yazması gerekir. İs

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/152) · 2026-08-29 · open · 1 comment

### matching / sorting: per-item images (image pairing & sequencing)

## What's missing

`matching` and `sorting` currently work on **text only** — `MatchPair` and `SortItem` carry no asset field. There is no way to build an image-pairing or image-sequencing task (match the logo to the company, put the process photos in order), which is a standard interaction in every commercial authoring tool.

`image_compare` exists but is a non-scored content screen, so it does not cover this.

## What to do

Do **not** add a new screen type. The repo deliberately prefers param

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/140) · 2026-08-29 · open · 1 comment

### labeled_diagram display-only callout modu — split-attention exhibit deseninin kalıcı çözümü

## Bağlam — ölçümün gösterdiği desen

Faz 6a düzen/split-attention ölçüm raporu (`docs/research/2026-07-30-layout-split-attention-measurement.md`, private dev repo `kemalyy/scorm-mcp`) 39 görselli ekranı sınıfladı: 6'sı sınıf-b AYRIK (split). Bunların **3'ü aynı desen** — "exhibit okuma-protokolü":

| Kurs | Ekran | Kanıt (rapordan) |
|---|---|---|
| spot-the-phish | `c_email` | 4 maddelik okuma protokolü ("gönderen satırı, ton, butonun gerçek hedefi, ek") e-posta mockup'ının ALTINDA düzyazıda; 

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/126) · 2026-07-30 · closed · 1 comment

### [MCP-2026-07-28] MCP Apps keşfi: kurs player'ını ui:// kaynağı olarak sunma

## Bağlam — spec'te ne değişti
MCP Apps resmî extension oldu (`io.modelcontextprotocol/ui`, SEP-1865; https://modelcontextprotocol.io/extensions/apps/overview): `ui://` şemalı, `text/html;profile=mcp-app` içerikli, host tarafında sandbox iframe'de render edilen UI kaynakları.

## Bizdeki durum
Altyapı büyük ölçüde hazır: `/preview`+`/demo` tek-dosya, kendine-yeterli HTML üretiyor (`server.py:360-380`, asset'ler data-URI `components/renderer.py:232-244`); player LMS'siz çalışıyor (noop API shim `

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/100) · 2026-07-28 · open · 1 comment

### [MCP-2026-07-28] Özel HTTP rotalarının 401 yanıtlarına WWW-Authenticate başlığı

## Bağlam — spec'te ne değişti
Authorization bölümü RS semantiğini sıkılaştırdı (https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization): korumalı kaynak 401'lerinde RFC 9728 metadata'ya işaret eden `WWW-Authenticate` beklenir. MCP endpoint'imizde bunu `RemoteAuthProvider` zaten yapıyor (`auth/oauth.py:10-11,92-98`).

## Bizdeki durum
Özel Starlette rotalarındaki 401'ler çıplak JSON: `server.py:1297, 1321, 1343, 1361, 1385` — `WWW-Authenticate` yok.

## Kabul kriterleri
- 5

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/98) · 2026-07-28 · closed · 1 comment

### [MCP-2026-07-28] Liste araçlarına ttlMs/cacheScope cache metadata

## Bağlam — spec'te ne değişti
SEP-2549: `resultType:"complete"` sonuçlarında `ttlMs` (ms, ≥0) + `cacheScope` (`public`/`private`) — `server/discover`, `tools/list`, `prompts/list`, `resources/list`, `resources/templates/list`, `resources/read` için zorunlu (https://modelcontextprotocol.io/specification/2026-07-28/server/utilities/caching).

## Bizdeki durum
Hiçbir sonuçta cache hint yok. Doğal adaylar: `list_screen_types` (statik `_SCREEN_TYPE_DESC`, `server.py:1202-1233,1257-1267`) ve `list_th

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/96) · 2026-07-28 · closed · 1 comment

### build_package: job_id döndükten sonra durum sorgulayan MCP aracı yok

## Bağlam
Spec'ten bağımsız, MCP 2026-07-28 denetiminin bulduğu bugünkü ürün açığı. `build_package`/`build_from_spec` fast-path 4 sn'i (`BUILD_SYNC_TIMEOUT_SEC`) aşınca `job_id`+`status` dönüyor (`server.py:1033-1035`, `:1148-1150`) ama ajanın işi sorgulayabileceği bir MCP aracı yok — `Packager.get()` mevcut fakat expose edilmemiş (`core/packager.py:91-92`). Tek dolaylı yol: `build_package`'ı yeniden çağırmak (idempotent) veya HTTP `/projects`.

## Kabul kriterleri
- Yeni `build_status(project_i

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/94) · 2026-07-28 · closed · 1 comment

## Most recent

### hotspot: shape="poly" is accepted by the model but never positioned by the runtime

## The bug

`HotspotRegion.shape` accepts three values — `"rect"`, `"circle"`, `"poly"` — but the runtime only positions two of them.

In `components/templates.py`, `bindHotspot`'s `place()` scales region coordinates onto the rendered image:

```js
if(sh==="rect"){ /* left/top/width/height from coords */ }
else if(sh==="circle"){ /* left/top/width/height + border-radius */ }
// no branch for "poly"
```

A `poly` region therefore never receives `left`/`top`/`width`/`height`. The button stays at i

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/153) · 2026-08-29 · open · 0 comments

### Lottie: respect prefers-reduced-motion + make it pausable (a11y limitation #6)

## What's missing

`docs/ACCESSIBILITY-CONFORMANCE.md` §3, **limitation #6**:

> **Lottie animations ignore `prefers-reduced-motion` and cannot be paused** (2.2.2 / 2.3.3). All other animated surfaces in the player degrade under reduced motion; Lottie playback (including looping) does not.

Every other animated surface in the player already respects `prefers-reduced-motion` — Lottie is the single exception. That makes this a consistency fix, not new design work.

## What to do

1. Under `prefers

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/148) · 2026-08-29 · open · 0 comments

### drag_drop klavye / seçim alternatifi — a11y kısıt #3

## Boşluk (kod-doğrulamalı)

`docs/ACCESSIBILITY-CONFORMANCE.md` §3 **kısıt #3**:

> **`drag_drop` is pointer-only.** Mouse drag (HTML5 DnD) and a touch fallback exist; there is no keyboard or select-based alternative in this screen type (fails 2.1.1 and 2.5.7 Dragging Movements). The documented workaround is authoring the same task as `matching` (select-based) — `docs/GAME-A11Y.md` requires this pattern for game mechanics, but the standalone `drag_drop` screen itself does not enforce or provide

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/146) · 2026-08-29 · open · 0 comments

### WebVTT altyazı hattı (<track>) — a11y kısıt #1 / #2

## Boşluk (kod-doğrulamalı)

`docs/ACCESSIBILITY-CONFORMANCE.md` §3 **kısıt #1**:

> **No synchronized captions or transcripts for video** (WCAG 1.2.2 fail for videos with audio). `_r_video` emits a `<video controls>` without any `<track>` element; there is no WebVTT pipeline.

Repo genelinde WebVTT / `<track` karşılığı **yok**. Mevcut hafifletmeler (statik `caption` figcaption'ı ve `narration_text` bloğu) zaman-senkron değil.

**kısıt #2** de aynı hatta: yazar yalnız seslendirme asset'i verdiys

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/145) · 2026-08-29 · open · 0 comments

### Deneme politikası: limit, retry_wrong, lock, cooldown

## Boşluk (kod-doğrulamalı)

Deneme sayısı, tekrar hakkı ve "geçemezse ne olacak" modellenmiyor. `Tracking` yalnız `completion_rule`, `passing_score`, `score_scaling` taşıyor.

Bugün bir öğrenci sınavı ya sınırsız tekrarlar ya hiç tekrarlayamaz — arada politika yok. Kurumsal uyum eğitimlerinde (deneme limiti + bekleme süresi) bu bir zorunluluk.

## Öneri

```python
class AttemptPolicy(BaseModel):
    max: int | None = None   # None = sınırsız (bugünkü davranış)
    on_fail: Literal["retry_all", 

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/143) · 2026-08-29 · open · 0 comments

### exploration: add input_kind="slider" (numeric / scale commitment)

## What's missing

`ExplorationScreen.input_kind` supports `text`, `choice` and `prediction`. There is no **numeric / scale** input — a learner cannot commit to "how many percent?", a Likert rating, or a slider estimate.

This matters because `exploration` exists precisely to capture a learner's own input and **replay it later** (`data-exploration-ref`), and numeric estimates are one of the most common commit-then-see patterns in inquiry-based teaching.

## What to do

Add a fourth `input_kind`:

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/141) · 2026-08-29 · open · 0 comments

### Etkileşimli video: zaman damgalı cue'lar (soru / not / dallanma)

## Boşluk (kod-doğrulamalı)

`VideoScreen` bugün yalnız `video_asset_id | video_url`, `caption`, `poster_asset_id`, `require_complete` taşıyor. Video **tamamen pasif**: zaman damgasına bağlı soru, duraklama noktası ve dallanma yok.

Bu, ticari araçların (Storyline, H5P Interactive Video) en çok kullanılan etkileşimi ve bizde karşılığı olmayan en yüksek değerli tek madde.

## Öneri

```python
class VideoCue(BaseModel):
    at_sec: float
    kind: Literal["question", "note", "branch"]
    pause: b

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/139) · 2026-08-29 · open · 0 comments

### E2 — Paket uygunluk denetleyicisi: conflicts_with ve scoring_allowed_from ihlalleri

## Bağlam
E1 (#110) kanıt varlığını denetler; bu konu kursun BEYAN ETTİĞİ paketin sözleşmesine uygunluğunu denetler. Paket ön-madde şeması skill tarafında tanımlandı: kemalyy/edumints-scorm-skill#14 (evidence_phase, scoring_allowed_from, conflicts_with).

## Kapsam
Yeni denetimler:
- FAIL: conflicts_with ihlali — çakışan paket/kaplama kombinasyonu aynı kursta beyan edilmiş
- FAIL: scoring_allowed_from'dan ÖNCE gelen skorlanan ekran
- Paket fazları ile kurs akışındaki ekran tiplerinin eşleşme rap

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/111) · 2026-07-29 · closed · 0 comments

### E1 — lint_course genişletmesi: kanıt bağlama denetimleri

## Bağlam
Skill tarafındaki 2026-07-29 denetimi: 28 ekran tipinden 13'ü soru soruyor ama 0 yazarlı-gösterim primitifi var (video = dış varlık kabı, simulation = 1. adımdan pratik); concept-lesson.json saf iddia+quiz üretiyor; amiral gemisi örneğinde q1 cevabı yazarlı metinde öğretilmiyor. Mevcut lint görsel yoksulluğu ölçüyor ama kanıt yokluğunu ölçmüyor.

## Kapsam
lint_course'a yeni denetimler:
- FAIL: skorlanan soru, kurs-içi bir kanıt kaynağına bağlanmamış
- FAIL: beyan edilen paketin eviden

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/110) · 2026-07-29 · closed · 0 comments

### [MCP-2026-07-28] Tracking: 2026-07-28 spec uyum migrasyonu

MCP spesifikasyonunun 2026-07-28 revizyonuna ([changelog](https://modelcontextprotocol.io/specification/2026-07-28/changelog)) uyum migrasyonunun izleme issue'su. Denetim özeti: handshake/oturum bağımlılığımız sıfır, Roots/Sampling/Logging kullanımımız sıfır (**deprecation penceresi bizim için boş — ayrı milestone açılmadı**), OAuth katmanı büyük ölçüde uyumlu. Ana tetikleyici: **FastMCP 4 stable release** (şu an alpha; python-sdk v2 çıktı, v1.x bakım modunda; 2025-era protokol 12 ay destekli — 

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/101) · 2026-07-28 · open · 0 comments

### [MCP-2026-07-28] CIMD değerlendirmesi: paylaşılan public Client ID yerine Client ID Metadata Document

## Bağlam — spec'te ne değişti
DCR (RFC 7591) deprecated → Client ID Metadata Documents (AS+client SHOULD; https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization/client-registration; deprecated registry: en erken kaldırma 2027-07-28+).

## Bizdeki durum
IdP'mizde (Logto) DCR yok; Claude connector'ı için portalda gömülü **paylaşılan public SPA Client ID** kullanıyoruz — CIMD bu geçici çözümün spec'teki resmî karşılığı olabilir: client kimliği URL'deki metadata dokümanından t

[Read the thread](https://github.com/kemalyy/edumints-scorm-mcp/issues/99) · 2026-07-28 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/kemalyy/edumints-scorm-mcp/issues).
