خادم MCP لـ QoreChain (@qorechain/mcp)
يمنح خادم MCP لـ QoreChain وكلاء الذكاء الاصطناعي وأدوات المطورين وصول قراءة إلى QoreChain عبر Model Context Protocol: الكتل والمعاملات والحسابات والمدققين وطبقات التخزين (staking tiers) وحالة التوقيع الهجين secp256k1 مع ML-DSA-87 (FIPS 204) وقراءات عقود EVM والمحاكاة وتقديرات الرسوم والتحويلات غير الموقّعة التي يوقّعها مالك الحساب في محفظته. وهو موجّه للمطورين الذين يربطون عميلًا أو وكيلًا يدعم MCP بـ QoreChain، وللفرق التي تريد عرضًا للسلسلة قابلًا للبرمجة وللقراءة فقط بمخرجات ثابتة.
لا يوقّع الخادم أبدًا، ولا يحتفظ بمفاتيح، ولا يبثّ معاملة. يعمل على جهازك عبر stdio، أو كخادم Streamable HTTP تستضيفه أنت أو تستضيفه QoreChain. الإصدار 0.1.0، نُشر في 27 أكتوبر 2026، بترخيص Apache-2.0. وتعمل أداة سطر الأوامر المقابلة qore بالأدوات نفسها من الطرفية.
الابتكارات
- فحص للتوقيع الهجين، لا مجرد وسم. تأخذ
get_pq_statusتجزئة معاملة، وتتأكد من أن جسم المعاملة يحمل طبقة/qorechain.pqc.v1.PQCHybridSignatureواحدة بالضبط، وتتحقق محليًا من طبقة ML-DSA-87 هذه بواسطة QoreSign مقابل المفتاح الذي سجّله الموقّع على السلسلة، مجرّبةً sign-bytes v1 وv2. والجواب هوverified: trueأوfalseمع السبب، وليس تخمينًا من نوع المعاملة. - تحويلات غير موقّعة تحمل الرسم الحقيقي. تقرأ
prepare_transferرقم حساب المرسل وتسلسله ومفتاحه العام، وتحاكي التحويل بطبقة ML-DSA-87 نائبة بالحجم الصحيح حتى يشمل الغاز الطبقة التي تضيفها المحفظة عند التوقيع، وتعيد SignDoc وملخصًا مقروءًا وفحوصات. ولا ينقص سوى توقيع المالك. - محاكاة برفض مفكوك الترميز. تعيد
simulate_txوestimate_feeالغاز المستهلك وحدًّا مقترحًا للغاز وتغيّر الرصيد لكل عنوان، وعندما سترفض الشبكة المعاملة تعيد رفضًا مفكوك الترميز بدلًا من نص خطأ خام. - مخطط واحد للخادم ولأداة سطر الأوامر. كل أمر في
qoreيشغّل أداة MCP واحدة، وتطبعqore --jsonبالضبط ملف JSON الذي تعيده الأداة. وتقدّم حزمة Python أسماء الأدوات نفسها ومخططات الإدخال والإخراج نفسها ورموز الأخطاء نفسها؛ وكلتاهما مختبرتان مقابل إجابات السلسلة المسجّلة نفسها. - تُرفض الأسرار قبل أن يغادر أي شيء الجهاز. الإدخال الذي يشبه عبارة استرداد (12 كلمة BIP-39 متتالية أو أكثر) أو مفتاحًا خاصًا مجرّدًا من 32 بايت يُرفض بالرمز
INVALID_INPUTقبل إجراء أي طلب، وتطلب رسالة الخطأ من المستخدم معاملة ذلك السر على أنه مكشوف. - استجابات تُبنى حقلًا حقلًا. كل مخرج يُجمَّع من حقول مسمّاة في جواب السلسلة. ولا تصل أجسام أخطاء المنبع ولا تتبّعات المكدس إلى العميل؛ وتُحوَّل الإخفاقات إلى سبعة رموز أخطاء ثابتة.
فيمَ يُستخدم
- سؤال مساعد برمجة عن حالة السلسلة. يضيف مطوّر الخادم إلى محرّر يدعم MCP ويسأل "ما آخر كتلة على الشبكة الرئيسية؟" أو "اعرض أرصدة qor1... على الشبكة التجريبية". تجيب
get_blockوget_address_infoمن النقاط العامة، مع روابط المستكشف. - التحقق من أن معاملة حملت التوقيع الهجين. مطوّر محفظة أو SDK بثّ للتو معاملة ويريد التأكد من أنها تحمل طبقة ML-DSA-87 واحدة بالضبط وأن الطبقة تتحقق مقابل المفتاح المسجّل. تبلّغ
get_pq_status(أوqore pq status <hash>) عن فئة التوقيع ونتيجة التحقق المحلي. - تجهيز تحويل ليوقّعه المستخدم. يحتاج مساعد مبني على QoreChain إلى مساعدة مستخدم في إرسال QOR دون لمس المفاتيح. تعيد
prepare_transferSignDoc غير موقّع مع ملخص مقروء وفحوصات وتحذيرات (منها تحذير للشبكة الرئيسية)، وتعطيestimate_feeالرسم. ويوقّع المستخدم في محفظته. - تتبّع أسباب رفض معاملة. لدى فريق خلفية معاملة مرمَّزة ترفضها الشبكة. تعيد
simulate_txالغاز وتغيّرات الرصيد لكل عنوان ورفضًا مفكوك الترميز، ولا تبثّ شيئًا. - قراءة العقود من سكربت أو مهمة CI. يفحص فريق dApp رصيد رمز أو دالة عرض في عقد بالأمر
qore read-contract --to 0x... --function "balanceOf(address)" --arg 0x... --returns uint256 --jsonويحلّل JSON بـjq. - لوحات المدققين والتخزين. يسرد محلّل المدققين المرتبطين (bonded) مع حصتهم من قوة التصويت وعمولتهم (
get_validators) ويقرأ معاملات طبقات التخزين وأقفال حامل واحد (get_staking_tiers). - تشغيل نقطة نهاية للفريق. تشغّل شركة
qorechain-mcp serveخلف وكيلها العكسي الخاص، مع مفاتيح API وحدود معدل، فتشترك عدة أدوات داخلية في نقطة MCP واحدة تشير إلى عقدها الخاصة.
كيف يعمل
- الخادم قارئ رفيع عديم الحالة فوق نقاط QoreChain العامة (REST وRPC الإجماع وEVM JSON-RPC). كل استدعاء إلى المنبع هو طلب واحد بمهلة 10 ثوانٍ وحد استجابة 4 MiB وبلا إعادة محاولة.
- تُبنى الاستجابات حقلًا حقلًا من جواب السلسلة. ولا تصل أجسام أخطاء المنبع ولا تتبّعات المكدس ولا رسائل المكتبات إلى العميل؛ والإخفاق غير المتوقع يصبح
INTERNAL_ERROR. وتعود الأخطاء كنتيجة أداة معisError: trueوجسم JSON. - تعمل فحوصات التوقيع الهجين محليًا بواسطة QoreSign: يجلب الخادم المعاملة ومفتاح ML-DSA-87 المسجّل للموقّع، ويعيد بناء sign-bytes (v1 أو v2) ثم يتحقق.
- المحاكاة: على سلسلة بالإصدار v3.2.5 أو أحدث تشمل المحاكاة أصلًا تكلفة التحقق من ML-DSA-87 (
exact_gas_simulation: trueفيget_chain_info)، فيكون حد الغاز المقترح دقيقًا؛ وعلى سلسلة أقدم يُضاف هامش. وعندما لا يحتوي الجسم على طبقة ML-DSA-87، تضيفsimulate_txطبقة نائبة بالحجم الصحيح (لا تُبثّ أبدًا) ليطابق الغاز المعاملة التي ستوقّعها المحفظة (assume_pqc_layer، الافتراضي true). ويكتشف الخادم إصدار السلسلة بنفسه. - الـ precompiles في EVM وهما
0x...0A01(تحقق ML-DSA-87) و0x...0A02(حالة المفتاح) نشطان على الشبكة التجريبية فقط؛ وعلى الشبكة الرئيسية يعيد الاستدعاء إليهما بيانات فارغة. - مخططات الأدوات المقروءة آليًا موجودة في المستودع باسم
spec/tools.json، مولَّدة من جوابtools/listللخادم نفسه. والمرجع المقروء للبشر هوdocs/tools.md.
كيفية الاستخدام
تحتاج إلى Node.js 20 أو أحدث لحزمة npm، أو Python 3.10 أو أحدث لحزمة Python.
التشغيل محليًا باستخدام npx
تأكد من أن الخادم يبدأ، ثم أضفه إلى عميل MCP لديك. تقرأ معظم العملاء التي تشغّل خوادم محلية ملف JSON فيه كائن mcpServers (يختلف اسم الملف وأسماء المفاتيح لخوادم HTTP من عميل إلى آخر؛ راجع وثائق عميلك):
npx -y @qorechain/mcp --version
{
"mcpServers": {
"qorechain": { "command": "npx", "args": ["-y", "@qorechain/mcp"] }
}
}
أعد تشغيل العميل. سيعرض 14 أداة. يتحدث الخادم إلى العميل عبر stdio. ثم اسأل مثلًا:
- "ما آخر كتلة على الشبكة الرئيسية لـ QoreChain؟" (
get_block) - "هل تحمل معاملة الشبكة التجريبية F642F59F2A2FEDA2B3A61A3CF49F8B5F792D65985027997004FEBB22A6F42152 طبقة ML-DSA-87 صالحة؟" (
get_pq_status) - "جهّز تحويل 1.5 QOR على الشبكة التجريبية من عنواني إلى qor1... وقدّر الرسم." (
prepare_transfer,estimate_fee)
التشغيل محليًا باستخدام pip أو uvx
pip install qorechain-mcp
qorechain-mcp --network testnet # stdio
# or, without installing:
uvx qorechain-mcp
{ "mcpServers": { "qorechain": { "command": "uvx", "args": ["qorechain-mcp"] } } }
تقدّم حزمة Python stdio فقط. أما Streamable HTTP ومفاتيح API وحدود المعدل فاستخدم لها حزمة npm (أدناه). وللحزمة أيضًا نقطة دخول مكتبية هي run_tool.
التشغيل كخادم HTTP
npx -y @qorechain/mcp serve --port 8787
# listening on http://127.0.0.1:8787/mcp
نقل HTTP عديم الحالة ويجيب بصيغة JSON: POST /mcp لطلبات MCP، وGET /healthz للحصول على {"status":"ok"}. الخيارات:
| الخيار | الافتراضي | المعنى |
|---|---|---|
--port | 8787 | منفذ TCP |
--host | 127.0.0.1 | عنوان الربط؛ 0.0.0.0 يستمع على كل الواجهات |
--api-keys-file | none | ملف يحوي تجزئات SHA-256 للمفاتيح المقبولة؛ وعند تعيينه تحتاج الطلبات إلى Authorization: Bearer <key> |
--rate-limit | 60 | عدد الطلبات في الدقيقة لكل مفتاح API ولكل IP عميل؛ و0 يعطّله |
--allowed-origin | none | أصل متصفح مسموح له باستدعاء نقطة النهاية (قابل للتكرار)؛ وتحصل الأصول الأخرى على HTTP 403 |
--trust-proxy | off | يأخذ IP العميل من X-Forwarded-For؛ فقط خلف وكيل تتحكم به |
--network | testnet | الشبكة للاستدعاءات التي لا تسمّي شبكة |
لحماية نقطة النهاية الخاصة بك، أنشئ مفتاحًا، واحفظ تجزئته فقط، وسلّم المفتاح إلى العميل:
openssl rand -hex 32 > my.key
npx -y @qorechain/mcp hash-key < my.key >> api-keys.txt
npx -y @qorechain/mcp serve --api-keys-file api-keys.txt
يحتوي api-keys.txt على تجزئة واحدة من 64 رقمًا ست عشريًا في كل سطر (يُقبل اختياريًا البادئة sha256:، ويبدأ # تعليقًا). المفتاح المفقود أو المجهول يحصل على HTTP 401 مع رسالة خطأ تبدأ بـ UNAUTHORIZED؛ وعند تجاوز حد المعدل يجيب الخادم بـ HTTP 429 مع Retry-After. ضع TLS أمام أي خادم يمكن الوصول إليه من خارج جهازك.
تصدّر الحزمة أيضًا createServer وcreateHttpHandler وstartNodeServer للتضمين في بيئة التشغيل الخاصة بك. التفاصيل الكاملة: الاستضافة الذاتية في مستودع المصدر.
الإعدادات
| الإعداد | كيف | الأثر |
|---|---|---|
| الشبكة لكل استدعاء | الوسيط network في أي أداة: testnet أو mainnet | يختار السلسلة لذلك الاستدعاء |
| الشبكة الافتراضية | --network testnet أو --network mainnet في أمر الخادم | الشبكة المستخدمة عندما لا يسمّي الاستدعاء شبكة. الافتراضي testnet |
| منفذ HTTP والمضيف والمفاتيح والحدود | خيارات serve أعلاه | وضع HTTP فقط |
| مهلة المنبع | ثابتة عند 10 ثوانٍ لكل طلب، وحد استجابة 4 MiB، بلا إعادة محاولة | النقاط البطيئة تعطي UPSTREAM_UNAVAILABLE |
الشبكة الرئيسية هي qorechain-vladi (معرّف سلسلة EVM 9801) والشبكة التجريبية هي qorechain-diana (معرّف سلسلة EVM 9800). والتحويل المجهّز للشبكة الرئيسية يحمل تحذيرًا إضافيًا. لا توجد متغيرات بيئة للشبكة: إنها خيار سطر الأوامر أو الوسيط لكل استدعاء. لجعل الشبكة الرئيسية الافتراضية لعميل ما:
{ "command": "npx", "args": ["-y", "@qorechain/mcp", "--network", "mainnet"] }
الأدوات
الأدوات الـ 14 كلها للقراءة فقط وتقبل network اختياريًا. مدخلاتها ومخرجاتها مولَّدة من مخططات الخادم نفسه؛ ويسرد مرجع الأدوات كل حقل.
| الأداة | ما تعيده |
|---|---|
get_chain_info | معرّفات السلسلة وآخر كتلة والحد الأدنى لسعر الغاز وإصدار sign-bytes ومفاتيح ميزات البروتوكول وترقية معلّقة إن كانت مجدولة وprecompiles الـ EVM النشطة |
get_block | كتلة واحدة (أو الأخيرة): التجزئة والوقت والمقترِح وعدد المعاملات وحتى 100 تجزئة معاملة |
get_transaction | معاملة بتجزئتها الأصلية أو بتجزئة EVM (بالبادئة 0x): الحالة والرسم والمذكرة والغاز وحتى 50 رسالة والموقّعون وفئة التوقيع (pqc أو enrollment أو shake أو classical) |
get_address_info | صيغتا العنوان (qor1... و0x...) وحالة الحساب وحتى 100 رصيد والمبلغ المودَع في staking وهل سُجّل مفتاح ML-DSA-87 وهل نُشرت شيفرة بايت |
get_pq_status | لعنوان: المفتاح المسجّل والخوارزمية وإثبات الحيازة ونافذة تفويض EVM. ولمعاملة: هل تحمل طبقة هجينة واحدة بالضبط وهل يتحقق منها |
get_validators | المدققون بحسب الحصة (الافتراضي bonded، بحد أقصى 50، والحد حتى 200): الحالة وعلم الاحتجاز (jailed) والحصة ونسبة قوة التصويت والعمولة |
get_staking_tiers | وحدة طبقات التخزين: شروط القفل والمكافآت وعقوبة فك القفل المبكر ومجمّع المكافآت، واختياريًا أقفال حامل واحد. سلسلة v3.2.4 وما بعدها |
search | يكشف ارتفاع كتلة أو تجزئة معاملة أو عنوانًا أو مدققًا من نص واحد، ويقرأه، ويسمّي الأداة التي تعيد البيانات نفسها |
read_contract | استدعاء EVM eth_call فقط، مع ترميز ABI اختياري لتوقيع دالة وفك ترميز النتيجة |
estimate_fee | الغاز المحاكى وحد الغاز المقترح والرسم (حد الغاز مضروبًا في الحد الأدنى لسعر الغاز)، شاملًا طبقة ML-DSA-87 |
simulate_tx | الغاز المستهلك وحد الغاز المقترح وتغيّر الرصيد لكل عنوان ورفض مفكوك الترميز لمعاملة مرمَّزة |
prepare_transfer | MsgSend غير موقّعة من uqor: SignDoc وملخص مقروء وفحوصات وتحذيرات |
get_token_holders | دائمًا NOT_AVAILABLE_ON_CHAIN: سرد الحاملين يحتاج مفهرسًا لا تقدمه النقاط العامة |
request_faucet | دائمًا NOT_AVAILABLE_ON_CHAIN: تأتي QOR للشبكة التجريبية من الصنبور في لوحة التحكم |
الأخطاء هي نتائج أدوات مع isError: true وجسم JSON هو {"error": {"code", "message", "details?"}}. والرموز هي NOT_FOUND وINVALID_INPUT وUPSTREAM_UNAVAILABLE وNOT_AVAILABLE_ON_CHAIN وRATE_LIMITED وUNAUTHORIZED وINTERNAL_ERROR.
استخدامه كمكتبة
تصدّر حزمة npm الدوال createServer({ defaultNetwork }) (نسخة من خادم MCP لأي نقل MCP) وcreateHttpHandler({ apiKeyHashes, rateLimitPerMinute }) (معالج Fetch API، أي (Request) => Promise<Response>) وstartNodeServer(...) (خادم Node HTTP الذي يستخدمه serve). والخيارات المشتركة هي defaultNetwork وendpoints (لتوجيه شبكة إلى عقدك الخاصة) وupstream (timeoutMs وmaxResponseBytes وfetch) وonToolCall (يتلقى اسم الأداة والحالة وزمن الاستجابة).
ويمكن استخدام حزمة Python بالطريقة نفسها عبر run_tool:
import anyio
from qorechain_mcp import Context, run_tool
async def main():
out = await run_tool("get_chain_info", {"network": "mainnet"}, Context())
print(out["latest_block"])
anyio.run(main)
اختبار النقطة المستضافة من الطرفية
curl -s -X POST https://mcp.qorechain.io/mcp \
-H "Authorization: Bearer $QORECHAIN_MCP_KEY" \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
وبدون مفتاح صالح تجيب النقطة بـ HTTP 401 مع خطأ JSON-RPC تبدأ رسالته بـ UNAUTHORIZED.
استكشاف الأخطاء وإصلاحها
UPSTREAM_UNAVAILABLE: لم تجب النقطة العامة خلال 10 ثوانٍ. حاول مرة أخرى.NOT_FOUNDعند كتلة قديمة من الشبكة التجريبية: عقد الشبكة التجريبية تقتطع التاريخ، ويسمّي الخطأ أدنى ارتفاع متاح. تبلّغget_chain_infoعنearliest_available_height.- لا أدوات معروضة في العميل: شغّل
npx -y @qorechain/mcp --helpفي طرفية للتأكد من أن Node وnpm يعملان، ثم اقرأ سجل MCP الخاص بالعميل. UNAUTHORIZEDعلى النقطة المستضافة: المفتاح مفقود أو خاطئ أو ملغى أو لم يصبح فعّالًا بعد (قد يستغرق المفتاح الجديد دقيقة أو دقيقتين).
ما الذي شُغِّل
في 27 أكتوبر 2026 ثُبّتت الحزم المنشورة من السجلات وشُغّلت مقابل نقاط الشبكة التجريبية والشبكة الرئيسية العامة:
- طبعت
qorechain-mcp --versionالقيمة0.1.0؛ وعبر stdio أعادتinitializeاسم الخادمqorechain-mcpوأعادتtools/listأسماء الأدوات الـ 14 أعلاه؛ وثُبّتتpip install qorechain-mcp==0.1.0وطبع--versionفيها0.1.0. - أجابت
qorechain-mcp serve --port 18787عنGET /healthzبـ{"status":"ok"}وعن استدعاءtools/callللأداةget_chain_infoعبرPOST /mcp. - أعادت
get_chain_infoالسلسلةqorechain-dianaومعرّف سلسلة EVM 9800 والحد الأدنى لسعر الغاز 0.1 uqor وsign-bytesv2على الشبكة التجريبية، والسلسلةqorechain-vladiومعرّف سلسلة EVM 9801 وsign-bytesv2على الشبكة الرئيسية. - أعادت
get_pq_statusعلى معاملة الشبكة التجريبية أعلاه الفئةpqcوطبقة هجينة واحدة بالضبط وverified: trueمع sign-bytesv2. - أعادت
prepare_transferلتحويل 1.5 QOR على الشبكة التجريبية SignDoc بحد غاز 171698 ورسم 17170 uqor (0.01717 QOR)، وأعادتsimulate_txعلى معاملتها غير الموقّعةok: trueمع خصم الرسم من المرسل. لم يُوقَّع شيء ولم يُرسَل شيء.
كيفية الوصول
-
محليًا (الخيار الأساسي). stdio عبر
npx -y @qorechain/mcpأوuvx qorechain-mcp. لا يحتاج إلى حساب ولا إلى مفتاح API. يقرأ من نقاط QoreChain العامة، لذا يحتاج إلى HTTPS صادر. -
خادم HTTP خاص بك.
qorechain-mcp serve، كما سبق، مع مفاتيح API وحدود معدل تضبطها أنت. -
نقطة نهاية مستضافة. يقدّم
https://mcp.qorechain.io/mcpنقل Streamable HTTP. وتستخدم الشبكة التجريبية ما لم يسمِّ الاستدعاء"network": "mainnet". يحتاج كل طلب إلى مفتاح API يُرسل بالصيغةAuthorization: Bearer <key>؛ اطلب مفتاحًا من لوحة التحكم (أدناه). وبدون مفتاح تجيب النقطة بـ HTTP 401 (UNAUTHORIZED)، وهذا كان الجواب في 27 أكتوبر 2026. يوجد مفتاح فعّال واحد لكل حساب، ويُحدَّد كل مفتاح بـ 10 طلبات في الثانية (دفعة قصوى 20) و100,000 طلب في اليوم. وفي معظم الاستخدامات لا يحتاج الإعداد المحلي إلى مفتاح وهو الخيار الأبسط.للحصول على مفتاح، سجّل الدخول إلى dashboard.qorechain.io/developers، وافتح تبويب AI agents (MCP) واملأ نموذج API key (الاسم أو المؤسسة، وجهة اتصال، والاستخدام المقصود، والحجم المتوقع)، ثم اضغط Request API key. يوافق فريق QoreChain على الطلب أو يرفضه؛ ويعرض الرفض ملاحظته ويمكنك تقديم الطلب مرة أخرى. بعد الموافقة اضغط Generate key: يُعرض المفتاح مرة واحدة، مع زر نسخ ومقتطف إعداد جاهز، ويصبح فعّالًا خلال دقيقة أو دقيقتين. لا تحتفظ QoreChain إلا ببصمة (تجزئة)، ولذلك لا يمكن عرض مفتاح ضائع مرة أخرى؛ ألغِه (يسري خلال دقيقة تقريبًا) واطلب مفتاحًا جديدًا. راجع صفحة المطورين في لوحة التحكم.
إعداد عميل HTTP لخادم يحتاج إلى مفتاح (تختلف أسماء المفاتيح بالضبط من عميل إلى آخر):
{
"mcpServers": {
"qorechain": {
"type": "http",
"url": "https://mcp.qorechain.io/mcp",
"headers": { "Authorization": "Bearer ${QORECHAIN_MCP_KEY}" }
}
}
}
لا تضع أبدًا عبارة استرداد أو مفتاحًا خاصًا في إعداد عميل: لا تحتاج أي أداة في QoreChain إلى واحد منهما.
يقرأ الخادم من هذه النقاط العامة:
| الشبكة التجريبية | الشبكة الرئيسية | |
|---|---|---|
| REST | https://api-testnet.qore.host | https://api.qore.host |
| RPC الإجماع | https://rpc-testnet.qore.host | https://rpc.qore.host |
| EVM JSON-RPC | https://evm-testnet.qore.host | https://evm.qore.host |
التكلفة: الخادم مجاني. والقراءات لا تكلّف شيئًا. وإذا بثثت معاملة بنتها prepare_transfer فيسري رسم الشبكة (الحد الأدنى للرسم 0.1 uqor لكل وحدة غاز).
ملاحظات أمنية
- لا يوجد أي مسار شيفرة للتوقيع في الخادم ولا في أداة سطر الأوامر. لا يُوقَّع شيء، ولا يُخزَّن مفتاح، ولا يُبَثّ شيء.
- تُرفض الأسرار. الإدخال الذي يشبه عبارة استرداد (12 كلمة BIP-39 متتالية أو أكثر) أو مفتاحًا خاصًا مجرّدًا من 32 بايت بصيغة سداسية عشرية يُرفض بالرمز
INVALID_INPUTقبل إجراء أي طلب، وتطلب رسالة الخطأ من المستخدم معاملة ذلك السر على أنه مكشوف. لا تضع أبدًا عبارة استرداد أو مفتاحًا خاصًا في إعداد عميل؛ فلا تحتاج أي أداة في QoreChain إلى واحد منهما. - لا يُمرَّر نص أخطاء المنبع أبدًا؛ وتُبنى الاستجابات حقلًا حقلًا.
- السجلات. تحمل سجلات HTTP أسلوب JSON-RPC واسم الأداة والحالة وزمن الاستجابة. أما المدخلات والمخرجات والمفاتيح وعناوين العملاء فلا تُسجَّل.
- مفاتيح API في الخادم المستضاف ذاتيًا تُخزَّن كتجزئات SHA-256 ولا تُخزَّن أبدًا كنص صريح. ويكون CORS مغلقًا افتراضيًا، وهذا يحمي أيضًا خادمًا مربوطًا بـ localhost من DNS rebinding.
- يجب تسمية الشبكة الرئيسية صراحةً، وتضيف
prepare_transferتحذيرًا لتحويلات الشبكة الرئيسية. - المذكرات عامة ودائمة. لا تضع سرًا في مذكرة أبدًا.
- عامل مفتاح API المستضاف كأنه كلمة مرور. احتفظ به في متغير بيئة أو في مخزن أسرار وألغِه من لوحة التحكم إذا تسرّب.
- أبلغ عن الثغرات بشكل خاص إلى security@qore.network، وليس أبدًا في بلاغ عام.
أين نُشر
| السجل | الحزمة | الإصدار | التشغيل | ملاحظات |
|---|---|---|---|---|
| npm | @qorechain/mcp | 0.1.0 | npx -y @qorechain/mcp | الملف التنفيذي qorechain-mcp. stdio وStreamable HTTP. Node.js 20 أو أحدث |
| PyPI | qorechain-mcp | 0.1.0 | pip install qorechain-mcp أو uvx qorechain-mcp | stdio فقط. Python 3.10 أو أحدث |
| npm | @qorechain/qore-cli | 0.1.0 | npm install -g @qorechain/qore-cli | الأمر qore. انظر QoreChain CLI |
المصدر: github.com/qorechain/qorechain-mcp (عام، Apache-2.0، فُحص في 27 أكتوبر 2026). يحوي المستودع الخادم وأداة سطر الأوامر وحزمة Python ومرجع الأدوات وملاحظات الاستضافة الذاتية وأمثلة لإعدادات العملاء وثلاثة ملفات مهارات للوكلاء. وليست له صورة حاويات منشورة؛ استخدم npx أو pip.
الحدود والمشكلات المعروفة
- للقراءة فقط. لا يوجد مسار شيفرة للتوقيع ولا تخزين للمفاتيح ولا بثّ. تعيد
prepare_transferمستندًا غير موقّع. لإتمام التحويل، وقّعه بـ QoreSign أو بمحفظة QoreX وابثّه بنفسك؛ ثم اقرأ النتيجة بـget_transaction. تستخدمread_contractالأداةeth_callفقط ولا تستطيع تغيير الحالة. - يُجهَّز نوع معاملة واحد. تبني
prepare_transferرسالةMsgSendمن uqor على المسار الأصلي. ولا تبني معاملات EVM أو SVM أو staking أو الحوكمة أو العقود. أماestimate_feeوsimulate_txفتقبلان أي معاملة مرمَّزة على المسار الأصلي. - أرقام الغاز تتبع إصدار السلسلة لا الشبكة. طبّقت الشبكتان كلتاهما v3.2.5 (الشبكة الرئيسية في 29 أكتوبر 2026)، لذا تشمل المحاكاة تكلفة التحقق من ML-DSA-87 والغاز دقيق (
exact_gas_simulationتساوي true على الشبكتين). وعند التعامل مع عقدة أقدم من v3.2.5 يحمل حد الغاز المقترح هامشًا. - تاريخ الشبكة التجريبية مقتطع. كتلة قديمة من الشبكة التجريبية تعيد
NOT_FOUND، ويسمّي الخطأ أدنى ارتفاع متاح (8,790,799 على الشبكة التجريبية وقت الفحص؛ وكانت الشبكة الرئيسية تخدم من الارتفاع 1). وتفحصget_pq_statusالطبقة مقابل المفتاح المسجّل الآن، لذا لا تطابق المعاملات الأقدم بعد تدوير المفتاح. - precompiles ما بعد الكمّي في EVM. العنوانان
0x...0A01(تحقق ML-DSA-87) و0x...0A02(حالة المفتاح) نشطان على الشبكة التجريبية فقط؛ وعلى الشبكة الرئيسية يعيد الاستدعاء إليهما بيانات فارغة. - الحدود. لكل طلب منبع مهلة 10 ثوانٍ وحد استجابة 4 MiB دون إعادة محاولة. تسرد الكتل 100 تجزئة معاملة كحد أقصى، وتعرض المعاملات 50 رسالة كحد أقصى، والحسابات 100 رصيد كحد أقصى. أجسام طلبات HTTP محدودة بـ 512 KiB. والمذكرة 256 حرفًا كحد أقصى، وهي عامة ودائمة، فلا تضع فيها سرًا أبدًا. وحد المعدل في الخادم المستضاف ذاتيًا خاص بكل نسخة ومحفوظ في الذاكرة؛ وخلف موازن أحمال تعدّ كل نسخة على حدة.
- غير متاح:
get_token_holders(لا مفهرس على النقاط العامة) وrequest_faucet(استخدم صنبور لوحة التحكم، الذي يحتاج إلى تسجيل دخول). تحتاج النقطة المستضافة إلى مفتاح API يُطلب من لوحة التحكم؛ أما الإعداد المحلي فلا. - الشبكة الرئيسية صريحة. تذهب الاستدعاءات إلى الشبكة التجريبية ما لم تسمِّ
"network": "mainnet"أو بدأ الخادم بالخيار--network mainnet. - لا تُنشر صورة حاويات. شغّل الخادم بـ
npxأوpip. - الإصدار. 0.1.0 هو الإصدار الأول؛ قد تتغير أسماء الأدوات والمخططات في إصدارات لاحقة، والملف المولَّد
spec/tools.jsonفي المستودع هو المرجع للإصدار الذي ثبّتّه.
صفحات ذات صلة
- QoreChain CLI: الأدوات نفسها من الطرفية.
- QoreSign: المتحقق الهجين الذي تستخدمه
get_pq_status. - QoreChain SDK: ابنِ ووقّع المعاملات التي يقرؤها هذا الخادم ويحاكيها.
- تكاملات QoreX: المحفظة التي توقّع ما تجهّزه
prepare_transfer. - Custody kit: كشف الإيداعات والتحقق من السحوبات للجهات الحافظة.
- الصنبور وصفحة المطورين في لوحة التحكم: QOR للشبكة التجريبية ومفاتيح API الخاصة بـ MCP.
- نظرة عامة على حزم المطورين.