إنتقل إلى المحتوى الرئيسي

خادم MCP

تقدّم OrcaRail خادم Model Context Protocol (MCP) رسميًا باسم @orcarail/mcp. يعمل محليًا عبر stdio ويغلّف حزمة @orcarail/node، ليتمكن وكلاء البرمجة بالذكاء الاصطناعي مثل Claude Code وCursor وCodex من إنشاء payment intents وإدارة الاشتراكات وصيانة كتالوج المنتجات والبحث عن أسعار الصرف نيابةً عنك؛ بنموذج التوزيع نفسه لـ @stripe/mcp من Stripe.

الكود المصدري: github.com/OrcaRail/mcp

ما الذي يمكنك فعله به​

بعد الاتصال، يمكنك أن تطلب من وكيلك أشياء مثل:

  • «أنشئ payment intent بقيمة 25 دولارًا بـ USDC على Polygon مع رابط العودة https://myapp.com/success وأعطني رابط الدفع.»
  • «اسرد اشتراكاتي النشطة وألغِ اشتراك [email protected] في نهاية الفترة.»
  • «أنشئ منتجًا باسم Pro Plan بسعر متكرر 29 دولارًا شهريًا.»
  • «كم تساوي 500 يورو بـ USDC الآن؟»
  • «ما حالة الـ payment intent ‏550e8400-…؟»

يستدعي الوكيل أدوات MCP المقابلة. لا تحتاج الأدوات العامة (rates.* وpay.*) إلى بيانات اعتماد؛ وتصادق الأدوات الخاصة بمفتاح API وسرّه مقابل REST API الخاصة بـ OrcaRail.

المتطلبات​

  • Node.js 18 أو أحدث
  • للأدوات الخاصة: مفتاح API وسرّه من OrcaRail (ak_… / sk_…) من لوحة التحكم
  • تعمل أدوات الأسعار والدفع العامة دون بيانات اعتماد

البدء السريع​

الأدوات العامة فقط (دون بيانات اعتماد):

npx -y @orcarail/mcp --tools=all

مع بيانات اعتماد للأدوات الخاصة (فضّل متغيرات البيئة):

export ORCARAIL_API_KEY=ak_live_xxx
export ORCARAIL_API_SECRET=sk_live_xxx
npx -y @orcarail/mcp --tools=all

أو مرّر الخيارات:

npx -y @orcarail/mcp --tools=all --api-key=ak_live_xxx --api-secret=sk_live_xxx

يتحدث الخادم بروتوكول MCP عبر stdin/stdout؛ وهو مصمم ليشغّله عميل MCP (راجع أقسام العملاء أدناه)، لا للاستخدام التفاعلي.

الإعداد​

كل خيار متاح كخيار سطر أوامر أو متغير بيئة. للخيارات الأولوية. فضّل متغيرات البيئة للأسرار.

الخيارمتغير البيئةمطلوبالوصف
--api-keyORCARAIL_API_KEYللأدوات الخاصةمفتاح API (ak_…)
--api-secretORCARAIL_API_SECRETللأدوات الخاصةسر API (sk_…)
--api-baseORCARAIL_API_BASEلاالرابط الأساسي لـ API. الافتراضي https://api.orcarail.com/api/v1
--organization-idORCARAIL_ORGANIZATION_IDلاالمؤسسة الافتراضية لأدوات الكتالوج (products.* وprices.*)
--tools—لاall (افتراضي) أو قائمة بأسماء الأدوات مفصولة بفواصل

تقييد الأدوات​

افتراضيًا تُتاح كل الأدوات. استخدم --tools لتقييد ما يستطيع الوكيل فعله؛ مثل القراءة والإنشاء فقط دون إلغاء أو حذف:

npx -y @orcarail/mcp \
--tools=payment_intents.create,payment_intents.retrieve,subscriptions.list,rates.get_fiat_quote \
--api-key=ak_live_xxx --api-secret=sk_live_xxx

تُتجاهل الأسماء غير المعروفة بصمت؛ ولا يسجّل الخادم إلا الأدوات المطابقة.

API مستضافة ذاتيًا أو محلية​

وجّه --api-base إلى نشرك الخاص:

npx -y @orcarail/mcp --tools=all \
--api-base=http://127.0.0.1:3000/api/v1 \
--api-key=ak_test_xxx --api-secret=sk_test_xxx

إعداد العميل​

Claude Code​

claude mcp add orcarail -- npx -y @orcarail/mcp --tools=all --api-key=ak_live_xxx --api-secret=sk_live_xxx

أو أبقِ الأسرار خارج سطر الأوامر باستخدام متغيرات البيئة:

claude mcp add orcarail \
-e ORCARAIL_API_KEY=ak_live_xxx \
-e ORCARAIL_API_SECRET=sk_live_xxx \
-- npx -y @orcarail/mcp --tools=all

تحقق عبر claude mcp list، ثم اطلب من Claude Code مثلًا «اسرد اشتراكاتي في OrcaRail».

