Skip to content
Agentmart
Submit a tool

edumints SCORM MCP

Compiles structured specs into SCORM 1.2/2004 e-learning packages.

Connector by kemalyy · GitHub account verified by the MCP Registry

IndexedMITRemote (HTTP)★ 9
Write a review

Install

Works with Claude Code, VS Code, Cursor, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install connector/kemalyy-edumints-scorm-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Remote endpoint

  • https://scorm.edumints.com/mcp Remote (HTTP)

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Compiles structured specs into SCORM 1.2/2004 e-learning packages. 47 tools, quality gate, no LLM.

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
11 read · 18 write · 3 delete · 15 not yet classified
Secrets
None asked for
Install scripts
Nothing to install (hosted)
Runs as
Hosted (remote endpoint)

Tools by what they do 47

Read from the source code; the running server may list different tools.

Read 11 · Look things up without changing anything.

  • get_guide
  • lint_course
  • list_compositions
  • list_demos
  • list_feedback
  • list_screen_types
  • list_screens
  • list_themes
  • preview
  • search_images
  • validate_package

Write 18 · Create, change, send or run things.

  • add_asset
  • add_screen
  • build_from_spec
  • build_package
  • build_status
  • create_project
  • create_scenario
  • fill_media_slot
  • make_video_from_image_audio
  • publish_demo
  • resolve_feedback
  • scenario_upsert_node
Show 6 more tools
  • scenario_upsert_page
  • set_composition
  • set_screen_composition
  • set_theme
  • set_tracking
  • update_screen

Delete 3 · Delete, drop, revoke or wipe things.

  • remove_screen
  • scenario_delete_node
  • scenario_delete_page

Not yet classified 15 · We could not tell from the name and description.

  • export_qti
  • html_to_asset
  • match_media_manifest
  • normalize_audio_asset
  • render_motion_video
  • render_screen_video
  • reorder_screens
  • scenario_compile
  • scenario_gaps
  • scenario_reorder
  • scenario_tree
  • svg_to_asset
Show 3 more tools
  • synthesize_speech
  • unpublish_demo
  • wrap_artifact

Network hosts it talks to 11

  • adlnet.gov · found in code
  • adlnet.org · found in code
  • api.openverse.org · found in code
  • cdn.jsdelivr.net · found in code
  • commons.wikimedia.org · found in code
  • edumints.com · found in code
  • github.com · found in code
  • imsglobal.org · found in code
  • imsproject.org · found in code
  • mcp.edumints.com · found in code
  • scorm.edumints.com · found in remote endpoint, install command, code

Files it touches

  • /Users/kemal/Documents/GitHub/edumints-scorm-mcp
  • Any path the agent passes to its tools

