Qurak

خادم MCP

صِل Claude أو Cursor أو VS Code أو أي عميل MCP بمحرك Qurak.

ما الذي يكسبه مساعدك من الاتصال

المساعد الذي يخمّن الحساب يخطئ بقدرٍ يكفي لأن يهم. موصولًا هنا، يسلّم الرياضيات إلى محرك حقيقي ويعيد إجابة محسوبة بدل إجابة تبدو معقولة — التفاضل والتكامل، والمعادلات التفاضلية، والجبر، والإحصاء، والمخططات.

يخبر الاتصال وكيلك الحقيقة عن نفسه قبل إنفاق أي حوسبة: check_support يجيب عمّا إذا كانت دالة موجودة، وget_capabilities يبلّغ عن الحدود السارية فعلًا، وplan_computation يحوّل هدفًا إلى طريقة عمل مع وصفات متحقَّق منها مرفقة. والوكيل يواصل استدعاء أداة تقول مسبقًا ما لا تستطيع فعله.

وهو مفتوح في كل الخطط، بما فيها المجانية، والاتصال كله عنوان URL واحد. ما تشتريه الخطة المدفوعة هو ميزانية الحوسبة والمعدّل — لا الوصول أبدًا.

إنشاء رمز   تسجيل الدخول

نقاط النهاية

URLوسيلة النقلالاستخدام
https://qurak.com/mcpStreamable HTTPالمفضَّل. استخدمه ما لم يعجز عميلك عنه.
https://qurak.com/mcp/sseHTTP+SSE (2024-11-05)مهمل، للعملاء الأقدم فقط.

وسيلة النقل عديمة الحالة: لا تصدر معرّف جلسة للبروتوكول، لذا فإن GET و DELETE على /mcp تجيب بـ 405 عمدًا. وهذا منفصل عن session_id الاختياري الذي تقبله أدوات التقييم — انظر الأدوات — وهو معطى أداة تختاره أنت، لا شيء توزعه وسيلة النقل.

طريقتان لتسجيل الدخول

معظم العملاء يتولّون هذا عنك. اختر عميلك أدناه واتبع المسار الوحيد الذي يعرضه — لست بحاجة إلى كليهما.

الطريقةكيف يعملاستخدمه عندما
OAuthيفتح العميل متصفحك، فتسجّل الدخول إلى Qurak وتوافق على الطلب. لا يُنسخ أي اعتماد يدويًا.عميلك لا يطلب سوى عنوان URL — ليس في Claude Desktop وclaude.ai مكان لوضع رمز.
رمز Bearerتنشئ رمزًا وتضعه في ترويسة Authorization في إعدادات العميل.عميلك يدعم الترويسات وتريد بيانات اعتماد ثابتة — مفيد في CI أو على جهاز مشترك.

ما يطلبه OAuth

النطاقيمنح
qurak:evaluateتشغيل التعبيرات وإنتاج المخططات على حسابك. ينفق ميزانية الحوسبة وحد المعدل في خطتك.
qurak:docsقراءة مرجع الدوال. لا ينفق أي حوسبة، لذا فاتصال الوثائق فقط آمنٌ منحه بسخاء.

خلف الكواليس هذا تدفق OAuth 2.1 قياسي مع PKCE، قابل للاكتشاف عبر /.well-known/oauth-protected-resource و /.well-known/oauth-authorization-server (ويُجاب عنه أيضًا تحت /.well-known/openid-configuration، وهو ما يجرّبه بعض العملاء أولًا). يمكن للعميل تعريف نفسه بثلاث طرق — وثيقة بيانات معرّف العميل، أو التسجيل الديناميكي، أو معرّف عميل وسرّ تسجّلهما أدناه — والعملاء الداعمون لأيٍّ منها سيجدونها بأنفسهم.

إعداد العميل

سطر الأوامر
claude mcp add --transport http qurak https://qurak.com/mcp \
  --header "Authorization: Bearer qk_..."

<code>type</code> مطلوب. المدخلة التي فيها <code>url</code> بلا <code>type</code> تُقرأ كخادم stdio وتُتجاهل بصمت.

.mcp.json
{
  "mcpServers": {
    "qurak": {
      "type": "http",
      "url": "https://qurak.com/mcp",
      "headers": { "Authorization": "Bearer qk_..." }
    }
  }
}

احذف علم <code>--header</code> لاستخدام OAuth بدلًا منه: يفتح Claude Code متصفحًا عند أول اتصال.

  1. افتح Settings ثم Connectors.
  2. اختر Add custom connector.
  3. الصق <code>https://qurak.com/mcp</code> وأكِّد.
  4. تُفتح نافذة متصفح. سجّل الدخول إلى Qurak ووافق على الطلب.

هذا المسار OAuth فقط بالضرورة — لا حقل فيه لرمز. الخطوات نفسها تنطبق على موصلات claude.ai.

  1. افتح Settings ثم MCP.
  2. أضف خادمًا بالعنوان <code>https://qurak.com/mcp</code>.
  3. وافق على طلب المتصفح.

يفضّل Cursor استخدام OAuth متى نشر الخادم بيانات الاكتشاف، وهذا الخادم ينشرها — لذا من المرجح تجاهل كتلة <code>headers</code> في إعداداته. توقّع مسار المتصفح ودعه يكتمل.

المفتاح هو <code>servers</code> لا <code>mcpServers</code>.

