{"id":204,"date":"2026-11-08T07:22:36","date_gmt":"2026-11-08T03:22:36","guid":{"rendered":"https:\/\/demensdeum.com\/blog\/2026\/11\/08\/opencode-mcp-deepseek\/"},"modified":"2026-11-08T07:22:36","modified_gmt":"2026-11-08T03:22:36","slug":"opencode-mcp-deepseek","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/fr\/2026\/11\/08\/opencode-mcp-deepseek\/","title":{"rendered":"MCP en OpenCode sur DeepSeek : comment connecter des outils externes"},"content":{"rendered":"<p>MCP (Model Context Protocol) est un protocole ouvert qui d\u00e9crit comment connecter des outils et des sources de donn\u00e9es externes au mod\u00e8le de langage\u00a0: un syst\u00e8me de fichiers, une documentation, un suivi des t\u00e2ches, un suivi des bogues ou votre propre service. Au lieu d&#8217;int\u00e9grer chaque outil dans l&#8217;agent, vous configurez un serveur MCP distinct et l&#8217;agent communique avec lui selon le sch\u00e9ma standard.<\/p>\n<p>OpenCode prend en charge MCP d\u00e8s le d\u00e9part\u00a0: \u00e0 la fois les serveurs locaux, qui sont lanc\u00e9s par un processus enfant, et les serveurs distants, accessibles via HTTP. Un point important est que l\u2019ensemble de la couche MCP est impl\u00e9ment\u00e9e du c\u00f4t\u00e9 d\u2019OpenCode lui-m\u00eame, et non du c\u00f4t\u00e9 du fournisseur de mod\u00e8les. Par cons\u00e9quent, DeepSeek re\u00e7oit les outils MCP comme fonctions normales dans la requ\u00eate et n&#8217;a pas besoin de conna\u00eetre quoi que ce soit sur le protocole lui-m\u00eame.<\/p>\n<p>Dans cet article, je vais voir comment ajouter un serveur local et distant, comment obtenir une autorisation, comment ne pas se noyer sous les jetons et ce qu&#8217;il faut prendre en compte lorsque l&#8217;on travaille avec des mod\u00e8les DeepSeek.<\/p>\n<h2>Ce dont vous avez besoin<\/h2>\n<p>Pour travailler, vous avez besoin de trois choses :<\/p>\n<ul>\n<li><b>OpenCode install\u00e9.<\/b> Si l&#8217;agent n&#8217;est pas encore configur\u00e9, j&#8217;ai discut\u00e9 de la proc\u00e9dure d&#8217;installation et de connexion de DeepSeek dans une note s\u00e9par\u00e9e.<\/li>\n<li><b>Node.js et npx.<\/b> N\u00e9cessaire pour les serveurs MCP locaux, qui sont distribu\u00e9s sous forme de packages npm.<\/li>\n<li><b>Cl\u00e9s d&#8217;acc\u00e8s.<\/b> Uniquement pour les serveurs distants qui n\u00e9cessitent une autorisation. Les serveurs publics comme Context7 fonctionnent sans cl\u00e9, mais avec des limites inf\u00e9rieures.<\/li>\n<\/ul>\n<h2>Comment \u00e7a marche<\/h2>\n<p>Les serveurs sont d\u00e9crits dans la configuration OpenCode dans le bloc <b>mcp<\/b>. Chaque serveur poss\u00e8de un nom unique sous lequel il peut \u00eatre mentionn\u00e9 dans une requ\u00eate. Les outils serveur sont enregistr\u00e9s avec ce pr\u00e9fixe de nom, il n&#8217;y a donc aucun conflit entre les diff\u00e9rents serveurs.<\/p>\n<p>Apr\u00e8s la connexion, les outils MCP deviennent disponibles pour les mod\u00e8les avec ceux int\u00e9gr\u00e9s\u00a0: lecture de fichiers, \u00e9dition de code et ex\u00e9cution de commandes. Du point de vue de DeepSeek, il s&#8217;agit de fonctions ordinaires qu&#8217;un agent peut appeler &#8211; c&#8217;est pourquoi le bundle fonctionne sans aucune prise en charge MCP du c\u00f4t\u00e9 de l&#8217;API du mod\u00e8le.<\/p>\n<h2>Serveur local<\/h2>\n<p>Le moyen le plus simple de se familiariser avec le m\u00e9canisme est d&#8217;utiliser le serveur de test <b>@modelcontextprotocol\/server-everything<\/b>. Ajoutons-le au fichier <b>opencode.json<\/b> \u00e0 la racine du projet\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"mcp\": {\n    \"mcp_everything\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"@modelcontextprotocol\/server-everything\"]\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>Le champ <b>commande<\/b> est la commande de d\u00e9marrage du serveur et ses arguments sous forme de tableau. Apr\u00e8s avoir red\u00e9marr\u00e9 OpenCode, les outils appara\u00eetront dans la session et pourront \u00eatre demand\u00e9s explicitement\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 mcp_everything, \u0447\u0442\u043e\u0431\u044b \u0441\u043b\u043e\u0436\u0438\u0442\u044c 3 \u0438 4\n<\/code><\/pre>\n<\/div>\n<p>Le serveur local poss\u00e8de plusieurs champs plus utiles. <b>environment<\/b> d\u00e9finit les variables d&#8217;environnement du processus, <b>cwd<\/b> &#8211; le r\u00e9pertoire de travail, <b>timeout<\/b> &#8211; le d\u00e9lai d&#8217;attente de la demande en millisecondes, et <b>enabled<\/b> vous permet de d\u00e9sactiver temporairement le serveur sans le supprimer de la configuration.<\/p>\n<h2>Serveur distant<\/h2>\n<p>Les serveurs distants sont plus pratiques\u00a0: vous n&#8217;avez pas besoin d&#8217;ex\u00e9cuter quoi que ce soit localement et ils sont accessibles via une URL. Un bon exemple est Context7, qui recherche une documentation de biblioth\u00e8que \u00e0 jour. Il se connecte sans cl\u00e9 :<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"mcp\": {\n    \"context7\": {\n      \"type\": \"remote\",\n      \"url\": \"https:\/\/mcp.context7.com\/mcp\"\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>Si vous disposez d&#8217;un compte Context7 gratuit, la cl\u00e9 est d&#8217;augmenter les limites. Les en-t\u00eates sont transmis via le bloc <b>headers<\/b>, et il est pratique de conserver la cl\u00e9 elle-m\u00eame dans une variable d&#8217;environnement\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"mcp\": {\n    \"context7\": {\n      \"type\": \"remote\",\n      \"url\": \"https:\/\/mcp.context7.com\/mcp\",\n      \"headers\": {\n        \"CONTEXT7_API_KEY\": \"{env:CONTEXT7_API_KEY}\"\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>La construction <b>{env:NAME}<\/b> remplace la valeur de la variable d&#8217;environnement lors du chargement de la configuration, afin que la cl\u00e9 ne finisse pas dans le r\u00e9f\u00e9rentiel. Avant de d\u00e9marrer l&#8217;agent, la variable doit \u00eatre export\u00e9e dans le terminal.<\/p>\n<p>Un autre serveur public utile est Grep de Vercel, recherchez des exemples de code sur GitHub\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"mcp\": {\n    \"gh_grep\": {\n      \"type\": \"remote\",\n      \"url\": \"https:\/\/mcp.grep.app\"\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<h2>Autorisation via OAuth<\/h2>\n<p>Certains serveurs distants n\u00e9cessitent OAuth. OpenCode peut r\u00e9aliser lui-m\u00eame ce sc\u00e9nario : il remarque la r\u00e9ponse 401, d\u00e9clenche l&#8217;autorisation et enregistre les tokens. Pour Sentry, pr\u00e9cisez simplement le serveur\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"mcp\": {\n    \"sentry\": {\n      \"type\": \"remote\",\n      \"url\": \"https:\/\/mcp.sentry.dev\/mcp\",\n      \"oauth\": {}\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>Apr\u00e8s cela, l&#8217;autorisation peut \u00eatre d\u00e9marr\u00e9e manuellement &#8211; le navigateur s&#8217;ouvrira :<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>opencode mcp auth sentry\n<\/code><\/pre>\n<\/div>\n<p>Les commandes de service sont \u00e9galement utiles dans le travail quotidien. La <b>liste mcp opencode<\/b> affiche les serveurs et l&#8217;\u00e9tat d&#8217;autorisation, la <b>d\u00e9connexion opencode mcp<\/b> supprime les jetons stock\u00e9s et le <b>d\u00e9bogage mcp opencode<\/b> v\u00e9rifie la connectivit\u00e9 r\u00e9seau et la d\u00e9couverte OAuth pour un serveur sp\u00e9cifique. Les jetons sont stock\u00e9s localement dans le fichier <b>~\/.local\/share\/opencode\/mcp-auth.json<\/b>.<\/p>\n<p>Si le serveur n&#8217;utilise pas OAuth, mais une cl\u00e9 API standard, l&#8217;autorisation automatique doit \u00eatre d\u00e9sactiv\u00e9e, sinon OpenCode essaiera de transmettre OAuth l\u00e0 o\u00f9 il n&#8217;est pas n\u00e9cessaire\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"mcp\": {\n    \"my-api-key-server\": {\n      \"type\": \"remote\",\n      \"url\": \"https:\/\/mcp.example.com\/mcp\",\n      \"oauth\": false,\n      \"headers\": {\n        \"Authorization\": \"Bearer {env:MY_API_KEY}\"\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<h2>Gestion des outils<\/h2>\n<p>Les outils MCP consomment du contexte : chaque serveur ajoute des descriptions de ses fonctions \u00e0 la requ\u00eate. Par cons\u00e9quent, il est pr\u00e9f\u00e9rable de garder les serveurs rarement utilis\u00e9s \u00e9teints. Cela peut \u00eatre fait globalement via le bloc <b>tools<\/b>\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"mcp\": {\n    \"my-mcp-foo\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"my-mcp-command-foo\"]\n    },\n    \"my-mcp-bar\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"my-mcp-command-bar\"]\n    }\n  },\n  \"tools\": {\n    \"my-mcp*\": false\n  }\n}\n<\/code><\/pre>\n<\/div>\n<p>Le mod\u00e8le <b>my-mcp*<\/b> d\u00e9sactive tous les outils dont le nom commence par ce pr\u00e9fixe. S&#8217;il existe de nombreux serveurs, il est plus judicieux de les d\u00e9sactiver globalement et de les activer localement pour un agent sp\u00e9cifique\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>{\n  \"$schema\": \"https:\/\/opencode.ai\/config.json\",\n  \"mcp\": {\n    \"my-mcp\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"my-mcp-command\"],\n      \"enabled\": true\n    }\n  },\n  \"tools\": {\n    \"my-mcp*\": false\n  },\n  \"agent\": {\n    \"my-agent\": {\n      \"tools\": {\n        \"my-mcp*\": true\n      }\n    }\n  }\n}\n<\/code><\/pre>\n<\/div>\n<h2>Fonctionnalit\u00e9s DeepSeek<\/h2>\n<p>La connexion avec DeepSeek fonctionne car les mod\u00e8les prennent en charge les fonctions d&#8217;appel et les outils MCP correspondants ressemblent \u00e0 des fonctions ordinaires. DeepSeek lui-m\u00eame ne connecte pas les serveurs MCP et ne devrait pas le faire : la connexion est g\u00e9r\u00e9e par OpenCode.<\/p>\n<p>Ce \u00e0 quoi vous devez faire attention\u00a0:<\/p>\n<ul>\n<li><b>S\u00e9lection d&#8217;un mod\u00e8le.<\/b> Pour les modifications de routine et petites, <b>deepseek-flash<\/b> est suffisant. Pour les t\u00e2ches o\u00f9 vous devez garder beaucoup de contexte en t\u00eate et s\u00e9lectionner soigneusement un outil, il est pr\u00e9f\u00e9rable de donner <b>deepseek-v4-pro<\/b>.<\/li>\n<li><b>Taille du contexte.<\/b> Les serveurs lourds comme GitHub MCP ajoutent beaucoup de jetons et, avec un grand projet, atteignent facilement la limite. Activez-les uniquement pendant la dur\u00e9e d&#8217;une t\u00e2che sp\u00e9cifique.<\/li>\n<p>Les sch\u00e9mas d&#8217;outillage <\/p>\n<li><b>Co\u00fbt<\/b> sont envoy\u00e9s avec chaque requ\u00eate. Ainsi, plus il y a de serveurs inclus, plus chaque it\u00e9ration est co\u00fbteuse. Vous payez directement le fournisseur, de sorte que les serveurs suppl\u00e9mentaires sont visibles sur votre facture.<\/li>\n<li><b>Conseils pour l&#8217;agent.<\/b> Il est plus s\u00fbr de ne pas se fier \u00e0 l&#8217;ing\u00e9niosit\u00e9 du mod\u00e8le, mais de nommer directement le serveur dans la requ\u00eate ou d&#8217;\u00e9crire une r\u00e8gle dans <b>AGENTS.md<\/b>.<\/li>\n<\/ul>\n<p>Un exemple de r\u00e8gle pour <b>AGENTS.md<\/b>, afin que l&#8217;agent acc\u00e8de lui-m\u00eame \u00e0 la source requise\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>\u041a\u043e\u0433\u0434\u0430 \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b context7.\n<\/code><\/pre>\n<\/div>\n<h2>Recette pratique<\/h2>\n<p>Pour le travail quotidien, deux serveurs suffisent g\u00e9n\u00e9ralement : Context7 pour la documentation et un serveur restreint pour une t\u00e2che sp\u00e9cifique &#8211; par exemple, Sentry pour analyser les erreurs ou Grep pour rechercher des exemples de code. Il est pr\u00e9f\u00e9rable de garder le reste \u00e9teint et de l&#8217;allumer si n\u00e9cessaire.<\/p>\n<p>Ma proc\u00e9dure est la suivante\u00a0: j&#8217;ajoute le serveur \u00e0 <b>opencode.json<\/b>, red\u00e9marre OpenCode, v\u00e9rifie la liste via la <b>opencode mcp list<\/b>, puis pose une question test qui mentionne explicitement le serveur. Si l&#8217;outil n&#8217;est pas appel\u00e9, je regarde vers le <b>d\u00e9bug opencode mcp<\/b> et le d\u00e9lai d&#8217;attente &#8211; un serveur lent peut ne pas avoir le temps de r\u00e9pondre dans les 30 secondes imparties.<\/p>\n<h2>\u00c0 quoi faire attention<\/h2>\n<p>Quelques points pratiques. Les serveurs MCP sont du code de confiance\u00a0: le serveur local s&#8217;ex\u00e9cute sur votre machine avec vos droits et vous envoyez les donn\u00e9es de requ\u00eate au serveur distant. Par cons\u00e9quent, l\u2019installation de serveurs al\u00e9atoires \u00e0 partir d\u2019Internet doit \u00eatre effectu\u00e9e avec la m\u00eame prudence que n\u2019importe quelle CLI tierce.<\/p>\n<p>Conservez les cl\u00e9s et les jetons dans les variables d&#8217;environnement et ne vous engagez pas dans le r\u00e9f\u00e9rentiel. OpenCode stocke les jetons OAuth localement, mais sur une machine partag\u00e9e, cela vaut \u00e9galement la peine d&#8217;\u00eatre pris en compte\u00a0: la <b>d\u00e9connexion opencode mcp<\/b> les supprime lorsque l&#8217;acc\u00e8s n&#8217;est plus n\u00e9cessaire.<\/p>\n<p>Et encore une chose : n\u2019allumez pas tout en m\u00eame temps. MCP ajoute des outils au contexte, et le contexte est synonyme d&#8217;argent et de qualit\u00e9 de r\u00e9ponse. Deux ou trois serveurs vraiment n\u00e9cessaires fonctionnent bien mieux que dix connect\u00e9s au cas o\u00f9.<\/p>\n<h2>Liens<\/h2>\n<p><a href=\"https:\/\/opencode.ai\/docs\/mcp-servers\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/mcp-servers\/<\/a><br \/>\n<a href=\"https:\/\/opencode.ai\/docs\/config\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/config\/<\/a><br \/>\n<a href=\"https:\/\/modelcontextprotocol.io\/\" rel=\"noopener\" target=\"_blank\">https:\/\/modelcontextprotocol.io\/<\/a><br \/>\n<a href=\"https:\/\/github.com\/upstash\/context7\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/upstash\/context7<\/a><br \/>\n<a href=\"https:\/\/mcp.sentry.dev\" rel=\"noopener\" target=\"_blank\">https:\/\/mcp.sentry.dev<\/a><br \/>\n<a href=\"https:\/\/mcp.grep.app\" rel=\"noopener\" target=\"_blank\">https:\/\/mcp.grep.app<\/a><br \/>\n<a href=\"https:\/\/github.com\/anomalyco\/opencode\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/anomalyco\/opencode<\/a><\/p>\n<h2>Sources<\/h2>\n<p><a href=\"https:\/\/opencode.ai\/docs\/mcp-servers\/\" rel=\"noopener\" target=\"_blank\">https:\/\/opencode.ai\/docs\/mcp-servers\/<\/a><br \/>\n<a href=\"https:\/\/modelcontextprotocol.io\/\" rel=\"noopener\" target=\"_blank\">https:\/\/modelcontextprotocol.io\/<\/a><br \/>\n<a href=\"https:\/\/api-docs.deepseek.com\/\" rel=\"noopener\" target=\"_blank\">https:\/\/api-docs.deepseek.com\/<\/a><br \/>\n<a href=\"https:\/\/api-docs.deepseek.com\/quick_start\/agent_integrations\/opencode\" rel=\"noopener\" target=\"_blank\">https:\/\/api-docs.deepseek.com\/quick_start\/agent_integrations\/opencode<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>MCP (Model Context Protocol) est un protocole ouvert qui d\u00e9crit comment connecter des outils et des sources de donn\u00e9es externes au mod\u00e8le de langage\u00a0: un syst\u00e8me de fichiers, une documentation, un suivi des t\u00e2ches, un suivi des bogues ou votre propre service. Au lieu d&#8217;int\u00e9grer chaque outil dans l&#8217;agent, vous configurez un serveur MCP distinct [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-204","post","type-post","status-publish","format-standard","hentry","category-notes"],"translation":{"provider":"WPGlobus","version":"3.0.6","language":"fr","enabled_languages":["en","ru","zh","de","ja","fr","es","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"es":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/204","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=204"}],"version-history":[{"count":0,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/204\/revisions"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=204"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=204"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=204"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}