Tools (47)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • add_asset

    Dış MCP çıktısını (data: base64 veya https URL) pakete dahil eder (SSRF korumalı).

  • add_screen

    Projeye bir ekran ekler. `screen`: tipli ekran JSON nesnesi (`type` alanı zorunlu; geçerli değerler için `list_screen_types`). Sunucu Pydantic ile doğrular.

  • build_from_spec

    Tüm kursu tek JSON spec ile inşa eder (token-verimli, ÖNERİLİR). Fast-path §3.1. `spec`: CourseSpec JSON nesnesi (title, screens[…], theme, tracking, …). Sunucu doğrular. strict (SP-5, opt-in): küratörlü anti-slop WARN kümesi de build'i bloklar; None → sunucu varsayılanı (ANTISLOP_STRICT). Varsayılan davranış değişmedi.

  • build_package

    Build job tetikler (fast-path §3.1): küçük kurs senkron döner, uzun ise job_id+poll. strict (SP-5, opt-in): küratörlü anti-slop WARN kümesi de build'i bloklar; None → sunucu varsayılanı (ANTISLOP_STRICT). Varsayılan davranış değişmedi.

  • build_status

    Projenin EN SON build job'unun durumunu döner (poll aracı, §3.1 — #94). build_package/build_from_spec fast-path'i aşıp job_id+status döndüğünde bununla sorgula: status="done" olunca download_url dolu döner. Store-backed okuma → restart sonrası da çalışır. Yeni build TETİKLEMEZ (idempotent poll için build_package'ı yeniden çağırmak da güvenlidir).

  • create_project

    Yeni bir SCORM projesi oluşturur.

  • create_scenario

    Yeni senaryo dokümanı oluşturur (hiyerarşik outline + sayfalar; derleyici build_from_spec'e çevirir). `outline`: OutlineNode JSON listesi (unit/section, derinlik ≤3). Yapısal hata (sarkan parent, döngü, derinlik>3, yinelenen id, hedef çakışması) reddedilir.

  • export_qti

    W8 — quiz ekranlarını IMS QTI 2.1 assessmentItem XML'lerine dışa aktarır (endüstriyel interop: içerik QTI-uyumlu LMS/madde bankası/değerlendirme platformlarına taşınabilir). Desteklenen: mcq, true_false, fill_blank; diğer tipler atlanır. Deterministik XML (sunucuda LLM yok).

  • fill_media_slot

    Senaryo sayfasındaki medya yuvasını doldurur. `source`: "data:<mime>;base64,..." veya https URL (indirme+SSRF denetimi add_asset ile AYNI iç yoldan). Varlık SENARYO evine yazılır (doküman `assets` listesi + store; derlemede build_from_spec assets[]'ine geçer). Sert kapılar (3.8 veri bütünlüğü): (1) sniff edilen MIME yuva `kind`'ıyla uyuşmazsa kind_mime_mismatch — bildirilen MIME'a değil BAYTA bakılır; (2) role="kanit" yuvada alt_text (audio/video için ek olarak transcript_html) yoksa A11Y_NO_TEXT_ALT. sha256 içerik-dedup: aynı bayt daha önce eklendiyse AYNI asset_id döner (deduped=true), yeni…

  • get_guide

    Sunucuya bağlı rehberler — araç çağrıları, build_from_spec şekli, alanlar, kompozisyon, medya, tema, video — HER ZAMAN GÜNCEL kaynak. topic yok → konu listesi + skill sürüm durumu (oturum başında skill_version ile çağır). topic="cookbook" vb. → rehber metni. topic="schema:<ekran_tipi>" → o tipin alanları (sunucu modelinden). Keşif — proje gerektirmez; notice hiçbir aracı bloklamaz.

  • html_to_asset

    Kullanıcının ürettiği ham HTML'i (Claude artifact vb.) `text/html` asset'ine çevirir — base64 gerekmez, ham `html_content` ver (svg_to_asset deseni). Dönen `id`'yi `embed_html` ekranının `html_asset_id`'sinde kullan (VEYA tek adımda `wrap_artifact`). Büyük/uzak artifact için `wrap_artifact(source_url=https://…)` kullan — o çağrı HTML'i indirip YENİ bir proje + `embed_html` ekranı kurar. `add_asset(source=https://…)` HTML KABUL ETMEZ (https kolu izinli mime listesiyle sınırlı → `asset_error: İzin verilmeyen mime: text/html`; `data:` kolu mime'ı hiç denetlemediği için oradan geçer — ama yol bu d…

  • lint_course

    W6 oyun anti-slop kalite kapısı: game/adaptive_practice ekranlarını araştırma-temelli deterministik kurallarla denetler (içsel-bütünleşme, anlamlı seçim, scaffolding dengesi, adaptif anlam, a11y). İki şiddet: 'error' (yapısal bug — build'i de bloklar) ve 'warn' (pedagojik koku — danışsal, build'i bloklamaz). Yazar bunu yayından ÖNCE çalıştırıp slop'u temizler. Sunucuda LLM YOK. SP-5 strict (opt-in): strict=True (ya da sunucuda ANTISLOP_STRICT=1 varsayılanı) küratörlü WARN kümesini (STRICT_PROMOTED_CODES) raporda 'error' şiddetine terfi ettirir — build'i strict build_package/build_from_spec'in…

  • list_compositions

    Kompozisyon desen kataloğu (K1): ekranın `composition` alanında ad olarak ya da {"preset": ad, ...ince ayar} nesnesiyle kullanılır (veya preset'siz serbest parametreler). Keşif — auth gerekmez.

  • list_demos

    Sahibin yayınladığı KALICI demo linklerini listeler (`publish_demo` çıktıları).

  • list_feedback

    AÇIK reviewer yorumlarını döndürür (preview annotation; Faz 2). - project_id VERİLMEZSE: senin TÜM projelerindeki açık yorumlar (project_id + başlıkla). Hangi projede feedback olduğunu bilmiyorsan böyle çağır — keşif için. - project_id VERİLİRSE: yalnız o proje. Revizyon döngüsü: reviewer preview'da ekrana yorum bırakır → Claude bunu okur → düzeltir → `resolve_feedback` ile kapatır. Yalnız projelerin sahibi okuyabilir.

Show 32 more tools
  • list_screen_types

    Mevcut TÜM ekran tiplerini (build_from_spec/add_screen `screen.type` değerleri) ve kısa açıklamalarını listeler. Skorlanan tipler `scored:true` ile işaretlenir. Yeni bir kurs tasarlarken hangi ekran tiplerinin mevcut olduğunu görmek için çağır (keşif; proje gerektirmez).

  • list_screens

    Projedeki ekranları sıralı listeler.

  • list_themes

    Mevcut tema preset'lerini (build_from_spec/set_theme `theme` adı) ve konularına uygunluğunu listeler. Arayüzü konuya göre farklılaştırmak için uygun temayı seçmek üzere çağır (keşif).

  • make_video_from_image_audio

    Bir görsel + bir ses asset'ini sabit-görüntülü videoya (mp4, H.264/AAC) birleştirir (ffmpeg). E-öğrenme: slayt görseli + TTS seslendirme → seslendirilmiş video. Sonuç yeni asset olur; VideoScreen'de video_asset_id ile kullan. Faz 4 — LAZY: yalnız çağrılınca ffmpeg devreye girer.

  • match_media_manifest

    Yerel medya klasörünün METADATA manifestini senaryonun BOŞ yuvalarıyla eşleştirir. `files`: [{name, size, sha256, mime}] — SUNUCU HİÇBİR DOSYA YOLUNA DOKUNMAZ (kabul #10; klasörü İSTEMCİ tarar: scripts/import_media_folder.py). Sinyaller: dosya adı ↔ slot_id/spec/source_hint token örtüşmesi, MIME ↔ kind, boyut makullüğü, sha256 zaten içeride mi ("dedup" — fill aynı id'yi döndürür). → {proposals: [{page_id, slot_id, role, kind, spec, proposed, candidates: [{name, score, reasons}]}], unmatched_files}. Belirsizlikte proposed=null + skorlu aday listesi — OTOMATİK ATAMA YAPILMAZ; onaylanan eşleşmele…

  • normalize_audio_asset

    Bir ses asset'ini tarayıcı-güvenli mp3'e (44.1kHz/128k) normalize/transcode eder (ffmpeg). Çapraz-MCP'den gelen wav/ogg/m4a sesleri her tarayıcıda çalışsın diye. Faz 4 — LAZY.

  • preview

    Tek-dosya, harici bağımlılıksız önizleme üretir + hosted URL döndürür. v1.8.1: varsayılan yanıt HAFİF — `hosted_url`, `compositions`, `composition_questions`, `size_bytes` (sayfanın bayt boyutu). Tam HTML'i yanıtta istiyorsan `include_html=true` ver; kullanıcıya göstermek için `hosted_url` yeterlidir. BÜYÜK ÇIKTI UYARISI: `inline_html` tek dosyada her şeyi taşır (taban ~546 KB) ve gömülü artifact/asset'ler data-URI olarak base64'lenir (≈ boyut × 1.33; `html_to_asset` 25 MB'a kadar kabul eder). `wrap_artifact` ile sarılmış bir artifact'te `inline_html`'i bağlama çekmek yerine `hosted_url`'i k…

  • publish_demo

    Projeyi KALICI herkese açık demo linkine yayınlar: {PUBLIC_BASE_URL}/demo/{slug}. `preview`'dan farkı: TTL YOK — link süresiz yaşar (README/vitrin/portföy linkleri için). Upsert: aynı slug'a tekrar yayınlamak içeriği günceller (yalnız slug'ı ilk yayınlayan sahip güncelleyebilir). slug: [a-z0-9-], 3-40 karakter. Demo HTML boyutu sahibin depolama kotasına dahildir (`enforce_size_quota`). Envanter için `list_demos`, kaldırmak için `unpublish_demo`.

  • remove_screen

    Bir ekranı siler.

  • render_motion_video

    Sahne-spec'ten programatik motion-graphic / veri-viz MP4 üretir (HyperFrames) ve video asset olarak ekler. VideoScreen'de video_asset_id ile kullan. Faz 10 — LAZY/async. video_spec = VideoSpec JSON (scenes[].elements: text/shape/image/icon/chart + animation). Guardrail: ≤1920x1080, ≤60sn. Sahnede narration_asset_id varsa ses mux'lanır.

  • render_screen_video

    Mevcut bir stage ekranını (Faz 9 timeline'ıyla) MP4'e döker (HyperFrames). İndirilebilir özet / LMS video oynatıcısı için. Faz 10 — LAZY/async. duration_sec ≤ 60. quality (draft/standard/high) + fps ile hız/kalite dengesi (Faz 11).

  • reorder_screens

    Ekranları verilen id sırasına göre yeniden dizer. `screen_ids_in_order`, projedeki TÜM ekran id'lerini bire bir (eksiksiz, tekrarsız) içermelidir; aksi halde `validation_error` döner. add_screen sona ekler — sıralamayı değiştirmek/araya almak için bunu kullan.

  • resolve_feedback

    Bir reviewer yorumunu 'çözüldü' işaretler (Claude düzeltmeyi uyguladıktan sonra).

  • scenario_compile

    Senaryoyu build_from_spec payload'una derler. ⛔ blocker varsa REDDEDER (blocker listesi ile). Derlenen spec: outline passthrough, sayfalar → ekranlar (screen_type derlemede ZORUNLU), body_md → sanitize HTML, kanıt/hedef bağları otoriter, faz adı ASLA basılmaz. Sonuç ayrıca üretilen spec'in tam lint_course raporunu içerir. compile_and_build=True → build_from_spec'e zincirler (proje oluşturulur + paketlenir).

  • scenario_delete_node

    Outline düğümünü siler. `strategy`: "refuse" (varsayılan — çocuk düğüm/sayfa varsa reddeder) | "reparent" (çocuk düğümleri düğümün ebeveynine, sayfaları ebeveyne taşır; kök düğümde sayfa varsa ebeveynsiz kalır → hata).

  • scenario_delete_page

    Sayfayı siler. Ona işaret eden evidence_from referanslarını TEMİZLER (sarkma bırakmaz); boşalan bağ scenario_gaps'te blocker olur (dangle değil).

  • scenario_gaps

    Boşluk raporu = derleme KAPISI. {blockers (⛔), warnings (⚠), suggestions, evidence_binding_coverage_estimate}. Blocker varken scenario_compile REDDEDER. Denetimler sıra-bağımsız; screen_type YALNIZ önerilir (asla otomatik seçilmez).

  • scenario_reorder

    Sayfaları verilen id sırasına dizer. Liste TÜM sayfa id'lerini bire bir içermelidir (eksik/fazla → validation_error). `order` alanları yeni sıraya göre yeniden atanır.

  • scenario_tree

    Senaryonun kompakt ağaç özetini döndürür (düğüm hiyerarşisi + sayfa satırları + node_id'siz sayfalar). Yazarlık gezinmesi için (tam doküman değil).

  • scenario_upsert_node

    Outline düğümü ekler/günceller (id varsa günceller). Doküman yapısal denetimden geçer.

  • scenario_upsert_page

    Sayfa ekler/günceller (id yoksa üretilir; varsa günceller). Sayfa şeması (kanıt ENUM oneOf, medya yuvası rolleri) doğrulanır. Boşluk/kanıt kapısı derlemededir (scenario_gaps).

  • search_images

    Telifsiz (CC0/Public Domain) görsel arar — kurslara görsel eklemenin ilk adımı. `source`: "openverse" | "wikimedia". Yalnızca CC0/Public Domain lisanslı sonuçlar döner. Sonuçtan bir `url` seçip `add_asset(project_id, source=url, filename=...)` ile projeye ekle (indirme+SSRF denetimi orada yapılır — bu tool yalnız aday listeler, İNDİRME YAPMAZ). Her sonuç lisans/yazar/ kaynak-sayfa bilgisi taşır; uygun yerde yazarı kursa kredilendirin.

  • set_composition

    Projenin kompozisyon modunu ayarlar. "auto": odak/vurgu kademeleri/otomatik desen; "classic": eski görünüm (bayt-aynı). Mevcut bir projeyi yükseltmenin TEK yolu. visual (K2, ops.): görsel ekranlarda metin yeri tercihi — "stack" (üstte bant), "split" (solda sütun), "auto" (içeriğe göre). Verilmezse mevcut tercih korunur. question (K3, ops.): vakalı (uyaranlı) soru ekranlarında vakanın yeri — aynı değerler.

  • set_screen_composition

    Tek bir ekranın kompozisyonunu ayarlar (desen adı, {"preset": …, ince ayar} nesnesi ya da None = otomatik seçime bırak). Ekranın diğer alanlarına DOKUNMAZ — update_screen'in aksine tüm ekranı yeniden göndermek gerekmez. `composition_questions` cevaplarını uygulamak için.

  • set_theme

    Tema token'larını uygular (kısmi override derin merge edilir).

  • set_tracking

    Tamamlanma/geçme kriterini ayarlar.

  • svg_to_asset

    Claude-üretimi SVG diyagramını SCORM asset'ine çevirir (base64 gerekmez — ham `svg_content` ver). Dönen `id`'yi `media_asset_id`/`image_asset_id`/blocks `asset_id` vb.'de kullan; ekran `<img>` ile yükler (responsive). ÖNEMLİ: SVG'yi `body_html`'e inline gömme — sanitizer `<svg>`'yi siler. `rasterize=true` → PNG (azami LMS uyumu; cairosvg gerekir). Aksi halde SVG (hafif, vektörel; modern LMS'lerde `<img>` ile zaten render olur). SUNUCUDA LLM YOK.

  • synthesize_speech

    Metni Piper ile Türkçe seslendirmeye çevirir → mp3 narration asset (Faz 11). Ekranlarda narration_asset_id ile kullan. LAZY: Piper yoksa net hata. Üst kalite ya da başka dil için kendi TTS MCP'ni kullanıp add_asset ile yükle (çapraz-MCP akışı birincildir).

  • unpublish_demo

    KALICI demo linkini kaldırır: metadata + HTML silinir; sonrasında `/demo/{slug}` 404 döner. Yalnız slug'ın sahibi kaldırabilir (store'dan doğrulanır; eski yalnız-.owner-dosyalı yayınlarda dosyadan).

  • update_screen

    Var olan bir ekranı günceller. `screen`: tipli ekran JSON nesnesi (`type` zorunlu) — ekran BÜTÜNÜYLE değiştirilir (gönderilmeyen içerik alanları silinir). İstisna (v1.8.1): `composition` anahtarı hiç gönderilmezse ekranın mevcut kompozisyon ezmesi KORUNUR (tip aynıysa); açıkça `null` → otomatik seçime döner. Geçersiz kompozisyon / alt'sız görsel vaka reddedilir.

  • validate_package

    Proje + (varsa) son paketin manifest/yapı doğrulamasını yapar.

  • wrap_artifact

    Keyfi kendine-yeten HTML'i (Claude artifact) TEK ADIMDA izlenebilir SCORM içeriğine çevirir: proje + `embed_html` ekranı. Sonra `preview`/`build_package`/`publish_demo` çağır. Girdi: `html_content` ham string (küçük/orta) VEYA `source_url` https (büyük/uzak; SSRF-korumalı) — tam olarak biri (boş string DE "verilmiş" sayılır). `completion="time_threshold"` ise `min_seconds` > 0 ZORUNLU (kaç saniye sonra tamamlansın); diğer modlarda yok sayılır. `language` (varsayılan "tr", `create_project` ile AYNI): oynatıcı kabuğu + runtime i18n + LOM `general/language`. Proje yaratıldıktan SONRA hiçbir tool …

Compare and alternatives

    Featured in

    Signals

    Stars
    9
    Forks
    5
    Open issues
    18
    Last commit
    Oct 14, 2026 (14 days ago)
    Last release
    Oct 14, 2026 (14 days ago)

    From GitHub (fetched Oct 24, 2026).

    Details

    Registry name
    io.github.kemalyy/edumints-scorm-mcp
    Version
    1.9.0
    Auth
    Auth not stated
    License
    MIT
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026
    Cite this page

    edumints SCORM MCP. Agent Mart. https://agentmart.dev/connectors/kemalyy-edumints-scorm-mcp (last updated 2026-10-24)