[{"data":1,"prerenderedAt":670},["ShallowReactive",2],{"\u002Fv5\u002Fintegrations\u002Fia\u002Fserveur-mcp-dodock":3,"section:\u002Fv5\u002Fintegrations\u002Fia\u002Fserveur-mcp-dodock":669},{"id":4,"title":5,"body":6,"description":652,"extension":653,"meta":654,"navigation":655,"path":665,"seo":666,"stem":667,"__hash__":668},"docs\u002F1.v5\u002F4.integrations\u002F07.ia\u002F7.serveur-mcp-dodock.md","Serveur MCP de Dodock",{"type":7,"value":8,"toc":643},"minimark",[9,13,22,25,77,82,104,108,114,117,139,197,203,209,213,224,244,247,327,330,334,348,432,436,439,513,519,523,544,548,639],[10,11,5],"h1",{"id":12},"serveur-mcp-de-dodock",[14,15,16,17,21],"p",{},"Dodock contient un serveur MCP (Model Context Protocol) à l'adresse ",[18,19,20],"code",{},"\u002Fapi\u002Fv2\u002Fmcp"," de chaque site. Un agent IA ou un client compatible MCP peut l'utiliser pour découvrir les types de documents, lire et modifier des documents et appeler des méthodes autorisées. Il travaille avec les permissions de l'utilisateur connecté.",[14,23,24],{},"Ce serveur ne demande pas d'application supplémentaire.",[26,27,30,33],"callout",{"color":28,"icon":29},"blue","i-mdi-information",[14,31,32],{},"Ne confondez pas les serveurs MCP de Dokos :",[34,35,36,44,56,67],"ul",{},[37,38,39,43],"li",{},[40,41,42],"strong",{},"Le serveur MCP de Dodock",", décrit sur cette page. Il fait partie de Dodock.",[37,45,46,49,50,55],{},[40,47,48],{},"La passerelle MCP de Dokos AI",", utilisée par ",[51,52,54],"a",{"href":53},"\u002Fv5\u002Fintegrations\u002Fia\u002Fdokos-connect","Dokos Connect",". Elle demande l'application Dokos AI.",[37,57,58,61,62,66],{},[40,59,60],{},"Les serveurs MCP externes"," que vous déclarez pour l'assistant. Voir ",[51,63,65],{"href":64},"\u002Fv5\u002Fintegrations\u002Fia\u002Fserveurs-mcp","Connecter des outils externes à l'assistant",".",[37,68,69,72,73,66],{},[40,70,71],{},"Dokos CLI",", l'outil en ligne de commande qui contient aussi un serveur MCP. Voir ",[51,74,76],{"href":75},"\u002Fv5\u002Fintegrations\u002Fia\u002Fassistants-externes","Piloter Dokos depuis un assistant externe",[78,79,81],"h2",{"id":80},"prérequis","Prérequis",[34,83,84,91,98,101],{},[37,85,86,87,90],{},"Le rôle ",[40,88,89],{},"System Manager",", pour activer le serveur.",[37,92,93,94,97],{},"Un utilisateur du bureau (rôle ",[40,95,96],{},"Desk User",") pour l'agent. Le serveur refuse les autres utilisateurs.",[37,99,100],{},"Des clés d'API de cet utilisateur, ou un jeton OAuth.",[37,102,103],{},"Un client compatible MCP, par exemple Claude Desktop ou Claude Code.",[78,105,107],{"id":106},"activer-le-serveur","Activer le serveur",[14,109,110,111,113],{},"Sur la v5, le serveur est désactivé par défaut. Tant qu'il est désactivé, l'adresse ",[18,112,20],{}," répond « introuvable » (404).",[14,115,116],{},"Les libellés de cette section ne sont pas encore traduits : ils s'affichent en anglais.",[118,119,120,126,132],"ol",{},[37,121,122,123,66],{},"Ouvrez ",[40,124,125],{},"Paramètres Système",[37,127,128,129,66],{},"Ouvrez l'onglet ",[40,130,131],{},"AI Agents",[37,133,134,135,138],{},"Dans la section ",[40,136,137],{},"MCP Settings",", remplissez les champs :",[140,141,142,155],"table",{},[143,144,145],"thead",{},[146,147,148,152],"tr",{},[149,150,151],"th",{},"Champ",[149,153,154],{},"Rôle",[156,157,158,169,187],"tbody",{},[146,159,160,166],{},[161,162,163],"td",{},[40,164,165],{},"Enable MCP",[161,167,168],{},"Active le serveur.",[146,170,171,176],{},[161,172,173],{},[40,174,175],{},"Server Name",[161,177,178,179,182,183,186],{},"Le nom affiché aux clients IA. Vide, il est calculé à partir du nom d'hôte du site (",[18,180,181],{},"erp.example.com"," devient ",[18,184,185],{},"erp_example_com",").",[146,188,189,194],{},[161,190,191],{},[40,192,193],{},"Agent Instructions",[161,195,196],{},"Un texte qui décrit l'usage du site. Le serveur l'envoie aux agents à la connexion, après ses propres instructions (adresse du site, utilisateur connecté, applications installées). Ce texte ne change pas les permissions. Exemple fictif : « Site de gestion de Dokompany, distributeur de matériel de bureau. Les devis sont en euros. »",[118,198,200],{"start":199},4,[37,201,202],{},"Enregistrez.",[14,204,205,206,66],{},"L'adresse du serveur est ",[18,207,208],{},"https:\u002F\u002Fvotre-site.fr\u002Fapi\u002Fv2\u002Fmcp",[78,210,212],{"id":211},"connecter-un-client-mcp","Connecter un client MCP",[14,214,215,216,219,220,223],{},"Le client envoie ses requêtes en ",[18,217,218],{},"POST",", au format JSON, à l'adresse du serveur. Il s'authentifie avec l'en-tête ",[18,221,222],{},"Authorization"," :",[34,225,226,237],{},[37,227,228,229,232,233,236],{},"avec des clés d'API : ",[18,230,231],{},"token \u003Cclé d'API>:\u003Csecret>",". Générez les clés dans la section ",[40,234,235],{},"Accès API"," de l'utilisateur de l'agent ;",[37,238,239,240,243],{},"avec OAuth : ",[18,241,242],{},"Bearer \u003Cjeton>",". Le client ouvre la page de connexion du site et vous demande d'autoriser l'accès.",[14,245,246],{},"Exemple avec Claude Code :",[248,249,254],"pre",{"className":250,"code":251,"language":252,"meta":253,"style":253},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","claude mcp add-json --scope user dokos \\\n  '{\"type\":\"http\",\"url\":\"https:\u002F\u002Fvotre-site.fr\u002Fapi\u002Fv2\u002Fmcp\",\"headers\":{\"Authorization\":\"token \u003Cclé d'API>:\u003Csecret>\"}}'\n","bash","",[18,255,256,285],{"__ignoreMap":253},[257,258,261,265,269,272,275,278,281],"span",{"class":259,"line":260},"line",1,[257,262,264],{"class":263},"sBMFI","claude",[257,266,268],{"class":267},"sfazB"," mcp",[257,270,271],{"class":267}," add-json",[257,273,274],{"class":267}," --scope",[257,276,277],{"class":267}," user",[257,279,280],{"class":267}," dokos",[257,282,284],{"class":283},"sTEyZ"," \\\n",[257,286,288,292,295,298,301,304,307,310,313,316,319,321,324],{"class":259,"line":287},2,[257,289,291],{"class":290},"sMK4o","  '",[257,293,294],{"class":267},"{\"type\":\"http\",\"url\":\"https:\u002F\u002Fvotre-site.fr\u002Fapi\u002Fv2\u002Fmcp\",\"headers\":{\"Authorization\":\"token \u003Cclé d",[257,296,297],{"class":290},"'",[257,299,300],{"class":267},"AP",[257,302,303],{"class":283},"I",[257,305,306],{"class":290},">",[257,308,309],{"class":267},":",[257,311,312],{"class":290},"\u003C",[257,314,315],{"class":267},"secre",[257,317,318],{"class":283},"t",[257,320,306],{"class":290},[257,322,323],{"class":290},"\"",[257,325,326],{"class":267},"}}'\n",[14,328,329],{},"Ne mettez jamais ces identifiants dans un dépôt de code.",[78,331,333],{"id":332},"outils-disponibles","Outils disponibles",[14,335,336,337,340,341,340,344,347],{},"Le serveur propose 13 outils. Leurs arguments suivent les conventions de l'API REST v2 (",[18,338,339],{},"filters",", ",[18,342,343],{},"fields",[18,345,346],{},"order_by","…).",[140,349,350,360],{},[143,351,352],{},[146,353,354,357],{},[149,355,356],{},"Groupe",[149,358,359],{},"Outils",[156,361,362,384,409],{},[146,363,364,367],{},[161,365,366],{},"Découverte",[161,368,369,340,372,340,375,340,378,340,381],{},[18,370,371],{},"search_doctypes",[18,373,374],{},"get_doctype_schema",[18,376,377],{},"search_methods",[18,379,380],{},"get_method_schema",[18,382,383],{},"list_document_methods",[146,385,386,389],{},[161,387,388],{},"Documents",[161,390,391,340,394,340,397,340,400,340,403,340,406],{},[18,392,393],{},"list_documents",[18,395,396],{},"get_document",[18,398,399],{},"count_documents",[18,401,402],{},"create_document",[18,404,405],{},"update_document",[18,407,408],{},"delete_document",[146,410,411,414],{},[161,412,413],{},"Méthodes",[161,415,416,419,420,423,424,427,428,431],{},[18,417,418],{},"call_method"," (méthode autorisée ",[18,421,422],{},"@frappe.whitelist","), ",[18,425,426],{},"call_document_method"," (méthode autorisée d'un document, par exemple ",[18,429,430],{},"submit",")",[78,433,435],{"id":434},"api-de-découverte","API de découverte",[14,437,438],{},"Une API de découverte complète le serveur MCP. Elle permet à un client API d'explorer les méthodes disponibles.",[140,440,441,451],{},[143,442,443],{},[146,444,445,448],{},[149,446,447],{},"Adresse",[149,449,450],{},"Description",[156,452,453,463,473,483,493,503],{},[146,454,455,460],{},[161,456,457],{},[18,458,459],{},"GET \u002Fapi\u002Fv2\u002Fdiscovery",[161,461,462],{},"Vue d'ensemble des ressources de découverte",[146,464,465,470],{},[161,466,467],{},[18,468,469],{},"GET \u002Fapi\u002Fv2\u002Fdiscovery\u002Fsearch?q={query}",[161,471,472],{},"Recherche dans l'index des méthodes",[146,474,475,480],{},[161,476,477],{},[18,478,479],{},"GET \u002Fapi\u002Fv2\u002Fdiscovery\u002Fmethod",[161,481,482],{},"Liste des méthodes autorisées",[146,484,485,490],{},[161,486,487],{},[18,488,489],{},"GET \u002Fapi\u002Fv2\u002Fdiscovery\u002Fmethod\u002F{method}",[161,491,492],{},"Détail d'une méthode",[146,494,495,500],{},[161,496,497],{},[18,498,499],{},"GET \u002Fapi\u002Fv2\u002Fdiscovery\u002Fdoctype\u002F{doctype}",[161,501,502],{},"Méthodes des documents d'un type",[146,504,505,510],{},[161,506,507],{},[18,508,509],{},"GET \u002Fapi\u002Fv2\u002Fdiscovery\u002Fdoctype\u002F{doctype}\u002Fmethod\u002F{method}",[161,511,512],{},"Détail d'une méthode de document",[14,514,515,516,66],{},"Le code source d'une méthode est montré seulement si son application active le hook ",[18,517,518],{},"expose_discovery_source",[78,520,522],{"id":521},"permissions","Permissions",[34,524,525,528,531,534],{},[37,526,527],{},"La lecture et l'écriture de documents suivent les permissions habituelles de l'utilisateur connecté.",[37,529,530],{},"Un utilisateur du bureau peut voir les schémas et les méthodes, même celles qu'il ne peut pas lire ni appeler.",[37,532,533],{},"Les méthodes autorisées font leurs propres contrôles de permission.",[37,535,536,537,540,541,66],{},"Le serveur refuse une requête qui vient d'une autre origine (en-tête ",[18,538,539],{},"Origin","), sauf si le site l'autorise dans ",[18,542,543],{},"allow_cors",[78,545,547],{"id":546},"dépannage","Dépannage",[140,549,550,560],{},[143,551,552],{},[146,553,554,557],{},[149,555,556],{},"Réponse",[149,558,559],{},"Vérification",[156,561,562,575,591,604,614],{},[146,563,564,569],{},[161,565,566],{},[18,567,568],{},"404",[161,570,571,572,574],{},"Le serveur n'est pas activé (",[40,573,165],{},"), ou l'adresse est fausse.",[146,576,577,582],{},[161,578,579],{},[18,580,581],{},"405",[161,583,584,585,587,588,66],{},"La requête n'est pas un ",[18,586,218],{},". Une adresse ouverte dans un navigateur envoie un ",[18,589,590],{},"GET",[146,592,593,598],{},[161,594,595],{},[18,596,597],{},"401",[161,599,600,601,603],{},"Les identifiants ou l'en-tête ",[18,602,222],{}," sont absents ou faux.",[146,605,606,611],{},[161,607,608],{},[18,609,610],{},"403",[161,612,613],{},"L'utilisateur n'est pas un utilisateur du bureau, ou l'origine de la requête n'est pas autorisée.",[146,615,616,625],{},[161,617,618,621,622],{},[18,619,620],{},"406"," \u002F ",[18,623,624],{},"415",[161,626,627,628,631,632,635,636,66],{},"Envoyez ",[18,629,630],{},"Content-Type: application\u002Fjson"," et acceptez ",[18,633,634],{},"application\u002Fjson"," dans ",[18,637,638],{},"Accept",[640,641,642],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":253,"searchDepth":260,"depth":287,"links":644},[645,646,647,648,649,650,651],{"id":80,"depth":287,"text":81},{"id":106,"depth":287,"text":107},{"id":211,"depth":287,"text":212},{"id":332,"depth":287,"text":333},{"id":434,"depth":287,"text":435},{"id":521,"depth":287,"text":522},{"id":546,"depth":287,"text":547},"Connecter un agent IA ou un client MCP au serveur MCP intégré à Dodock, pour lire et modifier des documents avec les permissions de l'utilisateur connecté.","md",{"reviewed":655,"last_verified":656,"sources":657},true,"2026-11-04",[658,659,660,661,662,663,664],"frappe@v5-dev:frappe\u002Fmcp\u002F__init__.py","frappe@v5-dev:frappe\u002Fmcp\u002Ftransport.py","frappe@v5-dev:frappe\u002Fmcp\u002Fprotocol.py","frappe@v5-dev:frappe\u002Fmcp\u002Ftools\u002F__init__.py","frappe@v5-dev:frappe\u002Fapi\u002Fv2.py","frappe@v5-dev:frappe\u002Fapi\u002Fdiscovery.py","frappe@v5-dev:frappe\u002Fcore\u002Fdoctype\u002Fsystem_settings\u002Fsystem_settings.json","\u002Fv5\u002Fintegrations\u002Fia\u002Fserveur-mcp-dodock",{"title":5,"description":652},"1.v5\u002F4.integrations\u002F07.ia\u002F7.serveur-mcp-dodock","X6LzYAusVsac3LK8bIbkqsnOp3CoLeydWP3RlmmQgK8",{},1793872120764]