درس ۲ از ۳۳

معرفی MCP (Introducing MCP)

عنوان اصلی: Introducing MCP

هدف یادگیری: بیان اینکه MCP چیست، چرا وجود دارد، و سه نقش host/client/server چطور کنار هم قرار می‌گیرند.

مفاهیم کلیدی: MCP host، MCP client، MCP server، capability، primitive، transport، local vs remote server.

MCP یک معماری client-server سخت‌گیرانه دارد. Host همان اپلیکیشن AI است (Claude Desktop، Claude Code، VS Code، Cursor). Host به ازای هر serverای که به آن وصل می‌شود، یک Client می‌سازد — هر Client یک اتصال stateful اختصاصی دارد. Server برنامه‌ای است که context فراهم می‌کند؛ می‌تواند به‌صورت محلی اجرا شود (host آن را به‌عنوان subprocess راه‌اندازی می‌کند و روی STDIO صحبت می‌شود) یا به‌صورت remote (یک سرویس HTTPS جداگانه که host از طریق Streamable HTTP به آن می‌رسد).

یک server «local» معمولاً فقط یک client را serve می‌کند (همان hostای که آن را راه انداخته)؛ یک server «remote» معمولاً چند client را. Host همان trust boundary و policy point است — تصمیم می‌گیرد چه serverهایی راه بیفتند، چه capabilityهایی اعطا شود، و آیا قبل از اجرای هر tool باید از کاربر تایید گرفت یا نه.

نام‌گذاری مهم است: «MCP server» برنامه‌ای است که context را serve می‌کند، چه فیزیکاً روی laptop کاربر بدود چه روی cloud. مثلاً Sentry MCP server روی پلتفرم Sentry با Streamable HTTP می‌چرخد؛ Filesystem reference server به‌عنوان subprocess با STDIO. پروتکل یکی، transport متفاوت.

دیاگرام معماری (متنی): سه جعبه کنار هم — «Host» (با چهار زیرجعبه «Client» داخلش)، «Local Server A (Filesystem, STDIO)»، «Local Server B (Database, STDIO)»، «Remote Server C (Sentry, Streamable HTTP)». هر جعبه Client با فلش «Dedicated connection» به یک server وصل است. دو client به Server C وصل‌اند تا نشان دهد یک remote server می‌تواند چند client را serve کند.

اشتباهات رایج

  • مترادف گرفتن client و host. Host حاوی clientهاست — یک host، چندین client.
  • این فرض که server همیشه local است. STDIO و Streamable HTTP هر دو first-class هستند.