Utvecklare

Musaels MCP-server

Anslut en MCP-klient till en skribents Musael-projekt. Servern talar Streamable HTTP och accepterar OAuth-inloggning eller en personlig åtkomsttoken.

Server

Serverns URL
https://app.musael.com/api/mcp?lang=sv
Transport
Streamable HTTP, tillståndslösa JSON-svar. Skicka JSON-RPC-meddelanden med POST; GET och DELETE svarar 405.
Servernamn
musael

Autentisering

Varje förfrågan kräver huvudet Authorization: Bearer <token>. Utan token, eller med en återkallad, utgången eller felaktig, svarar servern 401 med ett WWW-Authenticate-huvud som pekar på dess OAuth-metadata.

OAuth-inloggning

För ChatGPT, Claude, Cursor, VS Code och andra klienter som ansluter genom inloggning. Klienten upptäcker allt från 401-svaret, enligt MCP-specifikationen för auktorisering:

  • Metadata för skyddad resurs (RFC 9728): https://app.musael.com/.well-known/oauth-protected-resource/api/mcp
  • Metadata för auktoriseringsserver (RFC 8414): https://app.musael.com/.well-known/oauth-authorization-server
  • Dynamisk klientregistrering (RFC 7591): endast publika klienter, utan hemlighet; omdirigeringsadresser i HTTPS, HTTP bara på loopback, eller ett appschema.
  • Auktoriseringskod med PKCE (endast S256). Skribenten loggar in, väljer Endast läsning eller Läsa och lägga till samt projekten, och tillåter eller avbryter sedan.
  • Åtkomsttokens gäller i en timme; uppdateringstokens gäller i 90 dagar och byts vid varje användning.
  • Omfång: read och suggest (visas för skribenten som Läsa och lägga till).

Personlig åtkomsttoken

För klienter som konfigureras för hand, som Codex, Claude Code eller ett skript. Skribenten skapar token i Musael under Inställningar → Anslutna appar och väljer ett namn, projekten, åtkomsten och när den går ut.

  • Tokens börjar med sti_ och visas en gång; Musael sparar bara en hash av dem.
  • Ett konto kan ha upp till 20 aktiva tokens. Återkallning stänger av en token direkt.
  • Skicka den i huvudet Authorization. Lägg den aldrig i URL:en.

Åtkomst och gränser

  • Varje anrop agerar som skribenten som anslöt, inom den åtkomst personen har just då, på de projekt som valts för anslutningen.
  • Inget verktyg ändrar eller raderar skribentens text. Verktygen som lägger till skapar nya akter, kapitel, scener eller poster i Världen; suggest_edit lämnar ett förslag som skribenten godkänner eller avvisar i Musael.
  • Alla verktyg listas alltid. Ett verktyg som planen eller anslutningen inte tillåter svarar med orsaken och gör ingenting.
  • Upp till 300 anrop var femte minut per token. Svar längre än 200 000 tecken kapas, med en uppmaning att läsa ett kapitel eller en scen i taget.

Verktyg

15 verktyg. Att läsa bokens text och föreslå ändringar ingår i planen Press.

VerktygVad det görPlanÅtkomst
list_projectsProjekten som den här anslutningen kan se, med arbetsyta, skribentens roll, scener och senaste ändring. Använd det först: alla andra verktyg behöver ett projekt-ID.Alla planerLäsa
get_profileDet anslutna Musael-kontot: ett ID som aldrig ändras, namnet och e-postadressen.Alla planerLäsa
get_outlineEtt projekts struktur: böcker, akter, kapitel med synopsis, scener i läsordning med status, berättarperspektiv och ord, samt de öppna uppgifterna.Alla planerLäsa
create_projectEtt nytt projekt utifrån en idé, med akter, kapitel, tomma scener med synopsis och poster i Världen.Alla planerLäsa och lägga till
add_to_planNya akter, kapitel och scener i ett befintligt projekt.Alla planerLäsa och lägga till
add_world_entriesNya rollfigurer, platser, föremål och fraktioner. Ett namn som redan finns lämnas som det är.Alla planerLäsa och lägga till
read_sceneEn scen som Markdown, med kapitel, status, berättarperspektiv, plats och synopsis.PressLäsa
read_chapterAlla scener i ett kapitel, i ordning, som Markdown.PressLäsa
search_projectOrd i scenerna och Världen, med korta utdrag.PressLäsa
list_worldPosterna i Världen per typ, med andra namn, taggar och början av deras anteckningar.PressLäsa
get_world_entryEn post i Världen i sin helhet: anteckningar, relationer, registrerade fakta och scenerna som nämner den.PressLäsa
get_timelineVärldens händelser i berättelsens ordning med scenen som visar var och en, och de som berättas i oordning markerade.PressLäsa
get_style_reportAppens stilrapport om en scen, gjord med fasta regler utan AI.PressLäsa
get_reader_statsLäsarna av den publicerade boken kapitel för kapitel, för ägaren och redaktörerna.PressLäsa
suggest_editEtt förslag på ersättning av ett stycke, eller en kommentar om det. Texten ändras bara om skribenten godkänner det.PressLäsa och lägga till

Rulla i sidled för att se hela tabellen.

Exempel

Sätt MUSAEL_TOKEN till en personlig åtkomsttoken. Efter initialize, skicka notifications/initialized och lista eller anropa sedan verktygen.

Initiera

curl https://app.musael.com/api/mcp?lang=sv \
  -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"}}}'

Lista verktygen

curl https://app.musael.com/api/mcp?lang=sv \
  -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=sv \
  -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"}'

Anropa ett verktyg

curl https://app.musael.com/api/mcp?lang=sv \
  -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=sv"
bearer_token_env_var = "MUSAEL_TOKEN"

Claude Code

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

Utan token

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

{"error":"TOKEN_INVALID"}