عملی برای اینکه مدلهای زبانی بزرگ واقعاً کار مفیدی انجام دهند، معمولاً باید آنها را به دادهها، ابزارها یا APIهای خارجی متصل کرد. مشکل اینجاست که هنوز هیچ روش استانداردی برای این کار وجود ندارد.
شرکت Anthropic فکر میکند راه حلی دارد: MCP، یک پروتکل باز که وعده میدهد USB-C برای هوش مصنوعی باشد. بنابراین ما آن را آزمایش کردیم تا ببینیم چه چیزی کار میکند.
پروژه متنباز پروتکل زمینه مدل (MCP) که اواخر سال گذشته معرفی شد، توسط سازندگان مدل Claude به عنوان "یک استاندارد جهانی و باز برای اتصال سیستمهای هوش مصنوعی به منابع داده" توسعه داده شد.
این فقط شامل ذخیرهسازی دادهها مانند پایگاههای داده نیست. سرورهای MCP میتوانند ابزارها و منابع مختلف را در اختیار مدلهای هوش مصنوعی قرار دهند و عملکردهایی مانند پرس و جو از پایگاههای داده، راهاندازی کانتینرهای Docker یا تعامل با پلتفرمهای پیامرسانی مانند Slack یا Discord را فعال کنند.
اگر MCP به نظرتان آشنا میآید، به این دلیل است که در ماههای اخیر توجه زیادی را به خود جلب کرده است. مخزن رسمی MCP سرور در GitHub اکنون شامل دهها ادغام رسمی با فروشندگان بزرگ نرمافزار از جمله Grafana، Heroku و Elasticsearch به همراه بیش از 200 سرور نمایشی و انجمنی است.
اگر میخواهید یک LLM را به یک پایگاه داده SQL متصل کنید، خوشه Kubernetes خود را مدیریت کنید یا Jira را خودکار کنید، احتمالاً یک سرور MCP از قبل برای انجام این کار وجود دارد. در واقع، MCP آنقدر توجه به خود جلب کرده است که OpenAI و Google نیز اکنون از این پروژه حمایت میکنند.
در این راهنمای عملی، ما نگاهی دقیقتر به نحوه عملکرد MCP در عمل، کارهایی که میتوانید با آن انجام دهید، برخی از چالشهایی که با آن روبرو است و نحوه استقرار و ادغام سرورهای MCP با Claude Desktop یا مدلهای خود با Open WebUI خواهیم انداخت.
یک مرور سریع از MCP
قبل از اینکه به نحوه راهاندازی یک سرور MCP بپردازیم، بیایید نگاهی سریع به آنچه در پشت صحنه اتفاق میافتد بیندازیم.
در یک سطح بالا، MCP از یک معماری معمولی سرویس گیرنده-سرور با سه جزء کلیدی استفاده میکند: میزبان، سرویس گیرنده و سرور.
- میزبان معمولاً یک رابط کاربری قابل دسترس برای کاربر است، مانند Claude Desktop یا یک IDE مانند Cursor، و مسئول مدیریت یک یا چند سرویس گیرنده MCP است.
- هر سرویس گیرنده یک اتصال یک به یک را از طریق پروتکل MCP با سرور حفظ میکند. تمام پیامهای بین سرویس گیرنده و سرور با استفاده از JSON-RPC مبادله میشوند، اما لایه انتقال بسته به پیادهسازی خاص با Stdio، HTTP و رویدادهای ارسالی از سرور (SSE) که در حال حاضر پشتیبانی میشوند، متفاوت خواهد بود.
- خود سرور MCP قابلیتهای خاصی را در اختیار سرویس گیرنده قرار میدهد که آنها را به روشی استاندارد برای میزبان قابل دسترسی میکند. به همین دلیل است که MCP در اسناد به عنوان USB-C برای هوش مصنوعی توصیف میشود.
درست مانند USB که تا حد زیادی نیاز به رابطهای مختلف برای تعامل با دستگاههای جانبی و دستگاههای ذخیرهسازی را از بین برد، MCP هدفش این است که به مدلها اجازه دهد با استفاده از یک زبان مشترک با دادهها و ابزارها صحبت کنند.
بسته به اینکه منبع محلی باشد، برای مثال یک پایگاه داده SQLite، یا از راه دور، مانند یک سطل S3، سرور MCP یا مستقیماً به منبع دسترسی پیدا میکند یا به عنوان پلی برای انتقال تماسهای API عمل میکند. قیاس USB-C به ویژه در حالت دوم مناسب است، زیرا بسیاری از سرورهای MCP به طور موثر به عنوان آداپتور عمل میکنند و رابطهای خاص فروشنده را به یک فرمت استاندارد تبدیل میکنند که مدلهای زبانی میتوانند راحتتر با آن تعامل کنند.
با این حال، نکته مهم این است که نحوه ارائه این منابع و نحوه بازگشت پاسخها به مدل سازگار است.
یکی از جالبترین تفاوتهای ظریف MCP این است که به هر دو صورت کار میکند. نه تنها برنامه میزبان میتواند از سرور درخواست داده کند، بلکه سرور نیز میتواند از طریق یک درخواست نمونهبرداری/createMessage به سرویس گیرنده با LLM صحبت کند. متأسفانه، این عملکرد هنوز به طور جهانی پشتیبانی نمیشود، اما میتواند دری را به روی برخی از جریانهای کاری جالب باز کند.
اکنون که درک بهتری از MCP و نحوه عملکرد آن داریم، بیایید به نحوه استفاده از آنها بپردازیم.
تست MCP با Claude Desktop
با توجه به اینکه Anthropic MCP را به وجود آورده است، یکی از آسانترین راهها برای کار کردن با آن، به طور تعجبآوری، استفاده از Claude Desktop است.
اگر ترجیح میدهید از یک ارائهدهنده LLM خارجی مانند Anthropic استفاده نکنید، در بخش بعدی نحوه اتصال سرورهای MCP به مدلهای محلی و رابط Open WebUI محبوب را بررسی خواهیم کرد.
برای شروع، علاوه بر Claude Desktop، به چند وابستگی نیاز داریم، زیرا سرورهای MCP میتوانند در تعدادی از محیطهای مختلف اجرا شوند. برای اهداف این نسخه نمایشی، باید Node.js، Python 3 و مدیر بسته UVX را برای Python نصب کنید.
پس از آن، روی دکمه "Edit Config" کلیک کنید. این کار به طور خودکار یک فایل خالی claude_desktop_config.json را در زیر پوشه ~/Library/Application Support/Claude/ در Mac یا پوشه %APPDATA%\Claude\ در Windows ایجاد میکند. اینجاست که پیکربندی سرویس گیرنده MCP خود را اضافه خواهیم کرد. برای آزمایش، از سرورهای System Time و File System MCP استفاده خواهیم کرد.
فایل claude_desktop_config.json را در ویرایشگر متن یا IDE مورد علاقه خود باز کنید - ما از VSCodium استفاده میکنیم - و محتویات آن را با پیکربندی time-server زیر جایگزین کنید. در صورت تمایل، منطقه زمانی مورد نظر خود را تنظیم کنید.
{
"mcpServers": {
"time": {
"command": "uvx",
"args": ["mcp-server-time", "--local-timezone=UTC"]
}
}
}
فایل را ذخیره کنید و Claude Desktop را مجدداً راهاندازی کنید. وقتی دوباره راهاندازی شد، باید یک نماد جدید در جعبه چت مشاهده کنید که نشان میدهد این ابزار برای استفاده در دسترس است.
سپس میتوانیم آن را با پرسیدن یک سؤال ساده آزمایش کنیم، مانند: "ساعت در نیویورک چند است؟" Claude به تنهایی زمان محلی را نمیداند، اما اکنون این امکان را دارد که از سرور زمان شما پرس و جو کند تا آن را بفهمد.
اکنون سرور File System MCP را با بهروزرسانی فایل claude_desktop_config.json با موارد زیر آزمایش خواهیم کرد:
{
"mcpServers": {
"time": {
"command": "uvx",
"args": ["mcp-server-time", "--local-timezone=UTC"]
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/username/Desktop",
"/path/to/other/allowed/dir"
]
}
}
}
مطمئن شوید که /Users/username/Desktop و /path/to/other/allowed/dir را با دایرکتوریهای موجود در سیستم فایل خود که میخواهید به مدل دسترسی دهید، قبل از ذخیره بهروزرسانی کنید.
Claude Desktop را مجدداً راهاندازی کنید و باید متوجه شوید که اکنون به ابزارهای بیشتری نسبت به قبل دسترسی دارید. به طور خاص، سرور File System MCP به مدل اجازه میدهد تا انواع مختلفی از عملکردهای سیستم فایل را انجام دهد، از جمله:
- خواندن و نوشتن فایلها
- ویرایش فایلها
- ایجاد یا فهرست کردن دایرکتوریها
- انتقال یا جستجوی فایلها
- بازیابی اطلاعات فایل مانند اندازه یا تاریخ ایجاد
- فهرست کردن دایرکتوریهایی که به آن دسترسی دارد
در این مورد، ما به Claude دسترسی به دسکتاپ خود دادهایم. بنابراین ما چیزهایی مانند این میپرسیم:
- درخواست: "روی دسکتاپ من چیست"
- درخواست: "آیا میتوانید دسکتاپ من را مرتب کنید؟"
- درخواست: "نام file.txt را به doc.md تغییر دهید"
برخی از مشاهدات از میز فنی اسناد Vulture:
- ما برخی از عدم ثبات را با سرور File System MCP با کارهای طولانیتر مشاهده کردیم، بنابراین ممکن است نتایج شما متفاوت باشد.
- اگر ترجیح میدهید از PIP یا Docker استفاده کنید، میتوانید پیکربندیهای جایگزین برای سرورهای MCP Time و File Server را در اینجا پیدا کنید.
استفاده از MCP با مدلهای خود و Open WebUI
اگر ترجیح میدهید MCP را با مدلهای خود میزبانی شده آزمایش کنید، Open WebUI اخیراً پشتیبانی از پروتکل را از طریق یک پروکسی سازگار با OpenAPI ادغام کرده است.
اگر با Open WebUI آشنا نیستید، این یک رابط وب متنباز محبوب شبیه به ChatGPT است که با سرورهای استنتاجی مانند Ollama، Llama.cpp، vLLM یا واقعاً هر نقطه پایانی API سازگار با OpenAI ادغام میشود.
پس از اینکه Open WebUI را با مدلهای میزبانی شده محلی خود راهاندازی کردید، گسترش پشتیبانی ابزار MCP با استفاده از Docker نسبتاً آسان است.
همانطور که قبلاً ذکر کردیم، Open WebUI از MCP از طریق یک سرور پروکسی OpenAPI پشتیبانی میکند که آنها را به عنوان یک API استاندارد RESTful در معرض دید قرار میدهد. به گفته توسعهدهندگان، این امر مزایای متعددی از جمله امنیت بهتر، سازگاری گستردهتر و مدیریت خطا دارد، در حالی که همه چیز را ساده نگه میدارد.
پیکربندی سرورهای MCP احتمالاً در نتیجه سادهتر است؛ اما نیاز به تبدیل پیکربندیهای JSON مورد استفاده توسط Claude Desktop به یک رشته اجرایی استاندارد دارد.
به عنوان مثال، اگر بخواهیم یک سرور Brave Search MCP را راهاندازی کنیم که در صورت نیاز جستجوی Brave را از درخواست ورودی شما پرس و جو میکند، پیکربندی را به یک دستور ساده docker run تجزیه میکنیم.
config.json:
{
"mcpServers": {
"brave-search": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-brave-search"
],
"env": {
"BRAVE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
دستور Docker run:
docker run -p 8001:8000 --name MCP-Brave-Search -e BRAVE_API_KEY=YOUR_API_KEY_HERE ghcr.io/open-webui/mcpo:main --api-key "top-secret" -- npx -y @modelcontextprotocol/server-brave-search
اگر قبلاً کلید API Brave Search ندارید، میتوانید یکی را به صورت رایگان در اینجا دریافت کرده و از آن برای جایگزینی YOUR_API_KEY_HERE استفاده کنید. همچنین، کلید API top-secret را به چیزی منحصر به فرد، خصوصی و ایمن تغییر دهید؛ بعداً به آن نیاز خواهید داشت.
نکته: اگر میخواهید این سرور را در پسزمینه اجرا کنید، یک -d را بعد از run اضافه کنید. سپس میتوانید گزارشهای سرور را با اجرای docker logs MCP-Brave-Search بررسی کنید.
اگر میخواهید چندین سرور MCP را در Docker راهاندازی کنید، میتوانید این دستور را با:
- تغییر
8001برای پورت باز دیگر - بهروزرسانی مقدار
--name - و تنظیم دستور سرور بر اساس آن، دوباره اجرا کنید.
اتصال Open WebUI به سرور MCP
برای اینکه Open WebUI از سرور (یا سرورهای) MCP شما استفاده کند، باید به زیر تب "Tools" در تنظیمات کاربر خود در رابط بروید.
سپس میتوانید با ارائه نقطه پایانی سرور، نوع ابزار و کلید API، یک ابزار جدید را اضافه کنید.
در این مورد، نقطه پایانی سرور http://localhost:8001 است. نوع ابزار open-webui است. و کلید API برابر با کلید top-secret است که در مرحله قبل تنظیم کردهاید. سرور MCP با استفاده از این کلید تأیید میکند که Open WebUI این ابزار را برای استفاده مجاز است.
پس از ذخیره این ابزار در تنظیمات کاربر خود، باید بتوانید در حین تعامل با مدل از آن استفاده کنید. درست مانند مورد دسکتاپ Claude، باید با علامتگذاری دستورات خود به درستی، مشخص کنید که میخواهید چه زمانی از این ابزارها استفاده کنید. به عنوان مثال:
- درخواست: "براو، تفاوت بین یک باتری و یک سلول چیست؟"
برای اطمینان از اینکه همه چیز به درستی راهاندازی شده است، باید این سوال را بپرسید:
Running Brave Search: تفاوت بین باتری و سلول چیست؟روی سرور.
اگر اینطور نیست، دوباره بررسی کنید که هر یک از مراحل قبلی را به درستی دنبال کردهاید، هیچ خطایی در گزارشهای داکر وجود ندارد و ابزار فعال شده است.
آینده
در حالی که MCP در حال حاضر بیشتر با Anthropic و دسکتاپ Claude مرتبط است، این احتمال وجود دارد که پشتیبانی در ماههای آینده رشد کند زیرا توسعهدهندگان میفهمند که یک راه نسبتاً ساده برای گسترش مدلهای هوش مصنوعی در هر محیطی است.
با این حال، یک مسئله وجود دارد که باید به آن اشاره کرد. در حالی که MCP دارای ابزار و انعطافپذیری زیادی است، همچنین میتواند آسیبپذیریهای امنیتی قابلتوجهی را وارد کند.
با توجه به اینکه سرورهای MCP اساساً میتوانند هر کاری را که یک مدل میتواند انجام دهد، انجام دهند، مهم است که از آلودگی، دستکاری میانجی و افشای اطلاعات جلوگیری کنید، که میتواند عواقب نامطلوبی داشته باشد. همچنین اطمینان از اینکه پاسخهای سرور معتبر، قابل اعتماد و مطابق با رفتار مورد نظر است، بسیار مهم است.
بنابراین اگر به دنبال امتحان MCP هستید، مراقب باشید! با کمی دقت، میتوانید قدرت LLM را با ابزارها و اطلاعات جدید گسترش دهید. و شاید در این فرآیند، این USB-C را برای شوخی هوش مصنوعی پیدا کنید، اینطور نیست؟ ®