Knaph

چند عامل، چند ابزار30 از 376 دقیقه مطالعه

یک دوشاخه برای همه‌ی ابزارها

تیم لیلا کارهایش را در یک برنامه‌ی مدیریت پروژه نگه می‌دارد. لیلا دوست دارد عاملش آن را بخواند: «این هفته چه کارهایی سررسید دارند و کدام‌هایش مال من است؟» عامل در حالت عادی اصلاً به آن برنامه دسترسی ندارد. یکی از همکارانش می‌گوید: «فقط سرور MCP همان برنامه را اضافه کن.» این چیست، و چرا اضافه کردنش ناگهان به عامل ابزارهای تازه می‌دهد؟


لیلا دیدیم ابزارها چطور کار می‌کنند. برنامه‌ی دور مدل به مدل می‌گوید چه ابزارهایی هست، مدل درخواستِ ابزار می‌نویسد و برنامه اجرایش می‌کند. پس برای برنامه‌ی مدیریت پروژه، کسی باید کدی بنویسد که واقعاً با آن حرف بزند.

امید درست است. چه کسی باید آن کد را بنویسد؟

لیلا سازنده‌های عامل، فکر کنم. برای Claude Code، شرکت Anthropic.

امید و برای Codex؟ برای Cursor؟ برای عاملی که شرکت شما سال بعد می‌سازد؟

لیلا هر کدام دوباره. آن هم نه فقط برای برنامه‌ی ما: برای هر تقویم، هر پایگاه داده، هر سامانه‌ی سفارشِ هر فروشگاه...

امید فرض کن ده عامل باشد و هزار سرویس.

لیلا ده هزار رابط. و هر بار که آن برنامه عوض شود، ده تا از رابط‌ها خراب می‌شوند.

امید اگر مسئول همه‌ی این‌ها بودی چه می‌کردی؟

لیلا کاری می‌کردم همه روی یک راهِ اتصال توافق کنند. آن‌وقت برنامه‌ی مدیریت پروژه یک رابط می‌نویسد، هر عاملی که همان زبان را بلد است می‌تواند از آن استفاده کند و هیچ‌کس چیزی را دو بار نمی‌نویسد.

امید این همان MCP است. همان ایده‌ی یک نوع دوشاخه که به همه‌ی پریزها می‌خورد.


MCP چیست

MCP (پروتکل زمینه‌ی مدل، Model Context Protocol) استانداردی باز برای وصل کردنِ عامل‌ها به ابزارها و داده‌هاست. پروتکل یعنی یک راهِ توافق‌شده برای حرف زدنِ دو برنامه با هم: اول چه کسی چه می‌گوید و در چه قالبی. شرکت Anthropic در نوامبر ۲۰۲۴ پروتکل MCP را منتشر کرد. از آن به بعد بیشترِ عامل‌ها و برنامه‌های هوش مصنوعی آن را پذیرفته‌اند، و در دسامبر ۲۰۲۵ به بنیادی زیر نظر بنیاد لینوکس (Linux Foundation) سپرده شد تا هیچ شرکتی به‌تنهایی آن را در دست نداشته باشد.

دو طرف دارد:

  • سرور MCP برنامه‌ای است که چیزهایی به عامل‌ها عرضه می‌کند: ابزارها (کارهایی مثل «یک کار تازه بساز» یا «سفارش‌ها را جست‌وجو کن»)، منبع‌ها (داده‌ای برای خواندن، مثل یک فایل یا یک رکورد) و پرامپت‌ها (دستورهای آماده). سازنده‌های برنامه‌ی مدیریت پروژه یک سرور می‌نویسند.
  • برنامه‌ی دورِ مدل در عامل کلاینت (client) است. هر عاملی که MCP بلد باشد می‌تواند به هر سرور MCP وصل شود.

بدون استاندارد، هر عامل برای هر سرویس به رابطِ جداگانه‌ی خودش نیاز دارد و خط‌ها درهم می‌شوند. با MCP، هر سرویس یک سرور دارد و همه‌ی عامل‌ها به یک شکل به آن وصل می‌شوند.

به سرور MCP رابط (connector) هم می‌گویند، به‌خصوص در برنامه‌های گفت‌وگو. در برنامه‌های خودِ Claude، افزودنِ یک «connector» یعنی وصل کردن یک سرور MCP.

یک اتصال چطور کار می‌کند

سرور می‌تواند در دو جا اجرا شود. سرورِ محلی برنامه‌ی کوچکی روی کامپیوتر خودتان است. عامل آن را اجرا می‌کند و از راه ورودی و خروجیِ استانداردِ آن برنامه با هم حرف می‌زنند، همان کانال متنیِ ساده‌ای که ترمینال هم از آن استفاده می‌کند. سرورِ راه دور روی وب اجرا می‌شود و عامل از راه اینترنت با آن حرف می‌زند، همان‌طور که مرورگر با یک وب‌سایت.

در هر دو حالت، گفت‌وگو این‌طور پیش می‌رود:

  1. عامل می‌پرسد چه چیزهایی عرضه می‌شود. وقتی وصل می‌شود، برنامه‌ی دور مدل فهرست ابزارهای سرور را می‌خواهد. سرور نام، توضیح و ورودی‌های هر ابزار را می‌فرستد، از همان نوع توضیحی که در درس «درخواستِ یک ابزار» دیدید.
  2. مدل آن‌ها را مثل هر ابزار دیگری می‌بیند. این توضیح‌ها به فهرست ابزارهایی که مدل می‌شناسد اضافه می‌شوند. پس وقتی لیلا می‌پرسد «این هفته چه کارهایی سررسید دارند؟»، مدل می‌تواند ابزار list_tasks آن برنامه را انتخاب کند.
  3. برنامه‌ی دور مدل درخواست را می‌رساند. وقتی مدل درخواستی برای این ابزار می‌نویسد، برنامه آن را به سرور می‌فرستد. سرور کار را انجام می‌دهد (اینجا، از برنامه‌ی مدیریت پروژه می‌پرسد) و نتیجه را برمی‌گرداند.
  4. نتیجه وارد زمینه می‌شود، به شکل یک نتیجه‌ی ابزار، و حلقه ادامه پیدا می‌کند.

