Une commande, prouvée le 2026-09-10 avec Claude Code 2.1.265 : le client se connecte, découvre sept outils, et récupère les quatorze rôles. Voici ce chemin, et où il s’arrête.
VÉRIFIÉ CLIENTObservé en train de tourner dans l’applicationDeskworth · publié · mis à jour · 4 sources · Deskworth OS 0.0.48
Un programme tiers, nommé et versionné, a exercé ceci, et la page dit lequel, et quand.
PreuveProuvé par un programme tiers, nommé et versionné : Claude Code 2.1.265, le 2026-09-10. Il s’est connecté au serveur MCP contenu dans l’image disque 0.0.24, a listé sept outils, en a appelé un, et a reçu les quatorze rôles que l’application en cours détient. Ce n’est pas la même affirmation que « les tests passent », et c’est la raison d’être de cette page.
L’image disque Deskworth 0.0.24, installée, le client lance le binaire depuis l’intérieur du paquet de l’application.
L’application Deskworth en cours. Le serveur est une façade mince : il passe la demande à l’application par une socket Unix locale. Application fermée, il répond « Deskworth ne tourne pas, ouvrez l’application, puis réessayez » au lieu de casser la session.
Claude Code installé et connecté. La preuve a été prise avec la 2.1.265 ; les versions antérieures négocient une autre révision du protocole, ce qui est le sujet de la page de dépannage.
Une commande, et c’est celle qui a été prouvée, pas une illustration. Elle déclare un serveur local que le client lance lui-même comme sous-processus, ce qu’est le transport stdio 4.
claude mcp add deskworth -- /Applications/Deskworth.app/Contents/MacOS/deskworth-os --mcp-stdio
Claude Code range cette déclaration par projet, par utilisateur, ou dans un fichier partagé par le dépôt, selon la portée que vous choisissez 3. Rien dans Deskworth ne dépend de celle que vous prenez.
Lancez la commande MCP du client. Deskworth doit y figurer comme connecté, cet état vient d’une vraie poignée de main, pas de l’existence de la déclaration.
Demandez les outils. Sept doivent paraître, tous préfixés deskworth_. Si la liste est vide, la poignée de main a réussi et la surface non : lisez la page de dépannage.
Appelez le premier, deskworth_agents_list. Il ne prend aucun argument et rend les rôles que l’application en cours détient, avec ce que chacun possède. Quatorze sont revenus le 2026-09-10.
Cette réponse est la preuve que toute la chaîne fonctionne : le client a lancé le binaire, le binaire a atteint l’application par une socket locale, et l’application a répondu.
PreuveAppelez deskworth_agents_list en premier, et pas par politesse : les rôles décident de ce qu’une mission peut produire. Un client qui demande un classeur sans savoir quel rôle possède ce format devine.
VÉRIFIÉ CLIENTSe connecter, négocier, découvrir, appeler deskworth_agents_listClaude Code 2.1.265 a fait les quatre le 2026-09-10, contre le binaire livré dans l’image disque.
VÉRIFIÉ CLIENTdeskworth_desk_startLa fenêtre écoute désormais. Le 2026-09-10, un appel de Claude Code a ouvert un vrai bureau dans l’application : une nouvelle conversation, trois cartes, trois rôles distincts, trois identifiants de carte distincts, et l’appel a rendu « démarrée » après l’accusé de la fenêtre, pas avant.
VÉRIFIÉ CLIENTdeskworth_desk_status et deskworth_desk_cancelLes deux exercés depuis le client lors de cette exécution. L’annulation a arrêté la carte et son CLI d’éditeur a disparu ; la socket est restée utilisable aussitôt après.
PARTIELdeskworth_desk_result et les deux outils d’artefactsÉcrits et couverts par des tests dans le cœur. Aucune mission ouverte depuis MCP n’a encore produit de livrable, les trois cartes de cette exécution ont fini en échec, parce qu’aucun outil ne sert les faits dont elles avaient besoin. Il n’y a rien vers quoi pointer ces trois-là, et la page ne prétendra pas le contraire.
DISPONIBLELes quatre consignesLivrées et servies. Une consigne est une entrée de menu que l’utilisateur choisit, jamais le modèle, et chacune énonce ce qu’elle refuse d’inventer.
LimiteDonc : un client peut ouvrir un bureau, le suivre et l’arrêter. Ce qu’il ne peut pas encore récupérer, c’est un livrable fini, le bureau tourne, et l’exécution s’arrête sur des données qu’aucun outil ne sait chercher. C’est un outil qui manque, pas un fil.
La retirer est une commande du client, pas de Deskworth · rien dans l’application ne conserve d’enregistrement.
La remplacer, c’est la retirer puis l’ajouter de nouveau : la déclaration est un nom qui désigne un chemin de binaire, et une seconde entrée sous le même nom entrerait en collision.
Le nom compte. Deux déclarations se fondent dans un seul espace de noms, et un serveur tiers prenant le nom que l’application enregistre, `deskworth`, en remplacerait une en silence.
Replay the exchange that actually happened: launch, negotiate, discover seven tools, call one, receive fourteen roles.
Claude Code 2.1.265 · 2026-09-10 · against the binary shipped in the disk image
clientlaunches the binaryThe declaration names a path inside the installed application. The client starts it as a subprocess and speaks on its standard input.
clientinitializeAnnounces the protocol revision it speaks, 2025-11-25 for this version of the client.
deskworthanswers with the negotiated revisionReflects 2025-11-25 and identifies itself as deskworth 0.0.24. On the first attempt it imposed its own newest revision instead, and the client refused to connect.
clienttools/listAsks what it may call.
deskworthseven toolsThe desk surface: list the roles, open a desk, follow it, read its result, cancel it, list the artifacts, read one.
clienttools/call, deskworth_agents_listNo arguments. The first call any client should make: the roles decide what a mission can produce.
deskworthfourteen rolesForwarded over a local Unix socket to the running application and answered from it, with what each role owns. No error.
Every line is a fact recorded in the 0.0.24 handover report, the client and its version, the negotiated revision, the tool count, the call and its answer. The JSON bodies are deliberately not shown: the report does not record them, and composing them from the specification would make a plausible trace out of a true one.
Nothing is sent. The validation above is local, it compares your input to the schema the core declares. Reaching a real server would mean running a desk somewhere other than your own machine.
The roles and their tools are mirrored from the core at build time; the external surface is read from the same commit. Nothing is sent: this page has no server to reach, and reaching one would mean running a desk somewhere other than your machine.
The full path from a client call to a finished mission, with the one link that does not exist yet named in place.
01The client calls deskworth_desk_startexists
02The server accepts it and returns a mission id immediatelyexists
03The server hands the request to the main window as an eventexists
04The interface picks that event up and opens the deskmissing, one listener
05Mandates run, tools are called, deliverables are depositedwaits on the line above
06The client polls the status, then reads the result and the artifactswaits on the line above
Half of this path is proven and half is not. The server accepts the call and hands the request to the main window as an event; nothing listens for that event yet on the interface side. Showing the whole flow without naming that gap would let a reader assume it runs.
Deskworth OS, product state at 0.0.24, providers and MCPDeskworthinternal handover report · Deskworth OS 0.0.24 · commit produit fb53f44 · lu à d01b336 · publié 2026-09-10 · lu 2026-09-10Document interne, non publié
The external MCP surface, mirrored on this siteDeskworthinternal registry · mirror of mcp::externe, tools, prompts, resource templates, spoken revisions · lu 2026-09-10Document interne, non publié