اگر امروز یک عامل هوش مصنوعی را به ابزارهای خارجی متصل میکنید، احتمالاً با این تجربه تلخ روبرو شدهاید که کد شما درست است، اما مستندات ابزار تغییر کرده و همه چیز بهطور ناگهانی از کار افتاده است. این پدیده که «پوسیدگی ادغام» نام دارد، دقیقاً همان جایی است که پروتکل زمینهٔ مدل (Model Context Protocol یا MCP) برای حل آن وارد میدان شده است. در حالی که اکثر ادغامهای عاملهای هوش مصنوعی نه به دلیل باگهای برنامهنویسی، بلکه به دلیل تغییر مستندات در حالی که کد ثابت مانده است شکست میخورند، MCP رویکرد متفاوتی را معرفی میکند. این پروتکل با تبدیل مستندات به یک «عکس لحظهای» (Snapshot) نسخهبندی شده و استفاده از تاریخهایی مانند ۲۰۲۶-۰۷-۲۸ بهجای شماره نسخههای سنتی برای تثبیت الزامات، از این پوسیدگی جلوگیری میکند.
بسیاری از پروتکلهای هوش مصنوعی از مشکل «پوسیدگی مستندات» رنج میبرند؛ وضعیتی که در آن یک وبسایت واحد تنها آخرین نسخه را منعکس میکند، در حالی که کلاینتهای قدیمیتر همچنان بر اساس منطق منسوخ اجرا میشوند. این امر شکافی ایجاد میکند که در آن توسعهدهنده امروز الزامی را میخواند که برای اتصالی که دیروز مذاکره کرده است، کاربرد ندارد. MCP این مشکل را با آنلاین نگه داشتن تکتک بازبینیهای مشخصات خود و دسترسی به آنها از طریق URLهای تاریخدار برطرف میکند. یک صفحه تحت مسیر /specification/<YYYY-MM-DD>/ قرار میگیرد؛ به این معنی که هر استناد بدون تاریخ، استنادی به کل سایت است، نه به یک سند فنی مشخص.
به نقل از مستندات رسمی modelcontextprotocol.io، این اکوسیستم بر سه ستون اصلی استوار است تا هر پرسش توسعهدهنده پاسخ دقیقی داشته باشد. وقتی بحثی میان توسعهدهندگان آغاز میشود، ترتیب حل آن کوتاه است: مشخصات برای الزامات، طرحواره برای ساختارها و گزارش تغییرات برای تاریخچه.
- مشخصات (Specification): این متن معیار (Normative) است. مشخص میکند که برای انطباق یک کلاینت یا سرور چه مواردی الزامی است. این سند به تفکیک هر بازبینی (مثلاً
/specification/2026-07-28/) منتشر میشود و شامل فصلهایی برای چرخه حیات، لایههای انتقال (Transports)، احراز هویت و هر یک از ویژگیهای سرور و کلاینت است. - طرحواره (Schema): که به صورت کد منبع TypeScript منتشر میشود و «شکل» دقیق دادهها را تعیین میکند. در حالی که متن توصیفی یک فیلد را شرح میدهد، طرحواره تعیین میکند که آیا آن فیلد اختیاری است، مقادیر Enum آن چیست و کدهای خطای دقیق کدامند. طرحواره در جزئیات بر متن برتری دارد زیرا مقادیر Enum و کدهای خطا در آن دقیق هستند، اما در یک پاراگراف متنی، تقریبی میباشند.
- گزارش تغییرات (Changelog): این تنها منبع معتبر برای ارتقا است. دقیقاً فهرست میکند که چه مواردی بین بازبینیها جابهجا شده و کدام پیشنهادهای فنی (Proposals) باعث این تغییرات شدهاند. تفاوت این سند با بقیه در این است که بهجای خواندن یک شماره نسخه، شما میفهمید که آن شماره دقیقاً به چه معناست.
علاوه بر این سه ستون، بخش چهارمی به نام رجیستری (Registry) وجود دارد. این یک سرویس متادیتای مجزا برای کشف سرورها است. رجیستری به سوال خاصی پاسخ میدهد که متن مشخصات عمداً آن را نادیده گرفته است: «چگونه سرورهای در دسترس را پیدا کنیم؟»
برای کسانی که تازه با این پروتکل آشنا شدهاند — مثلاً کسانی که از دورههای عمومی هوش مصنوعی مانند گواهینامه حرفهای IBM در زمینه RAG و هوش مصنوعی عاملمحور آمدهاند — صفحه «نمای کلی پروتکل» (Protocol Overview) نقطه شروع ضروری است. در حالی که یک گواهینامه یاد میدهد مستندات چگونه جاسازی (Embed) و بازیابی شوند، MCP یاد میدهد کلاینت چگونه این دادهها را از سرور درخواست کند. نمای کلی، زمینه لازم را در مورد اینکه کدام طرف کلاینت است و مذاکره قابلیتها (Capability Negotiation) پیش از ورود به چهار سطح فنی، فراهم میکند.
توسعهدهندگان اغلب راهنمای پیادهسازی فروشندگان را با الزامات پروتکل اشتباه میگیرند. برای مثال، مستندات درگاه هوش مصنوعی Databricks شرح میدهد که محصول خاص آنها چگونه کلیدها را مسیریابی کرده و بودجهها را مدیریت میکند. این یک جزئیات پیادهسازی است، نه یک دستورالعمل اجباری پروتکل. صفحه فروشنده را برای آنچه پیکربندی میکند بخوانید و مشخصات (Specification) را برای آنچه کلاینت باید ارسال کند.
طرحوارههای نسخهبندی شده محصول، جایی هستند که این دو لایه با هم تلاقی میکنند. برای مثال در یک پیکربندی درگاه Databricks، نام نوع (Type Name) حاوی نسخه است (مانند GatewayPolicyV1). این پیادهسازی سه نوع فیلد را از هم جدا میکند:
- مقادیر پیشفرض (Defaults): مقادیری که استقرار در صورت عدم ذکر هیچ چیزی به ارث میبرد (مثلاً
compress_ratio: 0.5وbudget_count_model: "deepseek-chat"). - تنظیمات محیط تست (Playground settings): مقادیری که یک اپراتور برای هر طرح تنظیم میکند (مثلاً
rpmوdaily_request_cap). - سوئیچهای حاکمیتی (Governance switches): مقادیر بولی (Boolean) که خاموش هستند مگر اینکه عمداً روشن شوند (مثلاً
allow_member_tool_overridesوallow_integrator_hmac_budget).
وقتی صفحه یک فروشنده با مشخصات MCP در تضاد باشد، برای رفتارهای اجباری، «مشخصات» برنده است و برای پیکربندیهای خاص محصول، «صفحه فروشنده» اولویت دارد. طرحواره به عنوان داور نهایی برای شکل فیلدها عمل میکند، زیرا از همان منبع متن مشخصات تولید شده است.
در لایهی فنی، برای جلوگیری از لینکهای شکسته و دادههای منسوخ، خط لوله مستندات پروتکل از چندین الگوی مهندسی سختگیرانه استفاده میکند. مستندات بهجای نوشتن صفحه به صفحه، از منابع (Sources) جمعآوری میشوند. همانطور که در تابع docsLoader در فایل lib/source.ts (خطوط ۱۸ تا ۲۷) دیده میشود، سیستم از دو مجموعه «محتوا» و «متا» استفاده میکند که در یک URL پایه ترکیب میشوند. این ساختار تضمین میکند که متن تغییر کند اما پوسته (Shell) ثابت بماند.
دو پیامد مهم از این ساختار حاصل میشود: اول اینکه جایگاه یک صفحه در منوی کناری، یک ساختار تحریری است و نه یک الزام پروتکل؛ توسعهدهندگان باید به خود صفحه ارجاع دهند نه به برچسب منوی کناری. دوم اینکه چون تغییر زبان در زمان بارگذاری رخ میدهد، ترجمهها ممکن است از متن انگلیسی عقب بمانند؛ بنابراین در موارد حیاتی، باید متن انگلیسی بازبینی مربوطه خوانده شود.
الگوی دیگری در این زمینه، استفاده از یک آداپتور منبع با مهر نسخه است. همانطور که در منطق قیمتگذاری درگاه هوش مصنوعی Cloudflare (CloudflareKVPseoSource در lib/pseo/sources/cf-kv-source.ts خطوط ۵ تا ۳۴) دیده میشود، صفحات تنها در صورتی فراخوانی میشوند که نسخه ذخیرهشده آنها برابر یا بالاتر از نخستین بازبینی باشد. اگر data.version < 1 باشد، سیستم مقدار null برمیگرداند تا اطمینان حاصل شود رکوردهای قدیمی به عنوان دادههای جاری ارائه نمیشوند.
علاوه بر این، سیستم از یک ایندکس تاییدشده استفاده میکند. بهجای یک لیست استاتیک از لینکها که ممکن است پوسیده شوند، ایندکس بهطور موازی با استفاده از Promise.allSettled در برابر ذخیرهساز بررسی میشود. سیستم تمام موارد ایندکس را پیمایش کرده، بررسی میکند که آیا کلید محتوا وجود دارد یا خیر و مواردی را که وجود ندارند حذف میکند. این کار تضمین میکند که پوسته مستندات — شامل ناوبری، عرض صفحه و فوتر — از محتوا جدا بماند.
هر مجموعه مستندات منتشر شده از دو لایه تشکیل شده است: یک پوسته و یک صفحه. پوسته (تعریف شده در app/[locale]/(docs)/layout.tsx خطوط ۱۰ تا ۲۱) مالک NavMobile ،NavBar ،MaxWidthWrapper و SiteFooter است. هیچ چیز در این پوسته درباره پروتکل نمیداند؛ تنها وظیفه آن این است که صدها صفحه را شبیه به یک محصول واحد نشان دهد.
هنگام ارزیابی صفحه یک فروشنده، مانند فصل درگاه Unity AI در Databricks، بررسی کنید که آیا پوسته یک نشانگر بازبینی یا «آخرین بهروزرسانی» و راهی برای رفتن به بازبینی قبلی ارائه میدهد یا خیر. پوستهای که هیچکدام را نشان ندهد، نمیتواند بگوید آیا کلمات بهروز هستند یا خیر، و صفحهای که نتوان آن را تاریخگذاری کرد، نمیتواند به عنوان یک الزام مورد استناد قرار گیرد.
در جریانهای کاری عاملمحور (Agentic)، مستندات اغلب به عنوان یک حافظه موقت (Cache) تلقی میشوند. پروتکل MCP الگوی «راهاندازی تنبل» (Lazy-initialization) را برای حافظهٔ عامل (Agent Memory) پیشنهاد میکند. در فایل backend/smartgate/modules/memory/algorithm.py (خطوط ۳۸۹ تا ۴۱۱)، entity_store تنها در اولین دسترسی ایجاد میشود.
این پیادهسازی از سه تصمیم کلیدی پیروی میکند:
- ایجاد تنبل (Lazy Creation): ذخیرهساز بهجای زمان Import، در اولین استفاده ایجاد میشود تا فرآیندهایی که هرگز جستوجو نمیکنند، هزینه پردازشی نپردازند.
- نامگذاری مشتقشده (Derived Naming): نام مجموعه از نام منبع بهعلاوه یک پسوند (مثلاً
_entities) مشتق میشود تا از تداخلات تصادفی جلوگیری شود. - اشتراک کلاینت (Client Sharing): برای ارائهدهندگانی مانند Qdrant، کلاینت با ذخیرهساز والد به اشتراک گذاشته میشود تا از تداخل قفلهای RocksDB در حالت تعبیه شده (Embedded mode) جلوگیری شود.
این رویکرد، «سیم ارتباطی» (نحوه درخواست داده توسط کلاینت) را از «بازیابی» (نحوه یافتن داده توسط سرور) جدا میکند. در حالی که گواهینامههای RAG و هوش مصنوعی عاملمحور بر نحوه تبدیل مستندات به بردار تمرکز دارند، MCP منحصراً بر لایه ارتباطی بین کلاینت و سرور متمرکز است. یک ایندکس صرفاً حافظهای از مستندات است؛ وقتی صفحات زیرین تغییر میکنند، ایندکس تا زمانی که دوباره ساخته نشود، منسوخ است. این موضوع یادآور این نکته است که یک پاسخ موفق هوش مصنوعی لزوماً به معنای صحت یکپارچگی سیستم نیست و نیاز به اعتبارسنجی دقیقتر دارد.
نادیده گرفتن گزارش تغییرات (Changelog)، علت اصلی شکست ادغامها در هنگام ارتقاست. گزارش تغییرات باید از بالا به پایین خوانده شود، زیرا ورودیها بهجای موضوع، بر اساس پیامد (Consequence) مرتب شدهاند. برای مثال، انتقال از بازبینی ۲۰۲۵-۱۱-۲۵ به ۲۰۲۶-۰۷-۲۸ تغییرات ساختاری (Breaking Changes) متعددی داشت:
- تغییرات انتقال: حذف نشستهای (Sessions) سطح پروتکل و حذف هدر session از انتقال HTTP.
- منطق نقاط انتهایی: مستقل کردن نقاط انتهایی لیست (List Endpoints) از اتصال.
- الگوهای درخواست: جایگزینی درخواستهای سرور-محور با الگوی چند-دور-گردشی (Multi round-trip).
- کشف (Discovery): افزودن یک فراخوانی کشف اختیاری برای کلاینتهایی که میخواهند قابلیتها را از ابتدا بدانند.
- کدهای خطا: انتقال کد خطای «منبع یافت نشد» (resource-not-found) به کد
invalid-paramsدر JSON-RPC. - احراز هویت: افزودن بررسیای که مستلزم آن است که پارامتر issuer در پاسخ توسط کلاینت تایید شود.
- راهنمای حافظه پنهان: نتایج لیست اکنون دارای راهنمای حافظه پنهان (Cache hints) و محدوده حافظه پنهان (Cache scope) هستند.
برای یک پیادهسازی حرفهای بدون انحراف خاموش، توسعهدهندگان باید ترتیب خواندن زیر را دنبال کنند. یک بررسی حرفهای اولیه شامل پنج صفحه است:
۱. نمای کلی (Overview): برای درک اینکه پروتکل چیست.
۲. نسخهبندی (Versioning): برای یادگیری اینکه چگونه دو طرف بر سر یک بازبینی توافق میکنند.
۳. چرخه حیات (Lifecycle): برای دیدن اینکه یک اتصال در طول زمان چه میکند.
۴. انتقال داده (Transports): برای درک نحوه سفر پیامها.
۵. المان پایه (The Primitive): صفحه خاص مربوط به ویژگیای که در حال استفاده است.
بسیار حیاتی است که تاریخ بازبینی مذاکرهشده را در لاگهای کلاینت خود — که به عنوان هدر protocol-version حمل میشود — پیدا کنید و یادداشتهای ادغام خود را به آن تاریخ خاص گره بزنید. در این راستا، باید مراقب بود که لاگهای توهمی را با رسیدهای واقعی در ارزیابی عملکرد AI اشتباه نگیریم تا از صحت ادغام مطمئن شویم. خواندن جدیدترین مستندات برای یک کلاینت قدیمی، دستورالعمل قطعی برای ایجاد خطاهای پیادهسازی است. اگر روی یک بازبینی قدیمی هستید، تحت تأثیر تغییرات نسخه جدید قرار نمیگیرید، مگر اینکه سرور دیگر از متن قدیمی پشتیبانی نکند.
سلسلهمراتب اعتماد و منابع
برای پیمایش در این اکوسیستم، از این سلسلهمراتب اعتماد استفاده کنید:
| منبع مطالعه | پاسخ به چه سوالی | مورد اعتماد برای |
|---|---|---|
| مشخصات تاریخدار | چه چیزی الزامی است | الزامات و انطباق (Conformance) |
| طرحواره (هر بازبینی) | شکل فیلدها، Enumها | انواع دقیق و مقادیر پیشفرض |
| گزارش تغییرات هر بازبینی | چه چیزی جابهجا شد و چرا | برنامهریزی برای ارتقا |
| مستندات فروشنده | پیکربندی فروشنده | توصیف آن فروشنده خاص |
| مستندات محصول SmartGate | محدودیتهای ابزار و حسابرسی | اجرای این نقطه انتهایی |
این انضباط، مستندات را از یک فایل راهنمای استاتیک به یک قرارداد ماشینخوان تبدیل میکند. با جفت کردن هر فیلد از طرحواره با یک بند از مشخصات تاریخدار، توسعهدهندگان میتوانند ادغامهای هوش مصنوعی بسازند که با پیشروی اکوسیستم، از کار نمیافتند.
سوالات متداول و ملاحظات نهایی
چرا مشخصات بهجای شماره، با تاریخ نسخهبندی میشود؟
زیرا یک بازبینی، عکس لحظهای از یک سند است نه یک انتشار نرمافزاری. دو طرف در طول مذاکره بر سر یک رشته تاریخ توافق میکنند. شماره نسخه باعث میشود توسعهدهنده متن جدیدترین نسخه را طوری بخواند که انگار اتصال فعلی او را توصیف میکند.
اگر روی جدیدترین بازبینی هستم، آیا باز هم باید گزارش تغییرات را بخوانم؟
بله. گزارش تغییرات جدیدترین بازبینی، تغییرات ساختاری — مانند حذف نشستهای سطح پروتکل و جابهجایی کدهای خطا — را ثبت میکند که توضیح میدهد چرا کلاینتی که بر اساس بازبینی قبلی ساخته شده، پس از ارتقا رفتار عجیبی نشان میدهد.
مستندات API ما باید به کجا ارجاع دهند؟
به بازبینی تاریخداری که پیادهسازی کردهاید، بهطوری که تاریخ در متن باشد و نه فقط در URL. لینک دادن به جدیدترین بازبینی سایت باعث میشود صفحه شما در اولین تغییر پروتکل، بهطور خاموش اشتباه شود.
محدودیتهای این راهنما چیست؟
این صفحه یک راهنمای مطالعه است، نه خودِ مشخصات. در صورت تضاد، بازبینی تاریخدار برنده است. علاوه بر این، طرحواره «شکل» را توصیف میکند نه «رفتار»؛ طرحواره به شما میگوید آیا یک فیلد اختیاری است، اما متن مشخصات به شما میگوید سرور باید با آن فیلد چه کند.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو