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 yapar | Plan | Erişim |
|---|---|---|---|
list_projects | Bu 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 plan | Okuma |
get_profile | Bağlı Musael hesabı: hiç değişmeyen bir kimlik, ad ve e-posta. | Her plan | Okuma |
get_outline | Bir 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 plan | Okuma |
create_project | Bir fikirden yeni proje; perdeler, bölümler, özetli boş sahneler ve Dünya kayıtlarıyla. | Her plan | Okuma ve ekleme |
add_to_plan | Mevcut bir projeye yeni perdeler, bölümler ve sahneler. | Her plan | Okuma ve ekleme |
add_world_entries | Yeni karakterler, mekânlar, nesneler ve hizipler. Zaten var olan bir ad olduğu gibi bırakılır. | Her plan | Okuma ve ekleme |
read_scene | Bir sahne Markdown olarak; bölümü, durumu, bakış açısı, mekânı ve özetiyle. | Press | Okuma |
read_chapter | Bir bölümün her sahnesi, sırayla, Markdown olarak. | Press | Okuma |
search_project | Sahnelerde ve Dünya'da sözcükler, kısa alıntılarla. | Press | Okuma |
list_world | Dünya kayıtları türe göre; diğer adları, etiketleri ve notlarının başlangıcıyla. | Press | Okuma |
get_world_entry | Bir Dünya kaydı bütünüyle: notlar, ilişkiler, kayıtlı olgular ve onu anan sahneler. | Press | Okuma |
get_timeline | Dünya'nın olayları hikâye sırasıyla, her birini gösteren sahneyle; sırası bozuk anlatılanlar işaretli. | Press | Okuma |
get_style_report | Bir sahne üzerine uygulamanın üslup raporu; YZ olmadan sabit kurallarla hazırlanır. | Press | Okuma |
get_reader_stats | Yayımlanan kitabın okurları bölüm bölüm; sahibi ve editörler için. | Press | Okuma |
suggest_edit | Bir pasaj için önerilen değişiklik ya da yorum. Metin yalnızca yazar kabul ederse değişir. | Press | Okuma 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"}
