اتصال دستیار هوش مصنوعی به اودو
آموزش تصویری سرور MCP، گامبهگام
Claude، ChatGPT، Cursor یا n8n را مستقیم به دادهی زندهی ERP خود وصل کنید — با دسترسی کنترلشده، تأیید انسانی برای هر تغییر و ممیزی کامل. بدون نصب هیچ برنامهی واسط: خودِ اودو سرور MCP است.
سرور MCP روی اودو چیست؟
سرور MCP یک نقطهی اتصال استاندارد روی اودو است که به دستیار هوش مصنوعی اجازه میدهد بهجای حدسزدن، واقعاً دادهی سیستم شما را بخواند و — با تأیید صریح شما — در آن تغییر ایجاد کند. MCP سرنام Model Context Protocol است؛ پروتکلی باز که کلاینتهای هوش مصنوعی با آن ابزارهای یک سیستم را کشف و اجرا میکنند. در نسخهی ابرک، هر فراخوانی با دسترسی همان کاربر اودویی اجرا میشود که کلید به او وصل است، هیچ نوشتنی در فراخوانی اول اعمال نمیشود و هر درخواست — موفق یا ردشده — لاگ میگیرد.
- ۵۱ ابزارخواندن، گزارش، نوشتنِ تأییدشده
- تأیید انسانیهر تغییر اول diff، بعد اجرا
- دسترسی کاربرACL و قواعد رکورد اودو پابرجا
- ممیزی کاملهر فراخوانی لاگ، بدون ذخیرهی توکن
چرا اتصال مستقیم، بهجای کپیکردن گزارش در پنجرهی چت؟
روش رایج امروز این است: از ERP گزارش میگیرید، در فایل میریزید و در پنجرهی چت هوش مصنوعی میچسبانید. سه مشکل دارد — داده تا لحظهی کپی کهنه است، حجمش محدود به همان چیزی است که دستی برداشتهاید، و خروجی مدل هیچ راهی برای برگشتن به سیستم ندارد. اتصال MCP هر سه را حل میکند: مدل خودش سؤال را به یک فراخوانی ابزار ترجمه میکند، جواب لحظهای میگیرد و اگر قرار باشد چیزی ثبت شود، تغییر پیشنهادی را برای تأیید شما برمیگرداند.
نکتهی مهم امنیتی: اتصال MCP «دادن کلید کل شرکت به یک مدل» نیست. سطح دسترسی دقیقاً همان چیزی است که شما روی کلید تعریف میکنید — و در ادامه گامبهگام میبینید چطور آن را تنگ نگه دارید.
راهاندازی در ۶ گام
- فعالسازی اپ سرور MCP: اپ «سرور MCP» را از فروشگاه اپ ابرک فعال کنید؛ منوی «سرور MCP» در نوار برنامهها ظاهر میشود.
- ساخت کلید و انتخاب کاربر اودو: در «سرور MCP ▸ کلیدها» دکمهی «جدید» را بزنید و کلید را به کاربری با کمترین دسترسی لازم وصل کنید — همهی فراخوانیها با دسترسی همان کاربر اجرا میشوند. متن کامل کلید فقط یک بار نمایش داده میشود؛ بعد از آن فقط پیشوندش در سیستم میماند.
- تعیین دامنه، سقف نرخ و مدلهای مجاز: دامنه را روی «فقط خواندن» بگذارید (ابزارهای نوشتن اصلاً برای کلاینت فهرست نمیشوند)، سقف نرخ در دقیقه را تنظیم کنید و در صورت نیاز مدلهای مجاز و مبدأهای مجاز را محدود کنید.
- تست در آزمایشگاه، پیش از اتصال کلاینت: در «سرور MCP ▸ آزمایشگاه» همان ابزار را با همان کلید اجرا کنید. این گام اختیاری نیست؛ دقیقاً همین است که «ابزار خراب است» را از «کلاینت من بد تنظیم شده» جدا میکند.
- اتصال کلاینت هوش مصنوعی: نشانی
https://<فضای-کاری>.abrak.org/mcpرا با کلید بهعنوان Bearer token در کلاینت وارد کنید — نمونهی دقیق تنظیمات پایینتر آمده است. - تأیید تغییرها و بررسی ممیزی: هر ابزار نوشتن در فراخوانی اول فقط یک diff برمیگرداند؛ بعد از تأیید، خودِ فراخوانی در «لاگ درخواستها» با ستون «نوشتن اعمال شد» قابل پیگیری است.
آموزش تصویری — قدمبهقدم
📸 برای بزرگنمایی، روی هر تصویر بزنید — آلبوم تمامصفحه باز میشود و با فلشهای چپ/راست (یا کلیدهای جهتدار) بین همهی مراحل میچرخید.
گام ۲ و ۳: ساخت کلید، انتخاب کاربر و بستن دامنهی دسترسی
sale.order:action_confirm) همه اینجا تنظیم میشوند.گام ۴: آزمایشگاه — اجرای واقعی ابزار پیش از اتصال کلاینت
structuredContent. تب «curl» دستور معادل را میسازد تا بتوانید همین فراخوانی را بیرون اودو هم بازتولید کنید.گام ۶: تأیید انسانی نوشتن، و ممیزی
create_records صدا زده شده و هیچ رکوردی ساخته نشده: پاسخ resultType: "input_required" است و متن آن دقیقاً میگوید چه رکوردی با چه مقادیری قرار است ساخته شود — به فارسی و انگلیسی. تا وقتی تأیید نکنید، چیزی نوشته نمیشود.
Unauthorized، MethodNotFound، InvalidParams و مانند آن). خودِ توکن هرگز ذخیره نمیشود.ورود یکپارچه: همان حساب اودو، هم چت هم دستیار هوش مصنوعی
https://mcp.abrak.org/mcp وصل میشود دیده میشود — کشف خودکار (RFC 9728) کلاینت را به همینجا میفرستد. نام برنامه، حسابی که وارد شده، دامنههای درخواستی و نشانی دقیقی که توکن برایش صادر میشود (RFC 8707) همه پیش از تأیید روی صفحهاند.دستور آماده در داشبورد — بدون نوشتن پرامپت
explain_denial میگوید allowed: false، لایهی ردکننده mcp_scope است، و دقیقاً چه باید تغییر کند — نه یک ۴۰۴ خشک.گام ۵ به تفکیک کلاینت — تنظیمات دقیق
در همهی نمونههای زیر، mycompany.abrak.org را با نشانی فضای کاری خودتان و KEY را با کلیدی که در گام ۲ ساختید عوض کنید. همین نشانی روی فرم کلید هم نوشته شده است.
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 در نسخهی ۲۰۲۶-۰۷-۲۸ پروتکل اجباریاند و کلاینتهای سازگار خودشان میفرستندشان.
n8n و اتوماسیونها
در n8n از نود کلاینت MCP استفاده کنید: نشانی همان /mcp فضای کاری و احراز هویت از نوع Header با Authorization: Bearer KEY. برای این کاربرد یک کلید جدا با دامنهی فقطخواندنی بسازید تا در لاگ بتوانید ترافیک اتوماسیون را از ترافیک انسانی تفکیک کنید.
کلاینتهای ابری (claude.ai و ChatGPT در مرورگر)
اینها از سرورهای خودشان وصل میشوند، نه از کامپیوتر شما — و به آیپی داخل ایران اتصال باز نمیکنند. نشانی دائمی https://mcp.abrak.org/mcp دقیقاً برای همین ساخته شده (پشت Cloudflare، بدون وابستگی به آیپی سرور). در claude.ai از منوی افزودن کانکتور همین نشانی را وارد کنید؛ کلاینت خودش هندشیک کشف (RFC 9728) را میزند و شما را به همان صفحهی تأیید اودو میرساند — گام ۷ همین صفحه، با تصویر واقعی. برای کلاینت رومیزی و CLI نیازی به این نشانی جداگانه نیست، همان /mcp فضای کاری کافی است.
عیبیابی — پیام خطا به زبان آدمیزاد
سرور عمداً خطای مبهم برنمیگرداند؛ هر پیام میگوید کدام لایه جلوی کار را گرفته و چه باید عوض شود. رایجترینها:
| چه میبینید | معنی واقعی | کار درست |
|---|---|---|
| کلاینت اصلاً وصل نمیشود | کلاینت ابری است و از سرور خودش وصل میشود، نه از کامپیوتر شما | اول با دستور curl بالا از همان شبکه تست کنید؛ اگر curl جواب داد، مشکل مسیر شبکهی کلاینت است نه سرور |
| پیام «کلید نه کلید MCP است نه کلید API معتبر» | کلید غلط، منقضی، غیرفعال — یا متعلق به فضای کاری دیگری | کلید را در «کلیدها» بررسی کنید و مطمئن شوید نشانی، نام میزبان همان فضای کاری است |
| فهرست ابزارها کوتاهتر از انتظار است | کلید فقطخواندنی است؛ ابزارهای نوشتن عمداً فهرست نمیشوند | اگر واقعاً به نوشتن نیاز دارید، دامنهی کلید را «خواندن و نوشتن» کنید |
| ابزار اجرا میشود ولی نتیجه خالی است | یا دادهای نیست، یا یک قاعدهی رکورد آن را از این کاربر پنهان کرده | پاسخ خودش این دو را از هم جدا میکند؛ برای جزئیات ابزار explain_denial را صدا بزنید |
| خطای نسخهی پروتکل پشتیبانینشده | کلاینت نسخهی نامعتبری از پروتکل را اعلام میکند | کلاینت را بهروز کنید؛ سرور نسخههای قدیمیتر را مذاکره میکند ولی نسخهی نامعتبر را رد میکند |
| خطای عبور از سقف نرخ | تعداد فراخوانی در دقیقه از سقف کلید گذشته | سقف نرخ را روی فرم کلید بالا ببرید، یا برای اتوماسیون یک کلید جدا بسازید |
چه چیزی این سرور MCP را از بقیه متمایز میکند؟
- نوشتن دوفازی با امضای رمزنگاریشده: فراخوانی اول فقط diff برمیگرداند. آنچه بعد از تأیید اجرا میشود همان چیزی است که امضا شده، نه آنچه در تلاش دوم فرستاده میشود — پس مدل نمیتواند بین نمایش و اجرا آرگومانها را عوض کند.
- خطای رد شدن که واقعاً توضیح میدهد: بهجای «Access denied»، پاسخ میگوید کدام لایه (دامنهی کلید، سیاست مدل، ACL اودو یا قاعدهی رکورد)، نام دقیق قاعده و چه گروهی غایب است — دوزبانه، بهعلاوهی ابزار
explain_denialکه همین را پیش از تلاش جواب میدهد. - انتخاب فیلد آگاه به بودجهی توکن: پاسخها با توجه به سقف توکن هرس میشوند و سرور صریح گزارش میدهد چه چیزی حذف شده — نه اینکه بیصدا نصف داده را بیندازد.
- واقعاً چندمستأجره: فضای کاری از روی نام میزبان تشخیص داده میشود. اگر درخواستی به نود اشتباه برسد، پاسخ نشانی درست را اعلام میکند؛ کلید هیچوقت نمیتواند دیتابیس دیگری را آدرس بدهد.
- بستهی ایران: تاریخ شمسی دوطرفه، بازههای فارسی («فصل گذشته»، «مرداد»)، ریال و تومان با ذکر واحد، چرخهی چک، خلاصهی حقوق و بیمه، وضعیت سامانه مودیان و ارسال پیامک.
اگر میخواهید خودِ اودو هم مدل هوش مصنوعی داشته باشد (نه فقط پاسخدهندهی ابزار باشد)، اپ هوش مصنوعی ابرک کیفپول ریالی و اتصال مدل را جدا فراهم میکند.
مقالههای مرجع و آموزشی 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 داده را به مدل نمیفرستد؛ کلاینت شماست که تصمیم میگیرد چه چیزی را به مدل بدهد. سیاست نگهداری و آموزش داده، سیاست همان سرویس هوش مصنوعی است که خودتان انتخاب کردهاید — ابرک در این مسیر فقط پاسخدهندهی ابزار است و هر فراخوانی را برای شما لاگ میکند.