پروتکل مدل کانتکست (MCP) بهتازگی بدون وضعیت (stateless) شده است و این تغییر به توسعهدهندگان اجازه میدهد تا سرورهای کوچک MCP را در طرح رایگان Cloudflare Workers راهاندازی کنند؛ مشروط بر اینکه هر درخواست زیر محدودیت ۱۰ میلیثانیهای CPU این پلتفرم باقی بماند.
چرا این تغییر اهمیت دارد
دو اقدام اخیر راه را باز کرد. اول اینکه، هسته MCP طراحی مبتنی بر نشست (session-based) خود را کنار گذاشت و اکنون بدون نیاز به دستدادن (handshake) اجرا میشود؛ یعنی هر درخواستی میتواند توسط هر نمونهای از کد مدیریت شود. دوم اینکه، Cloudflare کلاس McpAgent را بازنشسته کرد و اکنون برای سرورهای جدید، استفاده از هندلرهای درخواست ساده (plain request handlers) را توصیه میکند. این دو تغییر در کنار هم، نیاز به Durable Objects یا سایر ذخیرهسازهای دارای وضعیت (stateful) را از بین میبرند که مانع اصلی اجرای MCP در طرح رایگان بودند.
طرح رایگان واقعاً چه کارهایی میتواند انجام دهد
ما یک سرور MCP فقطخواندنی (read-only) ساختیم که فایلهای Markdown را از یک سایت استاتیک ارائه میدهد. این سرور دو ابزار list_articles و get_article را با استفاده از یک دستور switch ساده برای مسیریابی متدها پیادهسازی میکند. هیچ محاسبات سنگینی در کار نیست و فقط داراییهای استاتیک فراخوانی میشوند.
محاسبه زمان CPU در Cloudflare با زمان کل پاسخدهی متفاوت است. زمان CPU فقط چرخههای صرفشده برای اجرای جاوااسکریپت شما را محاسبه میکند؛ زمان صرفشده برای انتظار در فراخوانیهای شبکه یا خواندن از دیسک محاسبه نمیشود. این تفاوت بسیار مهم است، زیرا طرح رایگان، CPU را به ۱۰ میلیثانیه در هر درخواست محدود میکند، در حالی که تأخیر (latency) کل میتواند بالاتر باشد.
اندازهگیریهای ما در طرح رایگان به این صورت بود:
server/discover: ۰-۱ میلیثانیه CPUtools/list: ۰ میلیثانیه CPUget_article(بزرگترین فایل): ۱-۲ میلیثانیه CPU
حتی بزرگترین مقاله نیز تنها بخش کوچکی از بودجه ۱۰ میلیثانیهای را مصرف کرد. کندی ظاهری در سمت کلاینت ناشی از انتظار برای خوانده شدن فایل بود، نه از اجرای کد.
جایی که محدودیت چالشبرانگیز میشود
دادهها الگوی مشخصی را نشان میدهند:
- ابزارهای سرویسدهی داده (خواندنهای ساده، لیست کردنها) بهراحتی زیر محدودیت باقی میمانند.
- ابزارهای سنگین محاسباتی (تجزیه یا parsing، رندر کردن، هش کردن یا هر کار الگوریتمی دیگر) میتوانند بهسرعت بودجه ۱۰ میلیثانیهای را تمام کنند.
اگر یک ابزار به پردازشی فراتر از کارهای بسیار ساده نیاز داشته باشد، توسعهدهندگان مجبور خواهند بود به طرح پولی Workers مهاجرت کنند. طرح ۵ دلاری، محدودیت را به ۳۰ ثانیه در هر درخواست افزایش میدهد.
برندگان و کسانی که باید مراقب زمان باشند
سایتهای کوچکی که در حال حاضر فایلهای Markdown یا فید RSS را میزبانی میکنند، میتوانند تنها با یک مسیر (route) جدید، یک نقطه پایانی (endpoint) MCP ایجاد کنند و در طرح رایگان باقی بمانند. این به معنای هزینههای عملیاتی کمتر و اجزای کمتر برای علاقهمندان، سایتهای مستندات یا وبلاگهای کمبازدید است.
اگر یک ابزار به پردازشی فراتر از کارهای بسیار ساده نیاز داشته باشد، توسعهدهندگان مجبور خواهند بود به طرح پولی Workers مهاجرت کنند.
قبل از راهاندازی چه چیزهایی را باید تست کنید
- ابزار خود را پروفایل کنید: چند درخواست نمونه اجرا کنید و نشانگر CPU را در داشبورد Cloudflare بررسی کنید.
- مسیرهای استاتیک و دینامیک را از هم جدا کنید: سرویسدهی فایلهای استاتیک را در طرح رایگان نگه دارید و فراخوانیهای سنگین محاسباتی را به یک ورکر پولی یا یک بکاِند دیگر هدایت کنید.
- مراقب تأخیرهای پنهان باشید: انتظارهای شبکه جزو زمان CPU محسوب نمیشوند، اما همچنان بر تجربه کاربری تأثیر میگذارند. برای فایلهایی که سرویس میدهید، استفاده از کش در لبه (edge caching) را مد نظر قرار دهید.
نکته مقابل: طرح رایگان بیانتها نیست
اگرچه هسته بدون وضعیت (stateless) نیاز به Durable Objects را از بین میبرد، اما سقف ۱۰ میلیثانیهای همچنان یک محدودیت سختگیرانه است. توسعهدهندگانی که هزینه حتی یک تجزیه (parsing) نسبتاً ساده (مثلاً تبدیل markdown به HTML) را دستکم بگیرند، ممکن است بهطور غیرمنتظرهای به این محدودیت برخورد کنند. طرح رایگان برای سناریوهای «ارائه همانگونه که هست» مناسب است، نه برای تولید محتوا بهصورت آنی (on-the-fly).
گام بعدی برای MCP در Cloudflare
اگر سایت شما در حال حاضر محتوای خود را در یک باکت استاتیک (static bucket) دارد، افزودن یک نقطه پایانی MCP میتواند به سادگی چند خط کد و یک مسیر واحد باشد. این پروتکل اکنون با نیازهای سرورهای کوچک همسو شده است؛ یک نقطه پایانی HTTP ساده که تا زمانی که زیر سقف ۱۰ میلیثانیهای CPU باقی بمانید، میتواند بهصورت رایگان میزبانی شود.