.vscode/mcp.json
{
  "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 }
  ]
}

استخدام <code>inputs</code> يبقي الرمز خارج الملف، فيكون الإعداد آمنًا للإيداع.

إن كان عميلك لا يتحدث إلا وسيلة النقل الأقدم HTTP+SSE، فوجّهه إلى <code>https://qurak.com/mcp/sse</code> بدلًا من ذلك.

URL
https://qurak.com/mcp

الأدوات

الأداةما تفعلهالنطاق
evaluateتقييم تعبير Qurak (بصياغة متوافقة مع .wl). يعيد النتيجة منسّقة مع الوقت الذي استغرقته. اختياريًا session_id, format (Standard, TeX, JSON) و timeout_ms.qurak:evaluate
plotتشغيل تعبير رسم وإعادة المخطط صورة PNG. يقبل نفس session_id و timeout_ms.qurak:evaluate
clear_sessionالتخلص من جلسة تقييم وكل ما عُرِّف فيها.qurak:evaluate
search_docsالبحث في مرجع الدوال بالاسم أو الوصف، وفي وصفات المهام إلى جانبه. اختياريًا kind (function, task, any)؛ وكل نتيجة تقول أيّهما هي.qurak:docs
get_taskوصفة مهمة واحدة كاملة: خطواتها بالترتيب، والمخرج الذي أنتجته كل خطوة عند التحقق منها على هذا المحرك. تُشغَّل الخطوات تباعًا في جلسة واحدة.qurak:docs
get_symbolكل ما يُعرف عن رمز واحد: التوفر والصيغ والخيارات والأمثلة.qurak:docs
check_supportتحقّق من توفر دوال بعينها قبل استخدامها.qurak:docs
plan_computationيؤسس الهدف قبل الحساب: أحكام دعم لكل دالة في مسودة التعبير، وأقرب الوصفات المتحقَّق منها، وتوصية توجيه بأرقام ميزانية هذا الاتصال نفسها. لا ينفق أي حوسبة.qurak:docs
evaluate_asyncيرسل تعبيرًا كمهمة خلفية بميزانية تُقاس بالدقائق وتتبع الخطة، للعمل الذي لا تتسع له الميزانية التفاعلية. يعيد معرّف مهمة فورًا؛ والمهام مخصص يومي.qurak:evaluate
get_job
list_jobs
cancel_job
حالة مهمة، ونتيجتها الكاملة متى انتهت (مرّر wait_ms فيطيل استدعاء واحد الانتظار بدل عشرات الاستدعاءات المتلاحقة)؛ والمهام الأخيرة على الحساب؛ والإلغاء. الاستعلام مجاني.qurak:evaluate
simulate_circuitيحاكي دارة كمومية - متجه حالة مثالي ومجموعة بوابات قياسية - ويعيد مدرّج قياساتها. تُشغَّل المحاكاة كمهمة خلفية، بسقف كيوبتات يتبع الخطة.qurak:evaluate
save_guide
get_guide
list_guides
delete_guide
ملاحظات دائمة على الحساب: احفظ تعريفات نموذج عمل وافتراضاته تحت اسم، واقرأها لاحقًا في محادثة أخرى. القراءة تحتاج إلى نطاق docs؛ والكتابة إلى evaluate.qurak:docs
qurak:evaluate
get_capabilitiesالحدود السارية لهذا الاتصال، أرقامًا: سقف ميزانية الحوسبة، والمخصص في الدقيقة وما تبقى منه، وأكبر مخطط يُخزَّن، والنطاقات الممنوحة، وحدود الجلسات. بلا معطيات.أي
WolframLanguageEvaluatorاسم بديل قديم لـ evaluate، أُبقي للعملاء الذين يتوقعون اسم أداة AgentTools. المعطيات نفسها والسلوك نفسه.qurak:evaluate

حفظ الحالة بين الاستدعاءات

evaluate و plot عديمة الحالة ما لم تمرّر session_id. معها تنتقل التعريفات — a = 10 في استدعاء، ثم a + 5 في التالي بالمعرّف نفسه، يعطي 15. الجلسات خاصة بحسابك، فحسابان يستخدمان المعرّف نفسه لا يريان متغيرات بعضهما أبدًا. تُسقَط بعد 30 دقيقة خمول، أو عندما تنتهي مهلة تقييم فيها (لا يمكن مقاطعة المحرك، فتذهب الجلسة معه)، أو عندما تستدعي clear_session.

الحدود والأخطاء

ميزانية الحوسبة وحد المعدل يتبعان خطتك — انظر الخطط، أو استدعِ get_capabilities من الاتصال نفسه للأرقام السارية. تجاوز أيٍّ منهما يعود كنتيجة أداة فيها isError مضبوطًا، لا كخطأ نقل، ليتمكن وكيلك من قراءة الرسالة والتكيّف. وينطبق الأمر نفسه على خطأ الصياغة والمهلة والفشل داخل المحرك: كلها إجابات، ويبقى الاتصال مفتوحًا.

check_support يخبرك بما هو متاح دون إنفاق تقييم. timeout_ms يتيح للاستدعاء طلب ميزانية أقصر مما تسمح به الخطة — مفيد للفشل السريع في تعبير تتوقعه رخيصًا. وهو مقيّد بميزانية الخطة نفسها، فلا يشتري وقتًا أكثر مما لديك. دوال الملفات والعمليات والشبكة محظورة.