با گسترش اکوسیستم پیرامون مدلهای زبانی بزرگ (LLM)، نیاز به رابطهای استاندارد و قابل تعامل بین مدلهای هوش مصنوعی و منابع داده خارجی حیاتی شده است. اگرچه پروتکل زمینه مدل (MCP) در ابتدا از طریق حملونقل Localhost یا Stdio برای توسعه سریع محلی محبوبیت یافت، اما برنامههای سازمانی به راهحلی مستحکمتر نیاز دارند. اینجاست که MCP بر روی HTTP وارد میدان میشود و معماری مقیاسپذیر و شبکهدوستی را برای اتصال LLMها به منابع از راه دور ارائه میدهد.
در این پست، ما به بررسی زیرساختهای فنی پیادهسازی MCP بر روی HTTP میپردازیم و دلایل برتری آن برای محیطهای تولید، نحوه ساختاردهی درخواستها و ملاحظات عملی برای امنیت و مقیاسپذیری را بحث خواهیم کرد.
چرا HTTP را به جای Stdio انتخاب کنیم؟
برای توسعه محلی، Stdio زیبا و ساده است. با این حال، هنگام انتقال به محیط تولید با چندین مانع روبرو میشود:
- مقیاسپذیری: نمونههای Stdio تکفرآیندی هستند و تعادل بار (Load-balancing) آنها دشوار است.
- مرزهای شبکه: نمیتوانید به راحتی یک سرور MCP مبتنی بر Stdio را در سراسر یک شبکه خصوصی یا اینترنت در دسترس قرار دهید.
- مدیریت وضعیت: ماهیت بیحالت (Stateless) HTTP، زمانی که با مدیریت صحیح جلسه ترکیب شود، اغلب مقیاسپذیری را نسبت به نگهداری فرآیندهای فرزند با عمر طولانی سادهتر میکند.
با بهرهگیری از HTTP، سرورهای MCP میتوانند از زیرساختهای موجود بهرهمند شوند: تعادلکنندههای بار، دروازههای API، میانافزارهای احراز هویت و لایههای کش.
پیادهسازی فنی: ساختار درخواست
MCP بر روی HTTP معمولاً از مشخصه JSON-RPC 2.0 پیروی میکند. برخلاف APIهای REST سنتی که افعال (Verbs) عمل را تعیین میکنند، MCP به یک نقطه پایانی واحد (معمولاً POST /) تکیه دارد که در آن عمل در داخل پیکربندی JSON تعریف میشود.
ساختار اصلی JSON-RPC
یک درخواست معمولی MCP بر روی HTTP شامل jsonrpc، method، params و id است. فیلد method تعیین میکند که آیا شما در حال راهاندازی یک جلسه، خواندن یک منبع یا فراخوانی یک ابزار هستید.
// مثال: راهاندازی یک جلسه MCP از طریق HTTP POST
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {
"roots": { "listChanged": true },
"sampling": {}
},
"clientInfo": {
"name": "my-mcp-client",
"version": "1.0.0"
}
}
}
مدیریت منابع و ابزارها
پس از راهاندازی، مشتری میتواند منابع یا ابزارهای موجود را جستجو کند. به عنوان مثال، دریافت یک منبع خاص شامل فراخوانی روش resources/read است:
{
"jsonrpc": "2.0",
"id": 2,
"method": "resources/read",
"params": {
"uri": "file:///etc/config.json"
}
}
امنیت و احراز هویت در محیط تولید
از آنجا که MCP بر روی HTTP در بستر شبکه عمل میکند، امنیت بسیار مهم است. برخلاف Stdio که به ماشین محلی محدود است، نقاط پایانی HTTP در معرض مهاجمان بالقوه قرار دارند.
- امنیت لایه انتقال (TLS): همیشه HTTPS را اجباری کنید. MCP لایه رمزنگاری خاص خود را تعریف نمیکند و کاملاً به لایه حملونقل تکیه دارد.
- احراز هویت: مکانیسمهای استاندارد احراز هویت مانند کلیدهای API، OAuth 2.0 یا JWTها را در سطح دروازه API قبل از اینکه درخواست حتی به منطق MCP برسد، یکپارچه کنید.
- محدودیت نرخ (Rate Limiting): با پیادهسازی محدودیت نرخ روی نقطه پایانی
/، از سوءاستفاده جلوگیری کنید.
نتیجهگیری
MCP بر روی HTTP، پروتکل زمینه مدل را از یک ابزار توسعه محلی به یک استاندارد آماده برای تولید در یکپارچهسازی هوش مصنوعی تبدیل میکند. با پذیرش HTTP، توسعهدهندگان امکان ساخت عاملهای هوش مصنوعی توزیعشده، امن و مقیاسپذیر را باز میکنند که میتوانند به ایمنی با منابع داده سازمانی تعامل داشته باشند.
با تکامل مشخصه MCP، انتظار میرود مدیریت خطاهای قویتر و قابلیتهای پخش زنده (Streaming) بر روی HTTP دیده شود که نقش آن را به عنوان ستون فقرات نسل بعدی برنامههای LM تثبیت میکند.