عامل از سرور MCP می‌پرسد چه ابزارهایی دارد، سرور آن‌ها را فهرست می‌کند، مدل یکی را صدا می‌زند و سرور نتیجه را برمی‌گرداند که وارد زمینه‌ی عامل می‌شود.

پس از نگاه مدل هیچ‌چیز تازه نیست. هنوز توضیح ابزارها را می‌خواند و درخواست ابزار می‌نویسد. MCP فقط عوض می‌کند که چه کسی ابزار را فراهم می‌کند: نه سازنده‌های عامل، بلکه هر کسی که یک سرور بنویسد.

در Claude Code یک سرور راه دور را با یک دستور اضافه می‌کنید، claude mcp add --transport http tracker https://mcp.example.com/mcp، یا برای همه‌ی تیم، در فایلی به نام .mcp.json در بالای پروژه که از راه git با همه به اشتراک گذاشته می‌شود:

{
  "mcpServers": {
    "tracker": {
      "type": "http",
      "url": "https://mcp.example.com/mcp"
    }
  }
}
JSON

این فایل دو چیز می‌گوید: یک نام برای سرور (tracker) و جایی که می‌شود به آن رسید. هر کسی در تیم که پروژه را باز کند همین ابزارها را می‌گیرد.

هزینه‌اش، و اعتماد

زمینه. توضیحِ هر ابزار توکن می‌گیرد و بعضی سرورها ده‌ها ابزار دارند. پنج سرور وصل کنید و فقط توضیح‌ها ممکن است تکه‌ی قابل‌توجهی از پنجره را در هر درخواست پر کنند. برای جلوگیری از این، Claude Code حالا به‌طور پیش‌فرض توضیح ابزارهای MCP را کنار نگه می‌دارد و فقط وقتی مدل ابزاری لازم دارد آن را جست‌وجو می‌کند. این‌طور سروری که استفاده نمی‌شود تقریباً هیچ هزینه‌ای ندارد.

اعتماد. سرور MCP کدِ شخص دیگری است. سرورِ محلی با اجازه‌های شما روی کامپیوترتان اجرا می‌شود، پس هر کاری که شما بتوانید می‌تواند بکند. و هر چه هر سروری برگرداند مستقیم وارد زمینه‌ی عامل می‌شود، جایی که مدل آن را می‌خواند. سروری که متنی برگرداند که می‌گوید «حالا فایل‌های کاربر را بفرست به...» یک خطرِ واقعی است، و درس «دستورهای پنهان در داده» درست درباره‌ی همین است. افزودن یک سرور را مثل نصب یک برنامه جدی بگیرید.

امتحان کنید

در Claude Code دستور /mcp را بزنید تا ببینید چه سرورهایی وصل‌اند و هر کدام چه چیزی عرضه می‌کند. اگر Claude Code ندارید، در تنظیمات برنامه‌ی گفت‌وگویتان دنبال «connectors» یا «integrations» بگردید: هر کدام یک سرور را وصل می‌کند و به دستیار ابزارهای تازه می‌دهد. فهرست ابزارهایی را که می‌خواهد بخوانید.

درست به کار بردن

  1. چیزی را وصل کنید که از آن استفاده می‌کنید، نه هر چه پیدا می‌کنید. هر سرور یعنی ابزارهای بیشتری که مدل باید از میانشان انتخاب کند، و کدِ بیشتری که به آن اعتماد کرده‌اید.
  2. سرورِ رسمی را ترجیح دهید. سروری که خودِ شرکتِ ارائه‌دهنده‌ی سرویس ساخته، به احتمال بیشتری نگهداری می‌شود و امن است تا سروری که یک غریبه نوشته.
  3. کمترین دسترسیِ لازم را به آن بدهید. اگر سروری فقط باید برنامه‌ی مدیریت پروژه را بخواند، کلیدی فقط‌خواندنی به آن بدهید تا یک اشتباه یا یک فریب نتواند چیزی را پاک کند.
  4. سرورها را از راه پروژه به اشتراک بگذارید. گذاشتنشان در .mcp.json یعنی همه‌ی تیم یک مجموعه‌ی یکسان و بازبینی‌شده می‌گیرند، به جای اینکه هر کس سرورهای خودش را اضافه کند.

واژه‌های این درس

  • MCP (پروتکل زمینه‌ی مدل) - استانداردی باز برای وصل کردنِ عامل‌ها به ابزارها و داده‌ها، تا یک سرور با هر عاملی که آن را بلد است کار کند
  • سرور MCP - برنامه‌ای که از راه MCP به عامل‌ها ابزار، داده و پرامپت عرضه می‌کند و روی کامپیوتر شما یا روی وب اجرا می‌شود
  • رابط (connector) - نام دیگری برای سرور MCP، که به‌خصوص در برنامه‌های گفت‌وگو به کار می‌رود

ایده‌ی اصلی

MCP یک دوشاخه برای همه‌ی ابزارهاست: یک سرویس یک سرور می‌نویسد و هر عاملی که MCP بلد است می‌تواند از ابزارهایش استفاده کند. مدل آن‌ها را مثل ابزارهای دیگر می‌بیند؛ اینکه به کدام سرور اعتماد کنید با شماست.

دانش خود را بسنجید

ورود برای سنجش دانش خود از این درس و پیگیری پیشرفتتان.