Connectez un agent IA à votre livre par MCP.

Shiro est un serveur MCP. Claude Code, Cursor, Codex, Claude Desktop, VS Code ou tout autre client du Model Context Protocol peut lire un projet et y travailler avec une trentaine d’outils. Par défaut, les modifications d’un agent attendent sous forme de propositions que vous les appliquiez.

Trois portes d’entrée

Choisissez selon l’endroit où vit le livre.

shiro mcp API locale Cloud
Travaille sur Un dossier de projet Le projet ouvert dans l’application Les projets cloud du compte
Transport stdio Streamable HTTP Streamable HTTP
Adresse Aucune http://127.0.0.1:7341/mcp/<clé> https://api.meetshiro.com/mcp
Authentification Aucune, le processus tourne sous votre session Une clé par client OAuth 2.1
Modifications Propositions, ou --auto Propositions, ou mode auto par client Propositions, dans la limite du rôle
Il faut Node et une compilation depuis les sources L’application ouverte, API activée Un compte Shiro

Les trois servent les mêmes outils, avec le même code serveur.

En ligne de commande : shiro mcp

La commande shiro se compile depuis les sources : il vous faut Node 22 et pnpm 10.

git clone https://github.com/Quentin967/shiro
cd shiro
pnpm install
pnpm --filter shiro build
node apps/cli/dist/cli.js mcp /chemin/vers/MonRoman

Cette commande sert un seul projet sur stdio, sans que l’application Shiro ait besoin de tourner. Les scènes sont lues dans le dossier Manuscript/ du projet. Les options :

  • --auto applique les modifications directement, avec Annuler, au lieu de les laisser en attente.
  • --client <nom> donne le nom de l’agent sur ses propositions et dans l’historique. Par défaut : Agent.
  • --out <dossier> indique où vont les fichiers compilés. Par défaut : le dossier courant.

La plupart des clients acceptent un bloc de ce genre dans leur configuration MCP :

{
  "mcpServers": {
    "shiro": {
      "command": "node",
      "args": [
        "/chemin/vers/shiro/apps/cli/dist/cli.js",
        "mcp",
        "/chemin/vers/MonRoman",
        "--client",
        "Claude"
      ]
    }
  }
}

Les propositions sont enregistrées en JSON dans le dossier .shiro/proposals/ du projet, et les fichiers du manuscrit ne bougent pas. Elles s’appliquent ou se rejettent dans le panneau Shiro.

Dans l’application de bureau : l’API locale

Elle est désactivée par défaut.

  1. Dans l’application, ouvrez Vous › Agents et activez « Laisser les agents de cet ordinateur se connecter ».
  2. Sous « Connecter un outil », choisissez le vôtre et cliquez sur « Créer une clé ». Chaque outil a la sienne, pour pouvoir le déconnecter seul.
  3. Collez dans l’outil ce que la page affiche. Elle donne les étapes pour Claude Code, Cursor, Codex, Claude Desktop et VS Code, et un nom et une URL pour tout autre client Streamable HTTP.

Pour Claude Code puis pour Codex, les commandes sont :

claude mcp add --transport http --scope user shiro http://127.0.0.1:7341/mcp/<clé>
codex mcp add shiro --url http://127.0.0.1:7341/mcp/<clé>

Claude Desktop passe par la passerelle mcp-remote, qui demande Node.

Le serveur n’écoute que sur 127.0.0.1, et seulement tant que l’application est ouverte. Le port par défaut est 7341, et vous pouvez en choisir un autre s’il est occupé. La clé se met dans l’adresse ou dans un en-tête Authorization: Bearer. Shiro ne l’affiche qu’une fois et n’en garde que l’empreinte. Les requêtes portant un autre nom d’hôte, ou venues d’une page web, sont refusées. Chaque client connecté a son propre réglage, mode manuel ou mode auto.

Le même port sert une API HTTP simple sous /api/v1, avec la clé comme jeton Bearer :

Requête Réponse
GET /project Titre, type, langue et nombre de mots du projet
GET /outline Le plan
GET /world Les entrées du Monde, en JSON
GET /scenes/<id> Une scène
GET /tools La liste des outils
POST /tools/<nom> Lance un outil, avec ses arguments en JSON dans le corps
curl -H "Authorization: Bearer $SHIRO_KEY" http://127.0.0.1:7341/api/v1/outline

Les projets cloud : /mcp avec OAuth

