اتصال المساعد الذكي بأودو
دليل مصوَّر لخادم MCP، خطوة بخطوة
اربط Claude أو ChatGPT أو Cursor أو n8n مباشرة ببيانات ERP الحية لديك — بوصول متحكَّم به، وتأكيد بشري لكل تغيير، وتدقيق كامل. دون تثبيت أي برنامج وسيط: نفس أودو هو خادم MCP.
ما خادم MCP على Odoo؟
خادم MCP نقطة اتصال معيارية فوق Odoo تتيح لمساعد الذكاء الاصطناعي أن يقرأ بيانات نظامك فعلياً بدلاً من التخمين، وأن يُجري فيها تعديلاً — بتأكيد صريح منك. MCP اختصار لـ Model Context Protocol؛ بروتوكول مفتوح تكتشف به عملاء الذكاء الاصطناعي أدوات نظام ما وتنفذها. في نسخة Abrak، يُنفَّذ كل استدعاء بصلاحيات مستخدم Odoo نفسه المرتبط بالمفتاح، ولا يُطبَّق أي تعديل كتابي عند أول استدعاء، ويُسجَّل كل طلب — ناجحاً كان أو مرفوضاً.
- 51 أداةقراءة، تقارير، كتابة بعد التأكيد
- تأكيد بشريكل تغيير أولاً بعرض الفرق (diff) ثم التنفيذ
- صلاحيات المستخدمقوائم التحكم بالوصول (ACL) وقواعد السجلات في Odoo سارية
- تدقيق كاملتسجيل كل استدعاء، بلا تخزين للرمز (token)
لماذا الاتصال المباشر بدلاً من نسخ التقرير في نافذة الدردشة؟
الطريقة الشائعة اليوم: تستخرج تقريرًا من ERP وتضعه في ملف ثم تلصقه في نافذة دردشة الذكاء الاصطناعي. وفيها ثلاث مشكلات: البيانات قديمة منذ لحظة النسخ، وحجمها محدود بما أخذتَه يدويًا، وليس لمخرجات النموذج طريق للعودة إلى النظام. يحلّ اتصال MCP الثلاث جميعًا: يترجم النموذج السؤال بنفسه إلى استدعاء أداة، ويحصل على الجواب لحظيًا، وإن لزم تسجيل شيء أعاد التغيير المقترح إليك للموافقة عليه.
ملاحظة أمنية مهمة: اتصال MCP ليس «إعطاء مفتاح الشركة كلها لنموذج». فمستوى الوصول هو بالضبط ما تحدده أنت على المفتاح — وفيما يلي ترى خطوة بخطوة كيف تُبقيه ضيقًا.
الإعداد في 6 خطوات
- تفعيل تطبيق خادم MCP: التطبيق «خادم MCP» فعّله من متجر تطبيقات Abrak؛ تظهر قائمة «خادم MCP» في شريط التطبيقات.
- إنشاء مفتاح واختيار مستخدم أودو: في «خادم MCP ◂ المفاتيح» اضغطوا زر «جديد» واربطوا المفتاح بمستخدم يملك أقل صلاحية لازمة — تُنفَّذ كل الاستدعاءات بصلاحية ذلك المستخدم. يُعرض نص المفتاح كاملًا مرة واحدة فقط؛ بعدها تبقى بادئته فقط في النظام.
- تحديد النطاق وسقف المعدل والنماذج المسموحة: اضبط النطاق على «قراءة فقط» (فلا تُدرَج أدوات الكتابة أصلاً للعميل)، واضبط سقف المعدل في الدقيقة، وقيّد عند الحاجة النماذج والمصادر المسموحة.
- الاختبار في المختبر قبل ربط العميل: في «خادم MCP ▸ المختبر» شغّل الأداة نفسها بالمفتاح نفسه. هذه الخطوة ليست اختيارية؛ فهي بالضبط ما يميّز «الأداة معطلة» عن «عميلي معدّ بشكل خاطئ».
- اتصال کلاینت هوش مصنوعی: نشانی
https://<فضای-کاری>.abrak.org/mcpرا با کلید بهعنوان Bearer token در کلاینت وارد کنید — نمونهی دقیق تنظیمات پایینتر آمده است. - تأكيد التغييرات ومراجعة التدقيق: كل أداة كتابة تُرجِع في الاستدعاء الأول فرقاً (diff) فقط؛ وبعد التأكيد، يمكن تتبع الاستدعاء نفسه في «سجل الطلبات» عبر عمود «تم تطبيق الكتابة».
دليل مصوَّر — خطوة بخطوة
📸 للتكبير، انقر على أي صورة — يُفتح ألبوم بملء الشاشة، ويمكنك التنقل بين كل الخطوات بأسهم اليسار/اليمين (أو مفاتيح الأسهم).
الخطوتان 2 و3: إنشاء المفتاح، اختيار المستخدم، وتقييد نطاق الصلاحية
sale.order:action_confirm) كلها تُضبط هنا.الخطوة 4: المختبر — تشغيل فعلي للأداة قبل ربط العميل
الخطوة 6: تأكيد بشري قبل الكتابة، والتدقيق
create_records ولم يُنشأ أي سجل: الاستجابة هي resultType: "input_required" ونصها يوضح بالضبط أي سجل بأي قيم سيُنشأ — بالفارسية والإنجليزية. لا يُكتب شيء حتى تؤكد.
Unauthorized، MethodNotFound، InvalidParams وما شابه). الرمز نفسه لا يُحفظ أبدًا.تسجيل دخول موحَّد: حساب Odoo نفسه، للدردشة ومساعد الذكاء الاصطناعي معًا
https://mcp.abrak.org/mcp — الاكتشاف التلقائي (RFC 9728) يرسل العميل إلى هنا تحديدًا. اسم التطبيق، الحساب الذي سجّل الدخول، النطاقات المطلوبة، والعنوان الدقيق الذي يُصدَر له الرمز (RFC 8707) كلها معروضة قبل التأكيد.أمر جاهز في لوحة المعلومات، دون كتابة موجّه
explain_denial: allowed: false، وأن طبقة الرفض هي mcp_scope، مع توضيح دقيق لما يجب تغييره — لا مجرد رمز 404 جاف.الخطوة 5 حسب نوع العميل — إعدادات دقيقة
في جميع الأمثلة التالية، استبدل mycompany.abrak.org بعنوان مساحة عملك وKEY بالمفتاح الذي أنشأته في الخطوة 2. العنوان نفسه مكتوب أيضًا على نموذج المفتاح.
Claude Code (سطر الأوامر)
claude mcp add --transport http abrak https://mycompany.abrak.org/mcp \
--header "Authorization: Bearer KEY"
ملف .mcp.json — قابل للمشاركة مع زملاء الفريق
{
"mcpServers": {
"abrak": {
"type": "http",
"url": "https://mycompany.abrak.org/mcp",
"headers": {
"Authorization": "Bearer KEY"
}
}
}
}
تقبل معظم تطبيقات سطح المكتب ومحررات الشيفرة (ومنها Cursor وWindsurf) البنية نفسها؛ ويختلف فقط موضع ملف الإعدادات.
اختبار مباشر بـ curl — لتشخيص مشكلة الشبكة
curl -X POST https://mycompany.abrak.org/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer KEY" \
-H "MCP-Protocol-Version: 2026-07-28" \
-H "Mcp-Method: tools/list" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
إذا أعاد هذا الأمر قائمة الأدوات، فهذا يعني أن الخادم والمفتاح يعملان بسلامة، وأي مشكلة تواجهها مصدرها إعدادات العميل. رأسا Mcp-Method وMCP-Protocol-Version إلزاميان في نسخة البروتوكول 2026-07-28، والعملاء المتوافقون يرسلانهما تلقائيًا.
n8n والأتمتة
في n8n استخدموا عقدة MCP Client: العنوان هو نفسه /mcp لمساحة العمل، والمصادقة عبر Header بالشكل Authorization: Bearer KEY. لهذا الاستخدام أنشئوا مفتاحًا منفصلًا بنطاق للقراءة فقط حتى يمكنكم في السجلّ فصل حركة الأتمتة عن حركة البشر.
العملاء السحابيون (claude.ai وChatGPT في المتصفح)
تتصل هذه من خوادمها الخاصة وليس من جهازكم — ولا تفتح اتصالاً مع عنوان IP داخل إيران. العنوان الدائم https://mcp.abrak.org/mcp صُمم لهذا الغرض بالضبط (خلف Cloudflare، دون اعتماد على عنوان IP الخادم). في claude.ai أدخلوا هذا العنوان من قائمة إضافة الموصل؛ يقوم العميل بمصافحة الاكتشاف (RFC 9728) بنفسه ويوصلكم إلى صفحة تأكيد Odoo نفسها — الخطوة 7 في هذه الصفحة بصورة حقيقية. أما عميل سطح المكتب وواجهة الأوامر CLI فلا يحتاجان هذا العنوان المنفصل، ويكفيهما نفس عنوان /mcp الخاص بمساحة العمل.
استكشاف الأخطاء — رسالة خطأ بلغة مفهومة
لا يُرجع الخادم خطأً غامضًا عن قصد؛ فكل رسالة تبيّن أي طبقة منعت العملية وما الذي ينبغي تغييره. وأشيعها:
| ماذا سترون | المعنى الحقيقي | العمل الصحيح |
|---|---|---|
| العميل لا يتصل إطلاقًا | العميل سحابي ويتصل من خادمه الخاص، لا من جهازك | اختبر أولًا بأمر curl أعلاه من الشبكة نفسها؛ إذا استجاب curl، فالمشكلة في مسار شبكة العميل لا في الخادم |
| رسالة «المفتاح ليس مفتاح MCP ولا مفتاح API صالحاً» | مفتاح خاطئ أو منتهي الصلاحية أو معطّل — أو تابع لمساحة عمل أخرى | تحقق من المفتاح في «المفاتيح» وتأكد أن اسم المضيف هو نفسه اسم مساحة العمل |
| قائمة الأدوات أقصر من المتوقع | المفتاح للقراءة فقط؛ أدوات الكتابة غير مدرجة عمدًا | إذا احتجت فعلًا إلى الكتابة، اجعل نطاق المفتاح «قراءة وكتابة» |
| الأداة تعمل لكن النتيجة فارغة | إما أنه لا توجد بيانات، أو أن قاعدة سجل أخفتها عن هذا المستخدم | تميّز الاستجابة نفسها بين الاثنين؛ وللتفاصيل استدعِ الأداة explain_denial |
| خطأ إصدار بروتوكول غير مدعوم | العميل يعلن إصدارًا غير صالح من البروتوكول | حدّث العميل؛ فالخادم يتفاوض مع الإصدارات الأقدم لكنه يرفض الإصدار غير الصالح |
| خطأ تجاوز حد المعدل (Rate Limit) | عدد الاستدعاءات في الدقيقة تجاوز حد المفتاح | ارفع سقف المعدل في نموذج المفتاح، أو أنشئ مفتاحًا منفصلًا للأتمتة |
ما الذي يميّز خادم MCP هذا عن البقية؟
- الكتابة ثنائية المرحلة بتوقيع مشفّر: الاستدعاء الأول يُعيد فقط الفرق (diff). ما يُنفَّذ بعد التأكيد هو بالضبط ما تم توقيعه، لا ما يُرسَل في المحاولة الثانية — فلا يستطيع النموذج تبديل الوسائط بين العرض والتنفيذ.
- رسالة رفض تشرح فعلياً: بدلاً من «Access denied»، يوضح الرد أي طبقة (نطاق المفتاح، سياسة النموذج، صلاحيات Odoo، أو قاعدة السجل)، واسم القاعدة الدقيق، وأي مجموعة غائبة — بلغتين، إضافة إلى أداة
explain_denialالتي تجيب عن هذا قبل المحاولة. - اختيار حقول واعٍ بميزانية الرموز (tokens): تُقلَّم الردود وفق سقف الرموز، ويُبلغ الخادم صراحة بما حُذف — لا أن يُسقِط نصف البيانات بصمت.
- متعدد المستأجرين فعليًا: تُحدَّد مساحة العمل من اسم المضيف. إذا وصل طلب إلى عقدة خاطئة، يُعلن الرد العنوان الصحيح؛ والمفتاح لا يستطيع أبدًا الإشارة إلى قاعدة بيانات أخرى.
- حزمة إيران: التاريخ الهجري الشمسي ثنائي الاتجاه، الفترات الفارسية («الربع الماضي»، «مرداد»)، الريال والتومان مع ذكر الوحدة، دورة الشيكات، ملخص الرواتب والتأمين، الحالة وإرسال الرسائل النصية.
إذا أردت أن يملك أودو نفسه نموذج ذكاء اصطناعي (لا أن يكون مجرد منفّذ للأدوات فقط)، تطبيق الذكاء الاصطناعي من Abrak يوفّر محفظة الريال والاتصال بالنموذج بشكل منفصل.
مقالات مرجعية وتعليمية عن MCP
کاربرد هوش مصنوعی در کسب و کارهای ایرانی ۱۴۰۵: چت بات فروش، AI Agent روی CRM، گزارش لحظه ای با MCP و نقشه راه ورود کم ریسک به اتوماسیون هوشمند.
SAML و OIDC هر دو «ورود یکپارچه» را حل میکنند، ولی برای یک ERP که قرار است به دستیار هوش مصنوعی هم توکن بدهد، تفاوتشان فقط تشریفاتی نیست. مقایسهی مبتنی بر مستندات رسمی هر دو پروتکل.
كل حقل لا تُرجعه أداة MCP هو رمز (توكن) لم يُنفَق. لماذا يُعدّ اختيار الحقول الافتراضية أهم قرار تصميمي في خادم MCP على ERP.
حلّ خطأ "لم يتم اختيار أي قاعدة بيانات" يعني فقط أنه تم العثور على المستأجر الصحيح، لا أن بياناته معزولة. ثلاث طبقات أخرى يجب أن يغلقها أي خادم MCP على ERP سحابي.
الأسئلة الشائعة عن خادم MCP
برای وصلکردن دستیار هوش مصنوعی به اودو دقیقاً چه چیزی لازم است؟
سه چیز: اپ «سرور MCP» روی فضای کاریتان فعال باشد، یک کلید MCP بسازید و نشانی /mcp فضای کاریتان را با همان کلید در کلاینت هوش مصنوعی وارد کنید. هیچ برنامهی واسطی روی کامپیوتر شما نصب نمیشود — خودِ اودو سرور MCP است.
نشانی سرور MCP من چیست؟
نشانی همان دامنهی فضای کاری خودتان بهعلاوهی /mcp است؛ مثلاً اگر با mycompany.abrak.org وارد میشوید، نشانی سرور https://mycompany.abrak.org/mcp میشود. همین نشانی روی فرم هر کلید MCP هم نوشته شده تا اشتباه تایپ نشود.
کلید را بهصورت Bearer بدهم یا از OAuth استفاده کنم؟
هر دو کار میکند. کلاینتهای دسکتاپ و CLI (مثل Claude Code، Cursor، n8n) معمولاً یک هدر Authorization: Bearer <کلید> میگیرند — سادهترین راه. کلاینتهایی که خودشان جریان ورود دارند از OAuth استفاده میکنند: کاربر یک بار صفحهی تأیید فارسی را میبیند و اجازه میدهد؛ پشت صحنه همان سیاست کلید، نرخ و ممیزی اعمال میشود.
تفاوت کلید «فقط خواندن» و «خواندن و نوشتن» چیست؟
کلید فقطخواندنی ابزارهای نوشتن را اصلاً نمیبیند — در فهرست ابزارهای کلاینت ظاهر نمیشوند، پس مدل حتی نمیتواند تلاش کند. کلید خواندن و نوشتن آنها را میبیند، ولی هر نوشتنی در فراخوانی اول فقط یک پیشنمایش برمیگرداند و تا تأیید صریح شما اعمال نمیشود. برای شروع همیشه فقطخواندنی بسازید.
چطور میفهمم دستیار چه کاری کرده است؟
منوی «لاگ درخواستها» هر فراخوانی را ثبت میکند: کدام کلید، کدام ابزار، کدام مدل، چه مدت طول کشید، چه کد وضعیتی برگشت، دلیل رد شدن و — مهمتر از همه — ستون «نوشتن اعمال شد» که پیشنمایش را از تغییر واقعی جدا میکند. خودِ توکن هرگز ذخیره نمیشود.
دستیار ابزارها را نمیبیند یا فهرست خالی است — چه کنم؟
معمولاً یکی از این سه: کلید غیرفعال یا منقضی است؛ کلید فقطخواندنی است و شما دنبال ابزار نوشتن میگردید؛ یا مدل موردنظر در فهرست «مدلهای مجاز» کلید نیست. ابزار explain_denial دقیقاً میگوید کدام لایه جلوی کار را گرفته و چه باید عوض شود.
کلاینت میگوید به سرور نمیرسد — مشکل از کجاست؟
اول تشخیص بدهید کلاینت از کجا وصل میشود. کلاینت دسکتاپ از کامپیوتر خود شما وصل میشود و مستقیم به نشانی فضای کاری میرسد. اما کانکتورهای ابری (claude.ai یا ChatGPT در مرورگر) از سرورهای خودشان وصل میشوند و به آیپی ایران اتصال باز نمیکنند؛ برای آنها یک نشانی بیرونی جداگانه لازم است که با پشتیبانی ابرک هماهنگ میشود.
چند درخواست در دقیقه مجاز است؟
روی هر کلید یک «سقف نرخ» تنظیم میکنید (پیشفرض ۶۰ درخواست در دقیقه). شمارش روی خود پایگاهداده انجام میشود، پس با چند worker هم درست کار میکند. عبور از سقف یک خطای استاندارد برمیگرداند، نه قطع بیتوضیح اتصال.
آیا روی اودوی نصبشده روی سرور خودم هم کار میکند؟
بله. افزونه یک ماژول استاندارد اودو ۱۹ است و روی نصب اختصاصی هم نصب میشود. روی نصب چنددیتابیسی، فضای کاری از روی نام میزبان تشخیص داده میشود و اگر درخواست به نود اشتباه برسد، بهجای پاسخ اشتباه، نشانی درست اعلام میشود.
دادهی من برای آموزش مدل هوش مصنوعی استفاده میشود؟
خیر. سرور MCP داده را به مدل نمیفرستد؛ کلاینت شماست که تصمیم میگیرد چه چیزی را به مدل بدهد. سیاست نگهداری و آموزش داده، سیاست همان سرویس هوش مصنوعی است که خودتان انتخاب کردهاید — ابرک در این مسیر فقط پاسخدهندهی ابزار است و هر فراخوانی را برای شما لاگ میکند.