Cursor​

أضف إلى .cursor/mcp.json في مشروعك (أو ~/.cursor/mcp.json لكل المشاريع):

{
"mcpServers": {
"orcarail": {
"command": "npx",
"args": ["-y", "@orcarail/mcp", "--tools=all"],
"env": {
"ORCARAIL_API_KEY": "ak_live_xxx",
"ORCARAIL_API_SECRET": "sk_live_xxx"
}
}
}
}

يلتقط Cursor الخادم تلقائيًا؛ تحقق من Settings ← MCP أنه يعمل.

Codex​

أضف إلى ~/.codex/config.toml:

[mcp_servers.orcarail]
command = "npx"
args = ["-y", "@orcarail/mcp", "--tools=all"]

[mcp_servers.orcarail.env]
ORCARAIL_API_KEY = "ak_live_xxx"
ORCARAIL_API_SECRET = "sk_live_xxx"

عملاء MCP آخرون​

يعمل أي عميل يدعم خوادم MCP عبر stdio بالشكل نفسه: الأمر npx والوسائط ["-y", "@orcarail/mcp", "--tools=all"]. بيانات الاعتماد (ORCARAIL_API_KEY / ORCARAIL_API_SECRET) اختيارية للأدوات العامة ومطلوبة للأدوات الخاصة. في Claude Desktop أضف كتلة JSON نفسها الخاصة بـ Cursor إلى claude_desktop_config.json.

الإنتاج مقابل الـ sandbox​

يكتشف الخادم وضعه من مفتاح API ويخبر وكيلك عبر تعليمات MCP وأداة account.get_mode:

  • ak_test_… (مؤسسة sandbox): شبكات تجريبية فقط، دون أموال حقيقية. تتوفر payment_intents.simulate.
  • ak_live_…: أموال حقيقية. يُطلب من الوكيل التأكيد معك قبل أي عملية كتابة.
  • دون مفتاح: الأدوات العامة فقط.

استخدم مفتاح sandbox أثناء البناء مع وكيل.

مرجع الأدوات​

تتبع أسماء الأدوات الصيغة resource.action. كل الاستجابات هي كائنات API الخام من OrcaRail مُسلسَلة كـ JSON.

Payment intents​

الأداةالوسائطالوصف
payment_intents.createreturn_url (مطلوب)؛ إما price_id أو amount + currency + tokenId + networkId؛ واختياريًا cancel_url وdescription وmetadata وexpires_at وpayment_method_types وwithdrawal_addressesتنشئ payment intent. تعيد الـ intent مع client_secret ورابط الدفع
payment_intents.retrieveidتجلب الحالة الحالية
payment_intents.updateid + أي حقل قابل للتحديثتحدّث قبل التأكيد
payment_intents.confirmid وclient_secret وreturn_urlتؤكد وتحصل على رابط التوجيه إلى صفحة الدفع المستضافة
payment_intents.completeidتعلّم بأنه قيد المعالجة بعد عودة العميل إلى رابط النجاح
payment_intents.cancelidتلغي الـ intent

tokenId وnetworkId معرّفات UUID؛ راجع الشبكات والرموز للقيم الحية.

الاشتراكات​

الأداةالوسائطالوصف
subscriptions.createdescription (مطلوب)؛ إما price_id أو interval + amount + currency + token_id + network_id؛ واختياريًا collection_method وtotal_cycles وtrial_period_days وtrial_end وpayer_email وpayer_user_id وbilling_cycle_anchor وcancel_at وcancel_at_period_end وdays_until_due وinterval_count وmetadata وwithdrawal_addresses وreturn_url وcancel_urlتنشئ اشتراكًا متكررًا
subscriptions.retrieveidتجلب اشتراكًا
subscriptions.updateid + أي حقل قابل للتحديث، بما فيه pause_collectionتحدّث اشتراكًا
subscriptions.cancelid، وcancellation_details اختياري (comment وfeedback)الإلغاء
subscriptions.resumeidتستأنف اشتراكًا متوقفًا
subscriptions.listاختياريًا status وcollection_method ومرشحات النطاق created/current_period_start/current_period_end وlimit وstarting_after وending_beforeالسرد مع ترقيم بالمؤشر
subscriptions.list_payment_linksid، واختياريًا limit وstarting_after وending_beforeفواتير الدورات (روابط الدفع) لاشتراك

الكتالوج: المنتجات​

تعمل أدوات الكتالوج على مؤسسة. مرّر organization_id في كل استدعاء، أو اضبط قيمة افتراضية مرة واحدة عبر --organization-id / ORCARAIL_ORGANIZATION_ID.

الأداةالوسائطالوصف
products.listorganization_id اختياريتسرد المنتجات
products.createname (مطلوب)؛ واختياريًا description وactive وmetadata وdefault_price وmarketing_features وغيرهاتنشئ منتجًا
products.updateproduct_id + أي حقل قابل للتحديثتحدّث منتجًا
products.deleteproduct_idتحذف منتجًا

