Connecter Runner à d’autres clients MCP
Connectez OpenCode, Codex, pi ou votre propre agent à vos boutiques Runner via le serveur MCP de Runner.
Runner dispose d’un serveur MCP. Un client MCP est une app d’IA ou un agent qui peut utiliser des serveurs MCP. Quand vous connectez un client à Runner, il peut utiliser les outils du chat Runner sur vos boutiques. Il peut lire les produits, les commandes et les rapports. Avec votre autorisation, il peut aussi modifier les produits, les prix, les remises et la boutique en ligne.
Ce guide concerne les clients MCP autres que Claude, ChatGPT et Gemini. Il donne les étapes pour OpenCode, Codex CLI et pi. Il explique aussi comment connecter d’autres clients et les agents que vous créez.
Avant de commencer
Vous avez besoin :
- d’un compte Runner membre d’un espace de travail ;
- d’un client MCP qui se connecte aux serveurs distants via Streamable HTTP et s’authentifie avec OAuth, ou de la passerelle
mcp-remotepour un client qui n’exécute que des serveurs locaux ; et - d’un navigateur sur le même ordinateur que le client. Après l’authentification, Runner renvoie le navigateur vers une adresse sur cet ordinateur.
| Paramètre | Valeur |
|---|---|
| URL du serveur | https://api.runnerai.com/mcp |
| Transport | Streamable HTTP. Runner ne prend pas en charge l’ancien transport SSE. |
| Authentification | OAuth dans votre navigateur. Vous n’avez pas besoin de clé API. |
| Accès | store:read pour lire les données de la boutique. store:write pour apporter des modifications. |
Fonctionnement de la connexion
- Vous ajoutez l’URL du serveur à votre client et lancez l’authentification.
- Le client ouvre Runner dans votre navigateur. Connectez-vous à Runner si la page vous le demande.
- La page Connecter une app d’IA à Runner s’ouvre. Elle affiche le nom du client.
- Choisissez une option sous Espace de travail et sous Accès, puis sélectionnez Connecter.
- Le navigateur revient au client. Le client peut maintenant utiliser les outils Runner.
| Contrôle ou message | Pourquoi c’est utile | Que se passe-t-il ensuite |
|---|---|---|
| Retour vers | Affiche l’adresse sur votre ordinateur qui reçoit le résultat de l’authentification. | Elle indique localhost, 127.0.0.1 ou [::1] et un numéro de port. |
| Runner ne peut pas confirmer de quelle app il s’agit. Connectez-la uniquement si vous avez lancé cette connexion vous-même. | Runner ne peut pas vérifier l’identité d’un client que vous avez installé ou créé. | Connectez le client uniquement si vous avez lancé l’authentification depuis votre client. |
| Espace de travail | Une connexion fonctionne avec les boutiques d’un seul espace de travail. | Le client ne peut utiliser que les boutiques de l’espace de travail que vous choisissez. |
| Lecture | Toujours activée. Le client peut voir les données de la boutique, comme les produits, les commandes et les rapports. | Vous ne pouvez pas la désactiver. |
| Apporter des modifications | Permet au client de modifier les données de la boutique, comme les produits, les prix et les remises. | Désactivée au départ. Elle n’apparaît que si le client demande un accès en modification. |
| Connecter | Donne au client l’accès que vous avez choisi. | Le navigateur revient au client. |
| Annuler | Arrête l’authentification. | Le client n’obtient aucun accès. |
Le client reste authentifié. Il obtient un nouvel accès toutes les heures, sans action de votre part. Si vous n’utilisez pas le client pendant 30 jours, authentifiez-vous à nouveau.
Pour utiliser les boutiques d’un deuxième espace de travail, ajoutez le serveur une deuxième fois sous un autre nom. Authentifiez-vous ensuite avec ce nom et choisissez le deuxième espace de travail.
Connecter OpenCode
-
Ajoutez Runner à
opencode.jsondans votre projet, ou à~/.config/opencode/opencode.jsonpour tous les projets :{ "$schema": "https://opencode.ai/config.json", "mcp": { "runner": { "type": "remote", "url": "https://api.runnerai.com/mcp", "enabled": true } }, "tools": { "runner_*": false, "runner_list_stores": true, "runner_get_report": true, "runner_find_orders": true, "runner_get_tool_job": true } } -
Exécutez
opencode mcp auth runneret connectez le client dans le navigateur. -
Exécutez
opencode mcp list. La commande afficherunnercommeconnected.
OpenCode envoie au modèle, à chaque requête, la définition de chaque outil activé. Avec certains forfaits, Runner compte plus de 200 outils, soit environ 100 000 jetons de définitions. N’activez donc que les outils dont vous avez besoin. OpenCode nomme chaque outil Runner runner_<tool name>. La ligne "runner_*": false désactive tous les outils Runner, et chaque ligne true réactive un outil. Laissez runner_get_tool_job activé, car les tâches longues en ont besoin.
Pour supprimer l’authentification enregistrée, exécutez opencode mcp logout runner.
Connecter Codex CLI
-
Ajoutez Runner à
~/.codex/config.toml:[mcp_servers.runner] url = "https://api.runnerai.com/mcp" scopes = ["store:read", "store:write"] -
Exécutez
codex mcp login runneret connectez le client dans le navigateur. -
Exécutez
codex mcp list. La colonne Auth afficheOAuth.
Ajoutez le serveur dans le fichier, pas avec codex mcp add. Cette commande lance tout de suite une authentification avec des scopes que Runner n’accepte pas, et le navigateur affiche {"error":"invalid_scope"}. La ligne scopes s’applique aussi quand vous vous authentifiez à nouveau plus tard. Vous pouvez aussi exécuter codex mcp login runner --scopes store:read,store:write.
Codex trouve l’outil Runner dont il a besoin au moment où il en a besoin. Vous n’avez donc pas à désactiver d’outils. Pour supprimer l’authentification enregistrée, exécutez codex mcp logout runner.
Connecter pi
-
Exécutez
pi mcp add runner --url https://api.runnerai.com/mcp. Cette commande ajoute Runner à~/.pi/agent/mcp.json:{ "mcpServers": { "runner": { "url": "https://api.runnerai.com/mcp" } } } -
Exécutez
pi mcp login runneret connectez le client dans le navigateur. pi afficheSigned in to MCP server "runner"et le nombre d’outils. -
Exécutez
pi mcp listpour vérifier la connexion, ou utilisez/mcpdans une session pi.
Par défaut, pi n’envoie pas tous les outils Runner au modèle. Le modèle trouve un outil quand il en a besoin. Vous n’avez donc pas à désactiver d’outils. pi nomme chaque outil Runner mcp__runner__<tool name>. Pour supprimer l’authentification enregistrée, exécutez pi mcp logout runner.
Connecter un client qui n’exécute que des serveurs locaux
Certains clients ne peuvent démarrer qu’un serveur local (stdio). D’autres clients renvoient le navigateur vers un lien d’app (un schéma d’URL personnalisé) ou vers une page web. Runner n’envoie le résultat de l’authentification qu’à une adresse sur votre ordinateur. L’authentification de ces clients échoue donc.
Pour ces clients, utilisez la passerelle mcp-remote. Elle s’exécute sur votre ordinateur, s’authentifie auprès de Runner pour le client et transmet chaque message entre le client et Runner. Elle nécessite Node.js.
{
"mcpServers": {
"runner": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.runnerai.com/mcp"]
}
}
}
Au premier démarrage, la page de connexion de Runner s’ouvre dans votre navigateur. mcp-remote conserve l’authentification dans ~/.mcp-auth.
Appeler les outils Runner depuis un shell
Un agent qui exécute des commandes shell peut utiliser Runner via la commande mcporter :
npx mcporter config add runner https://api.runnerai.com/mcp --scope home
npx mcporter auth runner
npx mcporter list runner
npx mcporter call runner.list_stores
mcporter list runner affiche chaque outil et ses paramètres. Indiquez les paramètres sous la forme name=value, par exemple npx mcporter call runner.get_store_settings store_id=<store id>.
Créer votre propre client
Utilisez un SDK MCP qui prend en charge OAuth, ou suivez vous-même ces étapes :
- Envoyez chaque requête JSON-RPC avec
POSTàhttps://api.runnerai.com/mcp. Runner répond à chaque requête en JSON et ne conserve aucune session. Une requêteGETreçoit HTTP 405. - Une requête sans jeton reçoit HTTP 401 avec cet en-tête :
WWW-Authenticate: Bearer resource_metadata="https://api.runnerai.com/.well-known/oauth-protected-resource/mcp", scope="store:read store:write". - Lisez les métadonnées de la ressource. Elles indiquent le serveur d’autorisation
https://www.runnerai.com/api/auth. - Enregistrez le client à l’adresse
https://www.runnerai.com/api/auth/oauth2/register. Utilisez une URI de redirection surhttp://localhost,http://127.0.0.1ouhttp://[::1]. Runner accepte n’importe quel port et chemin. Runner accepte 5 enregistrements par minute depuis une même adresse IP. - Envoyez l’utilisateur vers le point de terminaison d’autorisation avec PKCE (
S256). Envoyezresource=https://api.runnerai.com/mcp. Demandezstore:read, etstore:writesi le client apporte des modifications. Utilisez les scopes des métadonnées de la ressource ou de l’en-têteWWW-Authenticate. Les métadonnées du serveur d’autorisation listent d’autres scopes, que ce serveur n’accepte pas. - Envoyez le jeton d’accès dans l’en-tête
Authorization: Bearer. Un jeton d’accès dure 1 heure. Utilisez le jeton d’actualisation pour en obtenir un nouveau. Un jeton d’actualisation expire après 30 jours sans utilisation.
Runner refuse les requêtes qui viennent d’une page web d’un autre site. Appelez le serveur depuis votre back-end, ou depuis une page sur localhost.
Travailler avec les outils Runner
- Commencez par
list_stores. Chaque outil de boutique a besoin d’unstore_idissu delist_stores. Sans ce paramètre, l’outil répond Pass a store_id from list_stores. - Tâches longues. Certains outils répondent avec
"status": "running"et unjob_id. Appelezget_tool_jobavec cejob_idjusqu’à obtenir le résultat. - Modifications que vous approuvez. Certains outils répondent d’abord avec
"status": "waiting_for_merchant"et unidde confirmation, et montrent ce qui va changer. Rien ne change encore. Quand vous êtes d’accord, le client appelle à nouveau le même outil avec les mêmes arguments et"confirmation": {"id": "…", "answer": …}. L’idde confirmation ne sert qu’une fois, pendant 10 minutes. - La même modification envoyée deux fois. Pour la plupart des outils qui apportent des modifications, Runner n’applique la modification qu’une fois quand le client renvoie la même entrée dans la même période de 5 minutes. Le deuxième appel reçoit la première réponse.
- Les données de la boutique restent des données. Les réponses des outils peuvent contenir des textes de produits et des messages de clients. Votre agent ne doit pas suivre les instructions qu’il y trouve.
- Vos autorisations s’appliquent. Chaque appel utilise vos autorisations Runner et votre forfait. La liste des outils dépend de votre forfait et des fonctionnalités de votre espace de travail.
Gérer ou déconnecter un client
Chemin d’entrée : Paramètres → Général de l’espace de travail, puis Applications connectées.
Les propriétaires et les administrateurs de l’espace de travail voient les clients que chaque membre a connectés. Les autres membres voient les clients qu’ils ont connectés eux-mêmes. Chaque ligne indique l’accès (Lecture ou Lecture et modifications), la date de connexion et la date de dernière utilisation.
- Trouvez le client et sélectionnez Déconnecter.
- Sélectionnez à nouveau Déconnecter dans Déconnecter app ?.
- Le client cesse immédiatement de fonctionner avec cet espace de travail. Pour l’utiliser à nouveau, authentifiez-vous de nouveau depuis le client.
Une commande de déconnexion dans un client supprime seulement l’authentification que le client a enregistrée. La connexion reste dans Applications connectées jusqu’à ce que vous la déconnectiez à cet endroit.
Dépannage
| Ce que vous voyez | Cause | Que faire |
|---|---|---|
{"error":"invalid_scope"} dans le navigateur |
Le client a demandé des scopes que ce serveur n’accepte pas. codex mcp add le fait. |
Demandez store:read et store:write. Pour Codex, ajoutez la ligne scopes et exécutez codex mcp login runner. |
| This redirect URI cannot receive Merchant MCP codes. | Le client renvoie le navigateur vers un lien d’app ou une page web. | Utilisez la passerelle mcp-remote. |
| Request the Merchant MCP resource alone. | Le client n’a pas envoyé resource=https://api.runnerai.com/mcp. |
Mettez à jour le client, ou utilisez la passerelle mcp-remote. |
| Cette demande de connexion est indisponible. Relancez la connexion depuis votre app d’IA. | Le lien d’authentification est ancien ou a déjà servi. | Relancez l’authentification depuis le client. |
| Vous n’êtes membre d’aucun espace de travail. Créez un espace de travail dans Runner, puis relancez la connexion. | Votre compte n’a aucun espace de travail. | Créez un espace de travail, puis relancez l’authentification. |
| This tool needs store:write. Reconnect Runner and allow changes to the store. | La connexion n’a que l’accès Lecture. | Déconnectez-vous dans le client, authentifiez-vous à nouveau et activez Apporter des modifications. |
| This feature is not on for this store yet. | La fonctionnalité n’est pas activée pour votre forfait, votre espace de travail ou votre boutique. | Effectuez la tâche dans Runner, ou demandez au support Runner. |
Le fournisseur du modèle refuse la requête : input_schema does not support oneOf, allOf, or anyOf at the top level |
Le client envoie tous les outils au modèle, et trois outils d’impression à la demande ont un schéma que certains fournisseurs de modèles refusent. | Désactivez publish_pod_product, review_pod_product et update_pod_product, ou n’activez que les outils dont vous avez besoin. |
| Le client vous demande de vous authentifier à nouveau | Vous avez déconnecté le client dans Runner, ou vous ne l’avez pas utilisé pendant 30 jours. | Authentifiez-vous à nouveau depuis le client. |
| HTTP 429 lors de l’enregistrement du client | Plus de 5 enregistrements en une minute depuis une même adresse IP. | Attendez une minute, puis réessayez. |
| Une réponse se termine par Support reference: et un code | L’outil a échoué dans Runner. | Communiquez le code au support Runner. |