Connectez Claude, Cursor, VS Code ou n'importe quel client MCP au moteur Qurak.
Un assistant qui devine l'arithmétique se trompe juste assez souvent pour que cela compte. Connecté ici, il confie les mathématiques à un vrai moteur et renvoie une réponse calculée plutôt qu'une réponse plausible — analyse, équations différentielles, algèbre, statistiques, tracés.
La connexion dit à votre agent la vérité sur elle-même avant de dépenser le moindre calcul : check_support répond si une fonction existe, get_capabilities rapporte les limites réellement en vigueur, et plan_computation transforme un objectif en méthode de travail avec les recettes vérifiées jointes. Un agent continue d'appeler un outil qui dit d'avance ce qu'il ne sait pas faire.
C'est ouvert sur tous les forfaits, y compris le gratuit, et toute la connexion tient en une URL. Ce qu'achète un forfait payant, c'est du budget de calcul et du débit — jamais l'accès.
| URL | Transport | Usage |
|---|---|---|
| https://qurak.com/mcp | Streamable HTTP | Préféré. Utilisez-le sauf si votre client ne peut pas. |
| https://qurak.com/mcp/sse | HTTP+SSE (2024-11-05) | Déprécié, pour les anciens clients seulement. |
Le transport est sans état : il n'émet aucun id de session de protocole, donc GET et DELETE sur /mcp répondent 405 à dessein. C'est distinct du session_id facultatif que prennent les outils d'évaluation — voir Outils — qui est un argument d'outil que vous choisissez, pas quelque chose que le transport distribue.
La plupart des clients gèrent cela pour vous. Choisissez votre client ci-dessous et suivez le seul chemin qu'il montre — vous n'avez pas besoin des deux.
| Méthode | Fonctionnement | À utiliser quand |
|---|---|---|
| OAuth | Le client ouvre votre navigateur, vous vous connectez à Qurak et approuvez la demande. Aucun identifiant n'est jamais copié à la main. | Votre client ne demande qu'une URL — Claude Desktop et claude.ai n'ont nulle part où mettre un token. |
| Token Bearer | Vous créez un token et le placez dans un en-tête Authorization dans la configuration du client. | Votre client prend en charge les en-têtes et vous voulez un identifiant fixe — utile pour la CI ou une machine partagée. |
| Portée | Accorde |
|---|---|
| qurak:evaluate | Exécuter des expressions et produire des tracés sur votre compte. Dépense le budget de calcul et la limite de débit de votre forfait. |
| qurak:docs | Lire la référence des fonctions. Ne dépense aucun calcul ; une connexion docs-seulement peut donc être accordée largement sans risque. |
Sous le capot, c'est un flux OAuth 2.1 standard avec PKCE, découvrable à /.well-known/oauth-protected-resource et /.well-known/oauth-authorization-server (également servi sous /.well-known/openid-configuration, que certains clients essaient d'abord). Un client peut s'identifier de trois façons — un document de métadonnées de client ID, l'enregistrement dynamique, ou un client ID et un secret que vous enregistrez ci-dessous — et les clients qui prennent en charge l'une d'elles la trouveront d'eux-mêmes.
claude mcp add --transport http qurak https://qurak.com/mcp \
--header "Authorization: Bearer qk_..."<code>type</code> est obligatoire. Une entrée avec une <code>url</code> et sans <code>type</code> est lue comme un serveur stdio et silencieusement ignorée.
{
"mcpServers": {
"qurak": {
"type": "http",
"url": "https://qurak.com/mcp",
"headers": { "Authorization": "Bearer qk_..." }
}
}
}Omettez l'option <code>--header</code> pour utiliser OAuth à la place : Claude Code ouvre un navigateur à la première connexion.
Ce chemin est OAuth uniquement, par nécessité — il n'y a aucun champ pour un token. Les mêmes étapes s'appliquent aux connecteurs claude.ai.
Cursor préfère OAuth dès qu'un serveur publie des métadonnées de découverte, ce que fait celui-ci — un bloc <code>headers</code> dans sa configuration sera donc probablement ignoré. Attendez-vous au flux navigateur, et laissez-le se dérouler.
La clé est <code>servers</code>, pas <code>mcpServers</code>.
{
"servers": {
"qurak": {
"type": "http",
"url": "https://qurak.com/mcp",
"headers": { "Authorization": "Bearer ${input:qurak-token}" }
}
},
"inputs": [
{ "id": "qurak-token", "type": "promptString",
"description": "Qurak Bearer token", "password": true }
]
}Utiliser <code>inputs</code> garde le token hors du fichier, la configuration peut donc être commitée sans risque.
Si votre client ne parle que l'ancien transport HTTP+SSE, pointez-le plutôt vers <code>https://qurak.com/mcp/sse</code>.
https://qurak.com/mcp| Outil | Ce qu'il fait | Portée |
|---|---|---|
| evaluate | Évaluer une expression Qurak (syntaxe compatible .wl). Renvoie le résultat formaté, avec le temps pris. Facultatif : session_id, format (Standard, TeX, JSON) et timeout_ms. | qurak:evaluate |
| plot | Exécuter une expression de tracé et renvoyer le graphique en image PNG. Prend les mêmes session_id et timeout_ms. | qurak:evaluate |
| clear_session | Supprimer une session d'évaluation et tout ce qui y est défini. | qurak:evaluate |
| search_docs | Rechercher dans la référence des fonctions par nom ou description, ainsi que dans les recettes de tâches. Facultatif : kind (function, task, any); chaque résultat dit ce qu'il est. | qurak:docs |
| get_task | Une recette de tâche complète : ses étapes dans l'ordre, et la sortie que chacune a produite lors de sa vérification sur ce moteur. Les étapes s'exécutent en séquence dans une même session. | qurak:docs |
| get_symbol | Tout ce qui est connu d'un symbole : disponibilité, formes, options, exemples. | qurak:docs |
| check_support | Vérifier si des fonctions précises sont disponibles, avant de les utiliser. | qurak:docs |
| plan_computation | Ancre un objectif avant de calculer : un verdict de disponibilité pour chaque fonction d'un brouillon d'expression, les recettes vérifiées les plus proches, et une recommandation d'aiguillage dans les chiffres de budget propres à cette connexion. Ne dépense aucun calcul. | qurak:docs |
| evaluate_async | Soumet une expression comme tâche de fond avec un budget de plusieurs minutes, selon le forfait, pour le travail que le budget interactif ne peut contenir. Renvoie immédiatement un id de tâche ; les tâches sont un quota journalier. | qurak:evaluate |
| get_job list_jobs cancel_job | Le statut d'une tâche et, une fois finie, son résultat complet (passez wait_ms et un seul appel attend en long-poll au lieu de dizaines d'interrogations serrées) ; les tâches récentes du compte ; l'annulation. Interroger est gratuit. | qurak:evaluate |
| simulate_circuit | Simule un circuit quantique - vecteur d'état idéal, jeu de portes standard - et renvoie son histogramme de mesures. S'exécute comme tâche de fond, avec un plafond de qubits qui suit le forfait. | qurak:evaluate |
| save_guide get_guide list_guides delete_guide | Des notes durables sur le compte : enregistrez les définitions et hypothèses d'un modèle de travail sous un nom, et relisez-les dans une conversation ultérieure. La lecture demande la portée docs ; l'écriture demande evaluate. | qurak:docs qurak:evaluate |
| get_capabilities | Les limites en vigueur pour cette connexion, en chiffres : plafond du budget de calcul, quota par minute et ce qu'il en reste, plus grand tracé stocké, portées accordées, bornes de session. Aucun argument. | toutes |
| WolframLanguageEvaluator | Alias hérité de evaluate, conservé pour les clients qui attendent le nom d'outil AgentTools. Mêmes arguments, même comportement. | qurak:evaluate |
evaluate et plot sont sans état sauf si vous passez un session_id. Avec, les définitions se transmettent — a = 10 sur un appel, puis a + 5 sur le suivant avec le même id, s'évalue en 15. Les sessions sont privées à votre compte : deux comptes utilisant le même id ne voient jamais les variables l'un de l'autre. Elles sont supprimées après 30 minutes d'inactivité, quand une évaluation y dépasse son délai (le moteur ne peut pas être interrompu, la session part donc avec), ou quand vous appelez clear_session.
Le budget de calcul et la limite de débit suivent votre forfait — voir Offres, ou appelez get_capabilities depuis la connexion elle-même pour les chiffres en vigueur. Dépasser l'un ou l'autre revient comme un résultat d'outil avec isError défini, pas comme une erreur de transport, pour que votre agent puisse lire le message et s'ajuster. Il en va de même d'une erreur de syntaxe, d'un délai dépassé ou d'un échec dans le moteur : ce sont des réponses, et la connexion reste ouverte.
check_support vous dit ce qui est disponible sans dépenser une évaluation. timeout_ms permet à un appel de demander un budget plus court que celui du forfait — utile pour échouer vite sur une expression que vous attendez bon marché. Il est plafonné au budget du forfait, il ne peut donc pas acheter plus de temps que vous n'en avez. Les fonctions de fichiers, de processus et de réseau sont bloquées.