Verbind Claude, Cursor, VS Code of elke MCP-client met de Qurak-engine.
Een assistent die rekenwerk gokt, zit nét vaak genoeg fout om ertoe te doen. Hier verbonden geeft hij de wiskunde aan een echte engine en komt hij terug met een berekend antwoord in plaats van een plausibel antwoord — analyse, differentiaalvergelijkingen, algebra, statistiek, plots.
De verbinding vertelt je agent de waarheid over zichzelf voordat er rekentijd wordt besteed: check_support beantwoordt of een functie bestaat, get_capabilities rapporteert de limieten die werkelijk gelden, en plan_computation maakt van een doel een werkende methode met geverifieerde recepten erbij. Een agent blijft een tool aanroepen dat vooraf zegt wat het niet kan.
Het staat open op elk abonnement, ook het gratis, en de hele verbinding is één URL. Wat een betaald abonnement koopt is rekenbudget en een hogere limiet — nooit de toegang.
| URL | Transport | Gebruik |
|---|---|---|
| https://qurak.com/mcp | Streamable HTTP | Voorkeur. Gebruik deze, tenzij je client dat niet kan. |
| https://qurak.com/mcp/sse | HTTP+SSE (2024-11-05) | Verouderd, alleen voor oudere clients. |
Het transport is stateless: het geeft geen protocol-sessie-id uit, dus GET en DELETE op /mcp antwoorden 405 — bewust zo. Dat staat los van de optionele session_id die de evaluerende tools aannemen — zie Tools — dat is een toolargument dat jij kiest, niet iets dat het transport uitdeelt.
De meeste clients regelen dit voor je. Kies hieronder je client en volg het ene pad dat hij toont — je hebt niet beide nodig.
| Methode | Hoe het werkt | Gebruik het wanneer |
|---|---|---|
| OAuth | De client opent je browser, je logt in bij Qurak en keurt het verzoek goed. Er wordt nooit een credential met de hand gekopieerd. | Je client vraagt alleen om een URL — Claude Desktop en claude.ai hebben nergens plek voor een token. |
| Bearer-token | Je maakt een token aan en zet het in een Authorization -header in de configuratie van de client. | Je client ondersteunt headers en je wilt een vaste credential — handig voor CI of een gedeelde machine. |
| Scope | Geeft |
|---|---|
| qurak:evaluate | Expressies uitvoeren en plots maken op je account. Verbruikt het rekenbudget en de ratelimiet van je abonnement. |
| qurak:docs | De functiereferentie lezen. Kost geen rekentijd, dus een docs-only-verbinding kun je gerust breed toekennen. |
Onder de motorkap is dit een standaard OAuth 2.1-flow met PKCE, vindbaar op /.well-known/oauth-protected-resource en /.well-known/oauth-authorization-server (ook beantwoord onder /.well-known/openid-configuration, dat sommige clients eerst proberen). Een client kan zich op drie manieren identificeren — een client-ID-metadatadocument, dynamische registratie, of een client-ID en secret die je hieronder registreert — en clients die een ervan ondersteunen vinden het vanzelf.
claude mcp add --transport http qurak https://qurak.com/mcp \
--header "Authorization: Bearer qk_..."<code>type</code> is verplicht. Een item met een <code>url</code> en zonder <code>type</code> wordt gelezen als stdio-server en stilzwijgend overgeslagen.
{
"mcpServers": {
"qurak": {
"type": "http",
"url": "https://qurak.com/mcp",
"headers": { "Authorization": "Bearer qk_..." }
}
}
}Laat de <code>--header</code>-vlag weg om in plaats daarvan OAuth te gebruiken: Claude Code opent bij de eerste verbinding een browser.
Dit pad is noodgedwongen OAuth-only — er is geen veld voor een token. Dezelfde stappen gelden voor claude.ai-connectors.
Cursor geeft de voorkeur aan OAuth zodra een server discovery-metadata publiceert, en dat doet deze — een <code>headers</code>-blok in zijn configuratie wordt dus waarschijnlijk genegeerd. Verwacht de browserflow en laat hem lopen.
De sleutel is <code>servers</code>, niet <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 }
]
}Met <code>inputs</code> blijft het token buiten het bestand, dus de configuratie kan veilig worden gecommit.
Als je client alleen het oudere HTTP+SSE-transport spreekt, wijs hem dan in plaats daarvan naar <code>https://qurak.com/mcp/sse</code>.
https://qurak.com/mcp| Tool | Wat het doet | Scope |
|---|---|---|
| evaluate | Een Qurak-expressie evalueren (.wl-compatibele syntaxis). Geeft het geformatteerde resultaat terug, met de tijd die het kostte. Optionele session_id, format (Standard, TeX, JSON) en timeout_ms. | qurak:evaluate |
| plot | Een plotexpressie uitvoeren en het diagram als PNG-afbeelding teruggeven. Neemt dezelfde session_id en timeout_ms. | qurak:evaluate |
| clear_session | Een evaluatiesessie weggooien met alles wat erin gedefinieerd is. | qurak:evaluate |
| search_docs | Doorzoek de functiereferentie op naam of beschrijving, en de taakrecepten ernaast. Optionele kind (function, task, any); elk resultaat zegt welke het is. | qurak:docs |
| get_task | Eén taakrecept in zijn geheel: de stappen op volgorde, en de uitvoer die elk opleverde toen het tegen deze engine werd geverifieerd. De stappen lopen na elkaar in één sessie. | qurak:docs |
| get_symbol | Alles wat over één symbool bekend is: beschikbaarheid, vormen, opties, voorbeelden. | qurak:docs |
| check_support | Controleren of specifieke functies beschikbaar zijn, voordat je ze gebruikt. | qurak:docs |
| plan_computation | Verankert een doel vóór het rekenen: een beschikbaarheidsoordeel voor elke functie in een conceptexpressie, de dichtstbijzijnde geverifieerde recepten, en een routeringsadvies in de eigen budgetcijfers van deze verbinding. Kost geen rekentijd. | qurak:docs |
| evaluate_async | Dient een expressie in als achtergrondtaak met een minutenlang, abonnementsafhankelijk budget, voor werk dat niet in het interactieve budget past. Geeft direct een taak-id terug; taken zijn een dagelijks tegoed. | qurak:evaluate |
| get_job list_jobs cancel_job | De status van een taak en, zodra hij klaar is, het volledige resultaat (geef wait_ms mee en één aanroep long-pollt in plaats van tientallen die strak pollen); de recente taken op het account; annulering. Pollen is gratis. | qurak:evaluate |
| simulate_circuit | Simuleert een kwantumcircuit - ideale statevector, standaard gate-set - en geeft het histogram van metingen terug. Draait als achtergrondtaak, met een qubitplafond dat het abonnement volgt. | qurak:evaluate |
| save_guide get_guide list_guides delete_guide | Blijvende notities op het account: sla de definities en aannames van een werkend model op onder een naam, en lees ze terug in een later gesprek. Lezen vereist de docs-scope; schrijven vereist evaluate. | qurak:docs qurak:evaluate |
| get_capabilities | De limieten die voor deze verbinding gelden, als getallen: plafond van het rekenbudget, tegoed per minuut en wat daarvan over is, grootste opgeslagen plot, toegekende scopes, sessiegrenzen. Geen argumenten. | elke |
| WolframLanguageEvaluator | Legacy-alias voor evaluate, behouden voor clients die de AgentTools-toolnaam verwachten. Dezelfde argumenten, hetzelfde gedrag. | qurak:evaluate |
evaluate en plot zijn stateless tenzij je een session_idmeegeeft. Met een sessie blijven definities behouden — a = 10 in één aanroep, dan a + 5 in de volgende met dezelfde id, evalueert tot 15. Sessies zijn privé voor je account, dus twee accounts met dezelfde id zien nooit elkaars variabelen. Ze worden weggegooid na 30 minuten inactiviteit, wanneer een evaluatie erin een time-out krijgt (de engine is niet te onderbreken, dus de sessie gaat mee), of wanneer je dit aanroept: clear_session.
Rekenbudget en ratelimiet volgen je abonnement — zie Abonnementen, of roep get_capabilities aan vanuit de verbinding zelf voor de geldende cijfers. Het overschrijden van een van beide komt terug als toolresultaat met isError gezet, niet als transportfout, zodat je agent het bericht kan lezen en zich kan aanpassen. Hetzelfde geldt voor een syntaxfout, een time-out of een fout in de engine: het zijn antwoorden, en de verbinding blijft open.
check_support vertelt je wat beschikbaar is zonder een evaluatie te besteden. timeout_ms laat een aanroep om een korter budget vragen dan het abonnement toestaat — handig om snel te falen op een expressie die je goedkoop verwacht. Het wordt begrensd op het budget van het abonnement zelf, dus het kan geen extra tijd kopen. Bestands-, proces- en netwerkfuncties zijn geblokkeerd.