L’adresse est https://api.meetshiro.com/mcp. Un client qui gère le MCP distant avec OAuth n’a besoin de rien d’autre. Si vous arrivez par le lien service_documentation des métadonnées du serveur, c’est cette section que vous cherchiez.

  • Découverte. Une requête sans jeton reçoit une erreur 401 dont l’en-tête WWW-Authenticate désigne /.well-known/oauth-protected-resource/mcp. Les métadonnées du serveur d’autorisation sont à /.well-known/oauth-authorization-server.
  • Enregistrement. L’enregistrement dynamique des clients se fait à /oauth/register. Les URI de redirection doivent être en https ou en boucle locale.
  • Autorisation. Code d’autorisation avec PKCE, S256 uniquement. Les clients sont publics, sans secret, et la portée est shiro. La page de consentement permet de se connecter ou de créer un compte dans la même fenêtre.
  • Jetons. Un jeton d’accès dure une heure. Le jeton de rafraîchissement change à chaque usage, et l’ancienne paire cesse de fonctionner dès qu’une nouvelle est émise. Le jeton d’un agent donne accès à /mcp et /v1/api/*, et à rien d’autre sur le compte.

/v1/api/* est la même API REST que l’API locale, pour les scripts. L’agent commence sur le premier projet du compte, et l’outil project liste, ouvre et crée les autres. Le projet ouvert est retenu pour ce client.

Un agent a le rôle de la personne qui l’a connecté, sans plus :

Rôle Ce que l’agent peut faire
Propriétaire ou coauteur Modifier, sous forme de propositions
Relecteur Proposer seulement
Commentateur Commenter seulement
Lecteur Lire seulement

Les appels d’outils ont une limite quotidienne, plus basse sur les comptes gratuits. Au-delà, ils renvoient une erreur HTTP 429 jusqu’au lendemain.

Ce qui attend votre accord

En mode manuel, chaque modification attend sous forme de proposition. Le mode auto les applique aussitôt, avec Annuler. Certaines actions demandent dans les deux modes : supprimer, remplacer de larges passages, les actions de Publier, déplacer et fusionner des scènes, et un replace_all de plus de 50 changements. L’outil répond alors par une question au lieu d’agir. Une fois l’accord donné dans la conversation, l’agent rappelle le même outil avec la même entrée et "confirmed": true.

Trois autres règles valent pour tous les clients.

Le texte du livre, les commentaires, les pages web et les éléments de la boîte de réception sont des données, et le serveur demande aux agents de ne jamais suivre une instruction qui s’y trouverait. Une scène marquée ai: never se lit comme vide. Enfin, les projets et modèles locaux ne restent sur votre ordinateur que pour la part de Shiro : ce qu’un agent lit, il l’envoie à son propre modèle.

Les outils

Il y en a une trentaine. La référence complète, en anglais et avec chaque paramètre, se trouve dans le dépôt.

Groupe Outils Ce qu’ils font
Lecture seule read, search, count, check, skill Lire scènes, entrées, plan et notes. Chercher par texte, mention ou sens. Compter mots, adverbes et dialogues sans modèle. Lancer les contrôles de cohérence. Charger des compétences.
Texte edit, replace_all, write, alternatives, snapshots Modifier une scène par citation exacte, rechercher et remplacer avec aperçu, garder des variantes nommées d’une scène, prendre et restaurer des instantanés.
Structure et révision structure, labels, whiteboard, passes, comments, note, inbox, memory, goals Créer, renseigner, déplacer, scinder, fusionner et étiqueter des scènes. Travailler sur les tableaux blancs, les passes de révision, les commentaires et tâches, les notes, la boîte de réception, la mémoire du projet et les objectifs.
Monde et Recherche entries, folders, media, maps, style_sheet, language Gérer les entrées et leurs liens, les dossiers, les planches d’images, les cartes avec repères et itinéraires, la feuille de style et les langues inventées.
Sortie translations, adapt, publish, compile, export, beta_reads Écrire des traductions en regard de l’original, adapter la prose en scénario ou en pièce, renseigner le livre, compiler avec un préréglage, gérer éditions et styles d’export. beta_reads n’est proposé qu’avec une connexion à Shiro Cloud.
Projet project, book Lire la fiche du projet, lister, ouvrir et créer des projets, lire les réglages du livre.

write génère du texte avec le modèle d’écriture de Shiro, et répond « No Write model is set » à travers la commande shiro mcp. Un agent extérieur a son propre modèle : il écrit le texte et l’envoie avec edit. La recherche web, la génération d’images et les outils de discussion de Shiro restent hors de MCP pour la même raison.

Le serveur propose aussi des ressources : shiro://project/card, /outline, /world, /passes, /worklist et /memory sous le même préfixe, et shiro://scene/{id}/alternatives. Un agent commence par la fiche et le plan.

La page sur l’IA explique comment Shiro se sert lui-même de ces outils. Le code est ouvert.

Les questions qu’on nous pose

Un agent peut-il modifier mon livre sans que je le voie ?

Pas par défaut. En mode manuel, les modifications attendent dans le panneau Shiro, et vous les appliquez ou les rejetez. En mode auto, elles s’appliquent aussitôt, avec Annuler. Supprimer, remplacer de larges passages et les actions de Publier demandent votre accord dans les deux modes.

Connecter un agent envoie-t-il mon livre quelque part ?

Le serveur de Shiro sur votre ordinateur n’envoie rien de lui-même, mais l’agent connecté transmet ce qu’il lit au modèle qu’il utilise. Si ce modèle est hébergé, votre texte quitte votre ordinateur du fait de l’agent.

Faut-il un compte ?

Pas pour shiro mcp ni pour l’API locale de l’application. Le point d’accès cloud travaille sur les projets cloud : il demande un compte Shiro, et un compte gratuit suffit pour se connecter.

Puis-je tenir une scène à l’écart des agents ?

Oui. Une scène cachée à Shiro (ai: never dans son en-tête) se lit comme vide pour les agents aussi.

Et l’auteur, ayant lu jusqu’au bas d’un site consacré à l’écriture, ouvrit enfin une page blanche.