الكتالوج: الأسعار​

الأداةالوسائطالوصف
prices.listاختياريًا organization_id وactive وrecurring وlimitتسرد الأسعار
prices.createunit_amount_decimal وcurrency وtoken_id وnetwork_id (مطلوبة)؛ وproduct أو product_data مضمّن؛ واختياريًا recurring (interval وinterval_count وtrial_period_days) وnickname وlookup_key وactive وmetadataتنشئ سعرًا لمرة واحدة أو متكررًا
prices.updateprice_id + أي حقل قابل للتحديثتحدّث سعرًا
prices.deactivateprice_idتعطّل سعرًا

الأسعار (عامة، دون بيانات اعتماد)​

الأداةالوسائطالوصف
rates.get_fiat_quoteamount وcurrencyتحوّل مبلغًا بالعملة الورقية إلى USD/USDC
rates.list_currenciesactive اختياريتسرد العملات الورقية المدعومة

الدفع (صفحات الدفع المستضافة، عامة، دون بيانات اعتماد)​

الأداةالوسائطالوصف
pay.get_by_slugslugتحصل على تفاصيل الدفع عبر slug صفحة الدفع المستضافة
pay.cancel_by_slugslugتلغي payment intent عبر slug الدفع الخاص به

أمثلة على سير العمل​

اطلب من وكيلك:

أنشئ في OrcaRail ‏payment intent بقيمة 50 دولارًا باستخدام USDC على Polygon، مع رابط العودة https://myshop.com/thanks، ثم أكّده وأعطني رابط الدفع المخصص للعميل.

سيستدعي الوكيل payment_intents.create، ثم payment_intents.confirm مع client_secret المُعاد، ويخبرك برابط صفحة الدفع المستضافة.

إعداد منتج اشتراك​

أنشئ في OrcaRail منتجًا باسم «Pro Plan» بسعر متكرر 29 دولارًا شهريًا بـ USDC، ثم أنشئ اشتراكًا لـ [email protected] بذلك السعر.

يربط الوكيل products.create ← prices.create (مع recurring.interval: "month") ← subscriptions.create (مع price_id الجديد وpayer_email).

التحقيق في دفعة​

ابحث عن الـ payment intent ‏550e8400-e29b-41d4-a716-446655440000 وأخبرني بحالته ومبلغه وآخر معاملة.

معالجة الأخطاء​

تُعاد أعطال API إلى الوكيل كأخطاء أدوات مع حالة HTTP ونوع الخطأ ورسالة API كما هي (مثل API error (401): [authentication_error]: …). يقرأ الوكلاء هذه الأخطاء عادةً ويصححون استدعاءهم التالي؛ ولا يُعاد أي شيء تلقائيًا.

يعيد استدعاء أداة خاصة دون بيانات اعتماد خطأ أداة واضحًا: اضبط ORCARAIL_API_KEY وORCARAIL_API_SECRET (أو خيارات سطر الأوامر المقابلة).

الأمان​

  • تمنح المفاتيح وصولًا كاملًا إلى المؤسسة المرتبطة بمفتاح API. تعامل مع ملفات إعداد MCP بالحرص نفسه الذي تتعامل به مع ملفات .env.
  • فضّل متغيرات البيئة على الوسائط المضمّنة --api-key=… حتى لا تنتهي الأسرار في سجل الطرفية أو إعدادات مُضافة إلى المستودع.
  • لا تضف المفاتيح الحية أبدًا إلى المستودع. إذا استخدمت .cursor/mcp.json على مستوى المشروع، فأبقِ المفتاح خارج git (استخدم مراجع متغيرات البيئة أو ملفًا محليًا فقط).
  • حدّد النطاق عبر --tools. أتح فقط العمليات التي يحتاجها وكيلك؛ مثل استبعاد products.delete وsubscriptions.cancel في سير العمل القائم على القراءة غالبًا.
  • استخدم مفاتيح الاختبار أثناء التطوير، ودوّر أي مفتاح قد يكون تسرّب من لوحة التحكم.

استكشاف الأخطاء وإصلاحها​

العَرَضالحل
Missing credentials for this toolاضبط ORCARAIL_API_KEY/ORCARAIL_API_SECRET (أو --api-key/--api-secret) للأدوات الخاصة
Authentication error في كل استدعاءتحقق من زوج المفتاح/السر في لوحة التحكم؛ وتأكد من عدم الخلط بين بيانات الاختبار والإنتاج
organization_id is requiredمرّر organization_id في استدعاء الأداة أو شغّل الخادم مع --organization-id
أداة مفقودة في العميلتحقق من مرشح --tools؛ يجب أن تتطابق الأسماء تمامًا (مثل payment_intents.create)
العميل لا يستطيع تشغيل الخادمتأكد من وجود Node.js 18+ في PATH الذي يستخدمه العميل؛ وجرّب npx -y @orcarail/mcp --help في الطرفية