Geliştiriciler

Musael MCP sunucusu

Bir MCP istemcisini bir yazarın Musael projelerine bağla. Sunucu Streamable HTTP konuşur ve OAuth girişini ya da kişisel erişim belirtecini kabul eder.

Sunucu

Sunucu URL'si
https://app.musael.com/api/mcp?lang=tr
Aktarım
Streamable HTTP, durumsuz JSON yanıtları. JSON-RPC iletilerini POST ile gönder; GET ve DELETE 405 yanıtı verir.
Sunucu adı
musael

Kimlik doğrulama

Her istek Authorization: Bearer <token> başlığını gerektirir. Belirteç yoksa ya da iptal edilmiş, süresi dolmuş veya yanlışsa sunucu, OAuth meta verisine işaret eden bir WWW-Authenticate başlığıyla 401 yanıtı verir.

OAuth ile giriş

ChatGPT, Claude, Cursor, VS Code ve giriş yaparak bağlanan diğer istemciler için. İstemci her şeyi 401 yanıtından keşfeder, MCP yetkilendirme belirtimini izleyerek:

  • Korunan kaynak meta verisi (RFC 9728): https://app.musael.com/.well-known/oauth-protected-resource/api/mcp
  • Yetkilendirme sunucusu meta verisi (RFC 8414): https://app.musael.com/.well-known/oauth-authorization-server
  • Dinamik istemci kaydı (RFC 7591): yalnızca gizli anahtarsız genel istemciler; yönlendirme adresleri HTTPS, yalnızca döngü adresinde HTTP ya da bir uygulama şeması olmalı.
  • PKCE ile yetkilendirme kodu (yalnızca S256). Yazar giriş yapar, Salt okunur ya da Okuma ve ekleme ile projeleri seçer, sonra izin verir ya da iptal eder.
  • Erişim belirteçleri bir saat, yenileme belirteçleri 90 gün geçerlidir ve her kullanımda değişir.
  • Kapsamlar: read ve suggest (yazara Okuma ve ekleme olarak gösterilir).

Kişisel erişim belirteci

Elle yapılandırılan istemciler için, örneğin Codex, Claude Code ya da bir betik. Yazar belirteci Musael'de Ayarlar → Bağlı uygulamalar altında oluşturur; ad, projeler, erişim ve süre bitişini seçer.

  • Belirteçler sti_ ile başlar ve bir kez gösterilir; Musael yalnızca özetini (hash) saklar.
  • Bir hesapta en fazla 20 etkin belirteç olabilir. İptal etmek belirteci hemen kapatır.
  • Authorization başlığında gönder. Asla URL'ye koyma.

Erişim ve sınırlar

  • Her çağrı, bağlanan yazar olarak, o andaki erişimi dahilinde ve bağlantı için seçilen projelerde işlem yapar.
  • Hiçbir araç yazarın metnini değiştirmez ya da silmez. Ekleyen araçlar yeni perdeler, bölümler, sahneler ya da Dünya kayıtları oluşturur; suggest_edit, yazarın Musael'de kabul ettiği ya da reddettiği bir öneri bırakır.
  • Her araç her zaman listelenir. Plan ya da bağlantının izin vermediği bir araç nedenini yanıtlar ve hiçbir şey yapmaz.
  • Belirteç başına beş dakikada en fazla 300 çağrı. 200.000 karakterden uzun yanıtlar kesilir; bir seferde bir bölüm ya da sahne okumak için not eklenir.

Araçlar

15 araç. Kitabın metnini okumak ve düzenleme önermek Press planıyla gelir.

AraçNe yaparPlanErişim
list_projectsBu bağlantının görebildiği projeler; çalışma alanı, yazarın rolü, sahneler ve son değişiklikle birlikte. Önce bunu kullan: diğer her araç bir proje kimliği ister.Her planOkuma
get_profileBağlı Musael hesabı: hiç değişmeyen bir kimlik, ad ve e-posta.Her planOkuma
get_outlineBir projenin yapısı: kitaplar, perdeler, özetli bölümler, okuma sırasında durum, bakış açısı ve kelime sayılı sahneler ve açık görevler.Her planOkuma
create_projectBir fikirden yeni proje; perdeler, bölümler, özetli boş sahneler ve Dünya kayıtlarıyla.Her planOkuma ve ekleme
add_to_planMevcut bir projeye yeni perdeler, bölümler ve sahneler.Her planOkuma ve ekleme
add_world_entriesYeni karakterler, mekânlar, nesneler ve hizipler. Zaten var olan bir ad olduğu gibi bırakılır.Her planOkuma ve ekleme
read_sceneBir sahne Markdown olarak; bölümü, durumu, bakış açısı, mekânı ve özetiyle.PressOkuma
read_chapterBir bölümün her sahnesi, sırayla, Markdown olarak.PressOkuma
search_projectSahnelerde ve Dünya'da sözcükler, kısa alıntılarla.PressOkuma
list_worldDünya kayıtları türe göre; diğer adları, etiketleri ve notlarının başlangıcıyla.PressOkuma
get_world_entryBir Dünya kaydı bütünüyle: notlar, ilişkiler, kayıtlı olgular ve onu anan sahneler.PressOkuma
get_timelineDünya'nın olayları hikâye sırasıyla, her birini gösteren sahneyle; sırası bozuk anlatılanlar işaretli.PressOkuma
get_style_reportBir sahne üzerine uygulamanın üslup raporu; YZ olmadan sabit kurallarla hazırlanır.PressOkuma
get_reader_statsYayımlanan kitabın okurları bölüm bölüm; sahibi ve editörler için.PressOkuma
suggest_editBir pasaj için önerilen değişiklik ya da yorum. Metin yalnızca yazar kabul ederse değişir.PressOkuma ve ekleme

Tablonun tamamını görmek için yana kaydır.

Örnekler

MUSAEL_TOKEN değerini kişisel bir erişim belirtecine ayarla. initialize sonrası notifications/initialized gönder, sonra araçları listele ya da çağır.

Başlat

curl https://app.musael.com/api/mcp?lang=tr \
  -H "Authorization: Bearer $MUSAEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"example","version":"1.0.0"}}}'

Araçları listele

curl https://app.musael.com/api/mcp?lang=tr \
  -H "Authorization: Bearer $MUSAEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","method":"notifications/initialized"}'

curl https://app.musael.com/api/mcp?lang=tr \
  -H "Authorization: Bearer $MUSAEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'

Bir aracı çağır

curl https://app.musael.com/api/mcp?lang=tr \
  -H "Authorization: Bearer $MUSAEL_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_projects","arguments":{}}}'

Codex

# ~/.codex/config.toml
[mcp_servers.musael]
url = "https://app.musael.com/api/mcp?lang=tr"
bearer_token_env_var = "MUSAEL_TOKEN"

Claude Code

claude mcp add --transport http --scope user musael https://app.musael.com/api/mcp?lang=tr --header "Authorization: Bearer $MUSAEL_TOKEN"

Belirteçsiz

HTTP/2 401
www-authenticate: Bearer realm="Musael", resource_metadata="https://app.musael.com/.well-known/oauth-protected-resource/api/mcp"

{"error":"TOKEN_INVALID"}