Développeurs

Serveur MCP de Musael

Connectez un client MCP aux projets Musael d'un auteur. Le serveur parle HTTP en flux continu et accepte la connexion OAuth ou un jeton d'accès personnel.

Serveur

URL du serveur
https://app.musael.com/api/mcp?lang=fr
Transport
HTTP en flux continu, réponses JSON sans état. Envoyez les messages JSON-RPC avec POST ; GET et DELETE répondent 405.
Nom du serveur
musael

Authentification

Chaque requête nécessite l'en-tête Authorization: Bearer <token>. Sans jeton, ou avec un jeton révoqué, expiré ou erroné, le serveur répond 401 avec un en-tête WWW-Authenticate qui pointe vers ses métadonnées OAuth.

Connexion OAuth

Pour ChatGPT, Claude, Cursor, VS Code et les autres clients qui se connectent par identification. Le client découvre tout à partir de la réponse 401, selon la spécification d'autorisation MCP :

  • Métadonnées de la ressource protégée (RFC 9728): https://app.musael.com/.well-known/oauth-protected-resource/api/mcp
  • Métadonnées du serveur d'autorisation (RFC 8414): https://app.musael.com/.well-known/oauth-authorization-server
  • Enregistrement dynamique de client (RFC 7591) : clients publics uniquement, sans secret ; adresses de redirection en HTTPS, HTTP uniquement en boucle locale, ou schéma d'application.
  • Code d'autorisation avec PKCE (S256 uniquement). L'auteur se connecte, choisit Lecture seule ou Lecture et ajout ainsi que les projets, puis autorise ou annule.
  • Les jetons d'accès durent une heure ; les jetons d'actualisation durent 90 jours et changent à chaque utilisation.
  • Portées : read et suggest (présentées à l'auteur comme Lecture et ajout).

Jeton d'accès personnel

Pour les clients configurés à la main, comme Codex, Claude Code ou un script. L'auteur crée le jeton dans Musael sous Réglages → Applications connectées, en choisissant un nom, les projets, l'accès et l'expiration.

  • Les jetons commencent par sti_ et ne sont affichés qu'une fois ; Musael n'en conserve qu'un hachage.
  • Un compte peut avoir jusqu'à 20 jetons actifs. Révoquer désactive un jeton immédiatement.
  • Envoyez-le dans l'en-tête Authorization. Ne le mettez jamais dans l'URL.

Accès et limites

  • Chaque appel agit comme l'auteur qui s'est connecté, dans les accès qu'il a à ce moment-là, sur les projets choisis pour la connexion.
  • Aucun outil ne modifie ni ne supprime le texte de l'auteur. Les outils d'ajout créent de nouveaux actes, chapitres, scènes ou entrées du Monde ; suggest_edit laisse une proposition que l'auteur accepte ou refuse dans Musael.
  • Chaque outil est toujours listé. Un outil que la formule ou la connexion n'autorise pas répond avec la raison et ne fait rien.
  • Jusqu'à 300 appels toutes les cinq minutes par jeton. Les réponses de plus de 200 000 caractères sont tronquées, avec une note invitant à lire un chapitre ou une scène à la fois.

Outils

15 outils. La lecture du texte du livre et la proposition de modifications viennent avec la formule Press.

OutilCe qu'il faitFormuleAccès
list_projectsLes projets que cette connexion peut voir, avec leur espace de travail, le rôle de l'auteur, les scènes et la dernière modification. À utiliser en premier : tout autre outil a besoin d'un identifiant de projet.Toutes les formulesLecture
get_profileLe compte Musael connecté : un identifiant qui ne change jamais, le nom et l'e-mail.Toutes les formulesLecture
get_outlineLa structure d'un projet : livres, actes, chapitres avec synopsis, scènes dans l'ordre de lecture avec statut, point de vue et nombre de mots, et les tâches ouvertes.Toutes les formulesLecture
create_projectUn nouveau projet à partir d'une idée, avec actes, chapitres, scènes vides avec synopsis et entrées du Monde.Toutes les formulesLecture et ajout
add_to_planDe nouveaux actes, chapitres et scènes dans un projet existant.Toutes les formulesLecture et ajout
add_world_entriesDe nouveaux personnages, lieux, objets et factions. Un nom qui existe déjà est laissé tel quel.Toutes les formulesLecture et ajout
read_sceneUne scène en Markdown, avec son chapitre, son statut, son point de vue, son lieu et son synopsis.PressLecture
read_chapterToutes les scènes d'un chapitre, dans l'ordre, en Markdown.PressLecture
search_projectDes mots dans les scènes et le Monde, avec de courts extraits.PressLecture
list_worldLes entrées du Monde par type, avec les autres noms, les étiquettes et le début de leurs notes.PressLecture
get_world_entryUne entrée du Monde en entier : notes, relations, faits consignés et scènes qui la mentionnent.PressLecture
get_timelineLes événements du Monde dans l'ordre de l'histoire avec la scène qui montre chacun, en signalant ceux racontés dans le désordre.PressLecture
get_style_reportLe rapport de style de l'appli sur une scène, établi par des règles fixes sans IA.PressLecture
get_reader_statsLes lecteurs du livre publié chapitre par chapitre, pour le propriétaire et les éditeurs.PressLecture
suggest_editUn remplacement proposé pour un passage, ou un commentaire dessus. Le texte ne change que si l'auteur accepte.PressLecture et ajout

Faites défiler latéralement pour voir tout le tableau.

Exemples

Définissez MUSAEL_TOKEN avec un jeton d'accès personnel. Après initialize, envoyez notifications/initialized, puis listez ou appelez les outils.

Initialiser

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

Lister les outils

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

Appeler un outil

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

Claude Code

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

Sans jeton

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

{"error":"TOKEN_INVALID"}