قبلاً چی گفتیم؟
توی قسمتهای قبلی این سری، با خود مفهوم MCP آشنا شدی، معماری Client-Server رو فهمیدی، یاد گرفتی چطور یه MCP Server بسازی و سه قابلیت اصلی (Tools، Resources و Prompts) رو عملی تجربه کردی. حالا وقتشه ببینیم این سرورهایی که ساختی، چطور به یه مدل AI واقعی وصل میشن.
این قسمت یکی از مهمترین بخشهای سریه. چون تا اینجا فقط سرور ساختیم — حالا میخوایم ببینیم کلاینت چطور کار میکنه و کدوم مدلها و اپلیکیشنها از MCP پشتیبانی میکنن.
Claude Desktop — خونه اصلی MCP
وقتی از MCP حرف میزنیم، اولین چیزی که باید بشناسی Claude Desktop هست. Anthropic که خالق MCP هست، این پروتکل رو مستقیماً داخل اپلیکیشن دسکتاپ Claude پیادهسازی کرده. یعنی Claude Desktop یه MCP Host بومی (native) هست.
این یعنی چی؟ یعنی وقتی Claude Desktop رو نصب میکنی، از همون اول قابلیت اتصال به MCP Serverها رو داره. نیاز به پلاگین اضافه یا تنظیمات پیچیده نیست. فقط باید بهش بگی کدوم سرورها رو میخوای.
فایل تنظیمات: claude_desktop_config.json
قلب اتصال MCP به Claude Desktop، یه فایل JSON سادهست به اسم claude_desktop_config.json. این فایل توی مسیر تنظیمات Claude Desktop قرار داره:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
ساختار این فایل خیلی سادهست. هر MCP Server که میخوای استفاده کنی رو داخل بخش mcpServers تعریف میکنی:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/Documents"]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}
بذار هر بخش رو توضیح بدم:
- کلید اصلی (مثل
filesystem): اسمی که خودت انتخاب میکنی. این اسم توی Claude Desktop نشون داده میشه - command: دستوری که برای اجرای سرور استفاده میشه (معمولاً
npxیاpython) - args: آرگومانهایی که به دستور پاس داده میشن
- env: متغیرهای محیطی (environment variables) مثل توکنها و کلیدها
بعد از ذخیره این فایل و ریستارت Claude Desktop، سرورها فعال میشن. میتونی توی پنجره چت Claude ببینی که آیکون ابزارها اضافه شده و میتونی ازشون استفاده کنی.
چطور میفهمی سرور وصل شده؟
وقتی Claude Desktop رو باز میکنی و سرورها درست تنظیم شده باشن، یه آیکون ابزار (معمولاً شکل چکش یا آچار) پایین پنجره چت ظاهر میشه. روش کلیک کنی، لیست ابزارهای هر سرور رو میبینی. مثلاً اگه سرور filesystem رو وصل کرده باشی، ابزارهایی مثل read_file و write_file و list_directory رو میبینی.
حالا کافیه توی چت از Claude بخوای کاری انجام بده. مثلاً بنویسی «فایلهای توی فولدر Documents رو لیست کن» و Claude خودش تشخیص میده که باید از ابزار list_directory استفاده کنه.
Claude Code — MCP برای توسعهدهندهها
اگه توسعهدهنده هستی، احتمالاً بیشتر وقتت رو توی ترمینال و ادیتور کد میگذرونی. Claude Code (که توی VS Code و JetBrains هم قابل استفادهست) یه MCP Host دیگهست که مستقیماً توی محیط توسعهات کار میکنه.
Claude Code هم مثل Claude Desktop از MCP پشتیبانی میکنه، ولی یه تفاوت مهم داره: محیطش command-line و کدمحور هست. یعنی ابزارهای MCP مستقیماً توی workflow کدنویسی تو ادغام میشن.
تنظیم MCP در Claude Code
توی Claude Code، سرورهای MCP رو توی فایل .mcp.json تعریف میکنی. این فایل میتونه توی ریشه پروژهات باشه (برای تنظیمات پروژهای) یا توی فولدر ~/.claude/ (برای تنظیمات global):
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://localhost/mydb"]
}
}
}
تفاوت کلیدی اینه که Claude Code ابزارهای MCP رو مستقیماً توی مکالمهات استفاده میکنه. مثلاً اگه سرور دیتابیس وصل باشه، میتونی بگی «آخرین ۱۰ سفارش رو از جدول orders بکش» و Claude Code مستقیماً کوئری رو اجرا میکنه.
آیا مدلهای دیگه هم از MCP استفاده میکنن؟
این یکی از رایجترین سوالهاییه که میشنوم: «MCP فقط مال Claude هست؟» جواب کوتاه: نه!
MCP یه پروتکل اوپنسورس هست. Anthropic اون رو ساخته، ولی مالکیت انحصاری نداره. هر کسی میتونه ازش استفاده کنه. و خبر خوب اینه که خیلی از اپلیکیشنها و مدلها دارن پشتیبانی از MCP رو اضافه میکنن.
اکوسیستم MCP
بذار ببینیم کیها از MCP پشتیبانی میکنن:
پشتیبانی بومی (Native):
- Claude Desktop — بله، همونطور که گفتیم
- Claude Code — محیط توسعه
- Cursor — ادیتور کد AI-محور، MCP رو مستقیماً پشتیبانی میکنه
- Windsurf — یکی دیگه از ادیتورهای AI
- Zed — ادیتور سریع با پشتیبانی MCP
پشتیبانی از طریق پلاگین:
- VS Code — با افزونههای مختلف
- JetBrains IDEs — از طریق پلاگینهای third-party
سازگار ولی غیررسمی:
- چون MCP یه استاندارد بازه، هر اپلیکیشنی میتونه یه MCP Client بنویسه و مدل دلخواهش رو بهش وصل کنه. مثلاً اگه یه اپلیکیشن از OpenAI GPT استفاده میکنه، میتونه یه لایه MCP Client اضافه کنه و از سرورهای MCP بهره ببره
نکته مهم درباره مدلهای زبانی
یه نکته که خیلی مهمه و باید دقت کنی: خود مدل زبانی (مثل GPT-4 یا Claude) نیازی نداره مستقیماً «از MCP پشتیبانی کنه». MCP یه پروتکل ارتباطی هست که در لایه اپلیکیشن پیادهسازی میشه، نه در لایه مدل.
یعنی چی؟ یعنی اگه اپلیکیشنت یه MCP Client داشته باشه، میتونه هر مدلی رو بهش وصل کنه. مدل فقط باید قابلیت Tool Use (استفاده از ابزار) داشته باشه — که اکثر مدلهای مدرن دارن.
پس وقتی میشنوی «فلان اپلیکیشن از MCP پشتیبانی میکنه»، منظور اینه که اون اپلیکیشن یه MCP Client داره. مدل زیرش هر چیزی میتونه باشه.
چند MCP Server همزمان
یکی از قدرتمندترین ویژگیهای MCP اینه که محدود به یه سرور نیستی. میتونی همزمان چندین MCP Server رو به یه Host وصل کنی. و این واقعاً جادوییه.
فرض کن این سرورها رو همزمان فعال کردی:
- سرور فایلسیستم — دسترسی به فایلهای لوکال
- سرور GitHub — دسترسی به ریپازیتوریها
- سرور PostgreSQL — دسترسی به دیتابیس
- سرور Slack — ارسال پیام
حالا میتونی به Claude بگی: «آخرین commit روی ریپوی main رو چک کن، بعد از دیتابیس آمار فروش امروز رو بکش، یه گزارش بنویس و توی Slack بفرست.» و Claude از هر چهار سرور استفاده میکنه تا این کار رو انجام بده!
مدیریت چند سرور
وقتی چند سرور فعال داری، Claude (یا هر مدلی که استفاده میکنی) خودش تصمیم میگیره از کدوم سرور و کدوم ابزار استفاده کنه. کافیه درخواستت رو بنویسی و مدل بر اساس لیست ابزارهای موجود، بهترین رو انتخاب میکنه.
ولی یه نکته هست: هر چقدر ابزارهای بیشتری فعال باشه، context window بیشتری مصرف میشه (چون توضیحات ابزارها باید به مدل فرستاده بشه). پس بهتره فقط سرورهایی رو فعال کنی که واقعاً لازم داری.
تنظیمات پیشرفته
Transport Types — روشهای ارتباط
MCP دو روش اصلی برای ارتباط بین Client و Server داره:
۱. stdio (Standard Input/Output): سرور به صورت یه فرآیند لوکال اجرا میشه و ارتباط از طریق stdin/stdout انجام میشه. این روش برای سرورهای لوکال عالیه و همونیه که توی مثالهای بالا دیدی.
۲. SSE (Server-Sent Events): سرور از طریق HTTP در دسترسه. این روش برای سرورهای ریموت و cloud-based مناسبه. میتونی یه MCP Server روی اینترنت داشته باشی و از هر جایی بهش وصل بشی.
{
"mcpServers": {
"remote-db": {
"url": "https://mcp.example.com/db",
"transport": "sse"
}
}
}
Environment Variables
خیلی از سرورهای MCP به اطلاعات حساس نیاز دارن — توکنها، رمزها، کلیدهای API. بهترین روش اینه که این اطلاعات رو از طریق env توی تنظیمات پاس بدی و هرگز مستقیماً توی کد سرور قرار ندی:
{
"mcpServers": {
"database": {
"command": "python",
"args": ["my_db_server.py"],
"env": {
"DB_HOST": "localhost",
"DB_PASSWORD": "secret_password",
"DB_NAME": "myapp"
}
}
}
}
این یه اصل امنیتی مهمه که توی قسمت بعدی بیشتر بهش میپردازیم.
یه سناریوی واقعی
بذار یه مثال واقعی بزنم تا ببینی همه اینها توی عمل چطور کنار هم قرار میگیرن.
فرض کن یه تیم توسعه نرمافزار داری. اعضای تیم از Claude Desktop استفاده میکنن و این سرورهای MCP رو تنظیم کردن:
- سرور GitHub: برای بررسی Pull Requestها و خوندن کد
- سرور Jira: برای مدیریت تسکها
- سرور دیتابیس: برای اجرای کوئریهای گزارشی
- سرور Slack: برای ارسال نوتیفیکیشن
حالا مدیر تیم میتونه به Claude بگه: «PR شماره ۱۲۳ رو بررسی کن، تسک مربوطه توی Jira رو پیدا کن، ببین تغییرات روی performance دیتابیس تاثیری داره یا نه، و خلاصهات رو توی کانال #dev بفرست.»
Claude از هر چهار سرور استفاده میکنه: کد رو از GitHub میخونه، تسک رو از Jira پیدا میکنه، کوئری test روی دیتابیس اجرا میکنه، و نتیجه رو توی Slack میفرسته. بدون اینکه مدیر تیم حتی یه خط کد بنویسه.
خلاصه و قدم بعدی
توی این قسمت یاد گرفتی:
- Claude Desktop چطور به صورت بومی از MCP پشتیبانی میکنه و چطور تنظیمش کنی
- Claude Code چطور MCP رو توی محیط توسعه ادغام میکنه
- MCP یه استاندارد بازه و محدود به Claude نیست
- میتونی چند سرور رو همزمان استفاده کنی
- دو روش ارتباط (stdio و SSE) وجود داره
حالا که میدونی چطور MCP رو به اپلیکیشنها وصل کنی، یه سوال مهم پیش میاد: امنیت چی؟ وقتی به AI اجازه میدی به فایلهات، دیتابیست و سرویسهات دسترسی داشته باشه، چه ریسکهایی وجود داره؟ توی قسمت بعدی دقیقاً درباره امنیت MCP و بهترین شیوهها صحبت میکنیم.
نظرات
هنوز نظری ثبت نشده. اولین نفر باشید!
نظر خود را بنویسید