12 β MCP (Model Context Protocol)¶
β¬ οΈ Oldingi: 11 β Agentlar Β· π Kitob boshi Β· Keyingi: 13 β Embedding va semantik qidiruv β‘οΈ
Bu bobda: Oldingi boblarda har bir tool'ni o'z qo'limiz bilan yozdik (09-10) va ulardan agent qurdik (11). Endi savol tug'iladi: agar GitHub, ma'lumotlar bazasi, Slack va fayllar bilan ishlash kerak bo'lsa β har biriga, har bir ilovada, qaytadan tool yozaverishimiz kerakmi? MCP (Model Context Protocol) β aynan shu takrorlanishni yo'q qiladigan ochiq standart. Bu bobda MCP nima, nega "AI dunyosining USB-C'si" deyilishini, arxitekturasini, PHP SDK'dagi
BetaMcpyordamida tayyor MCP serverlarni Claude'ga ulashni, remote MCP'ni va MCP qachon oddiy tool'dan afzalligini o'rganamiz.
Nega bu bob muhim?¶
09 va 10-boblarda biz tool yozishni o'rgandik: ob-havo tool'i, kalkulyator, baza so'rovi. 11-bobda ulardan agent qurdik. Hammasi yaxshi ishladi. Ammo bitta muammo bor β va u real loyihalarda tez seziladi.
Tasavvur qiling, sizning kompaniyangizda uchta AI ilova bor:
- mijozlar uchun chatbot;
- ichki yordamchi (xodimlar uchun);
- hujjatlar tahlili tizimi.
Har uchalasiga ham GitHub bilan ishlash kerak (issue'larni o'qish), ma'lumotlar bazasi bilan (buyurtmalarni qidirish) va fayl tizimi bilan (hujjatlarni o'qish). Demak siz GitHub uchun tool'ni... uch marta yozasiz. Baza tool'ini β uch marta. Fayl tool'ini β uch marta. Va agar GitHub o'z API'sini o'zgartirsa β uchala joyni ham yangilaysiz.
Endi yana yomonroq: ertaga hamkasbingiz Python'da to'rtinchi ilova yozadi. U sizning PHP tool'laringizdan umuman foydalana olmaydi β hammasini noldan yozadi. Beshinchi ilova TypeScript'da bo'lsa β yana noldan.
Bu β aniq takrorlanish (duplication) muammosi. Har bir "AI β tashqi tizim" jufti uchun alohida ko'prik yozilmoqda. Va har bir ko'prik o'sha ilovaga, o'sha tilga, o'sha provayderga bog'lab qo'yilgan.
Hayotiy o'xshatish. Eski telefonlarni eslang: Nokia'ning o'z zaryadlovchisi, Samsung'ning boshqasi, Sony'ning yana boshqasi bor edi. Mehmonga borsangiz, "zaryadlovching bormi?" deb so'rardingiz β va ko'pincha mos kelmasdi. Keyin USB-C chiqdi: bitta standart shtekker β telefon, planshet, noutbuk, quloqchin β hammasiga mos. Endi bitta simni hamma joyga olib yurasiz. MCP β AI dunyosidagi aynan shu USB-C: tashqi tizimga ulanishning bitta standarti.
Bu bobda biz "har qurilmaga alohida zaryadlovchi" dunyosidan "bitta standart shtekker" dunyosiga o'tamiz.
MCP nima?¶
MCP (Model Context Protocol) β bu AI ilovalarni tashqi tizimlar va tool'larga ulashning ochiq standarti (protokoli). U Anthropic tomonidan e'lon qilingan, lekin ochiq β istalgan kompaniya, istalgan til foydalanishi mumkin.
Asosiy g'oya juda sodda:
- Tashqi tizim egasi (masalan, GitHub) bir marta MCP server yozadi. Bu server "men quyidagi tool'larni va ma'lumotlarni MCP standartida taqdim etaman" deydi.
- AI ilova (siz yozadigan) MCP mijoz (client) sifatida o'sha serverga ulanadi β va darhol uning barcha tool'laridan foydalana oladi. O'zingiz hech narsa yozmaysiz.
Eng muhimi: server bir marta yoziladi, lekin har qanday MCP-mos AI ilova (qaysi tilda, qaysi provayderda bo'lishidan qat'i nazar) undan foydalana oladi. Aynan USB-C kabi β bitta server, cheksiz mijoz.
Quyidagi rasm "MCP'siz" va "MCP bilan" dunyolarni taqqoslaydi:
Chap tomonda (MCP'siz): har bir ilova har bir tashqi tizimga alohida simli ulanish β NΓM ta ko'prik, hammasi qo'lda. O'ng tomonda (MCP bilan): har bir tashqi tizim bitta MCP server beradi, har bir ilova bitta MCP mijoz orqali ulanadi β N+M ta qism, hammasi standart.
Eslatma
"Protokol" β bu ikki tomon o'zaro qanday gaplashishini belgilovchi kelishuv (qoidalar to'plami). Masalan, HTTP β brauzer va veb-server qanday gaplashishini belgilaydi. MCP β AI ilova va tool-server qanday gaplashishini belgilaydi. Standart bo'lgani uchun har ikki tomon bir-birini "tushunadi", garchi turli odamlar yozgan bo'lsa ham.
Maslahat
MCP'ni o'rganishda eng oson yo'l β uni 09-10 boblardagi tool'larning tashqi, qayta ishlatiladigan ko'rinishi deb tasavvur qilish. O'sha tool'lar β lekin endi ilovangiz ichida emas, alohida server'da yashaydi va hamma uchun ochiq.
Arxitektura: server, mijoz, LLM¶
MCP'da uchta rol bor. Ularni aniq ajratib olaylik, chunki bu butun bobning asosi:
- MCP server β tool'lar, ma'lumot va shablonlar taqdim etadi. Masalan, GitHub MCP serveri "issue ochish", "PR ro'yxati", "repo qidirish" tool'larini beradi. Bu siz yozadigan ilova emas β odatda tashqi tomon (GitHub, jamoa) yozgan, tayyor.
- MCP mijoz (client) β server bilan gaplashadi. Bu sizning AI ilovangiz ichidagi qism. U serverga ulanadi, "qanday tool'laring bor?" deb so'raydi, kerakli tool'ni chaqiradi va natijani oladi.
- LLM (Claude) β mijoz orqali olingan tool'lardan foydalanadi. Model "GitHub'da issue ochay" deb qaror qiladi, mijoz buni MCP serverga uzatadi, server bajaradi, natija modelga qaytadi.
Oqim quyidagicha: LLM β MCP mijoz β MCP server β (tashqi tizim) β orqaga.
Diqqat qiling β bu 10-bobdagi tool runner'ning aynan kengaytmasi. O'sha yerda tool'ni funksiya (closure) bajarardi; bu yerda tool'ni MCP server bajaradi. LLM uchun esa farq yo'q: u baribir "tool chaqiraman" deydi, javob esa baribir tool_result bo'lib qaytadi. MCP shunchaki tool'ning manbasini (ilovangiz ichi β tashqi server) o'zgartiradi.
Hayotiy o'xshatish. Restoranni tasavvur qiling. Mijoz (LLM) ovqat buyuradi. Ofitsiant (MCP mijoz) buyurtmani oshxonaga olib boradi. Oshxona (MCP server) ovqatni tayyorlaydi va qaytaradi. Mijoz oshxona ichida nima bo'layotganini bilmaydi β u faqat ofitsiant orqali gaplashadi. Va eng yaxshi tomoni: o'sha oshxona (bitta MCP server) bir vaqtning o'zida ko'plab ofitsiantlarga (ko'p AI ilovaga) xizmat qila oladi.
MCP nima beradi: Tools, Resources, Prompts¶
MCP server uch xil narsa taqdim etishi mumkin. Har birini qisqacha ko'rib chiqaylik:
1. Tools (tool'lar β harakat). Bu β modelning harakat qiladigan vositasi: issue ochish, faylga yozish, baza so'rovini bajarish, xabar yuborish. Aynan 09-10 boblardagi tool tushunchasi, lekin server tomonida. Model "buni bajar" deydi, tool bajaradi va natija qaytaradi.
2. Resources (resurslar β ma'lumot/kontekst). Bu β modelga kontekst beradigan ma'lumot: fayl mazmuni, hujjat, baza yozuvi, log. Resource harakat emas β u shunchaki "mana sizga kerakli ma'lumot" deb beradi. Masalan, fayl-tizim MCP serveri file:///hisobot.txt resursini berishi mumkin β model uni o'qib, kontekst sifatida ishlatadi.
3. Prompts (shablonlar β tayyor so'rovlar). Bu β server tomonidan tayyorlangan prompt shablonlari. Masalan, "kodni tahlil qil" yoki "PR'ni ko'rib chiq" shabloni. Foydalanuvchi shablonni tanlaydi, server uni to'liq prompt'ga aylantirib beradi. Bu β promptlarni qayta ishlatishning qulay usuli (promptlarni boshqarish haqida 23-bobda batafsil).
Qisqacha farq
Tools = model qiladi (harakat). Resources = model o'qiydi (ma'lumot). Prompts = foydalanuvchi tanlaydi (tayyor so'rov). Ko'pchilik MCP serverlar asosan Tools beradi β biz ham shu bobda asosan tool'larga e'tibor qaratamiz.
Mavjud MCP serverlar β tayyor ekotizim¶
MCP'ning eng kuchli tomoni β siz hech narsa yozmasdan tayyor serverlardan foydalanishingiz mumkin. Allaqachon ko'plab serverlar mavjud (rasmiy va jamoa tomonidan):
| MCP server | Nima beradi |
|---|---|
| Fayl tizimi | Papkalardagi fayllarni o'qish/yozish/qidirish |
| GitHub | Issue, PR, repo, kod qidiruvi |
| PostgreSQL / SQLite | Bazaga so'rov yuborish, sxemani o'qish |
| Slack | Kanalga xabar yuborish, xabarlarni o'qish |
| Veb qidiruv / fetch | Internetdan ma'lumot olish, sahifa o'qish |
| Google Drive, Notion, ... | Hujjatlarni o'qish/qidirish |
G'oya juda kuchli: agar sizga GitHub bilan ishlash kerak bo'lsa β GitHub MCP serverini ishlatasiz, yozmaysiz. Agar bazaga ulanish kerak β Postgres MCP serverini ulaysiz. Sizning vazifangiz faqat mijoz tomonini sozlash β keyingi bo'limda aynan shuni qilamiz.
Maslahat
Yangi loyiha boshlashdan oldin har doim so'rang: "Bu integratsiya uchun tayyor MCP server bormi?" Agar bo'lsa β yarim ish allaqachon bajarilgan. Faqat juda maxsus, ilovangizga xos mantiq uchun o'z tool'ingizni yozasiz (buni quyida "MCP vs oddiy tool" bo'limida ko'ramiz).
PHP'da MCP β BetaMcp bilan ulanish¶
Endi eng amaliy qismga o'tamiz. Claude PHP SDK'da MCP bilan ishlash uchun maxsus yordamchi klass bor: Anthropic\Lib\Tools\BetaMcp. U MCP serverdagi tool'larni avtomatik ravishda Claude tushunadigan runnable tool'larga aylantiradi β va siz ularni 10-bobdagi tool runner bilan to'g'ridan-to'g'ri ishlatasiz.
Buning uchun ikkita paket kerak:
composer require anthropic-ai/sdk
composer require guzzlehttp/guzzle # SHART β PSR-18 HTTP mijoz
composer require mcp/sdk # MCP mijoz (rasmiy PHP MCP SDK)
Eslatma
mcp/sdk β bu MCP mijozini (va server qurish vositalarini) beradigan alohida, rasmiy PHP paketi. anthropic-ai/sdk ichidagi BetaMcp esa ko'prik: u mcp/sdk mijozidan olingan tool'larni Claude'ning tool runner'iga ulaydi. Ya'ni: mcp/sdk β serverga ulanadi, BetaMcp β Claude bilan bog'laydi.
Umumiy oqim¶
To'rt qadam:
- MCP mijoz yaratamiz va serverga ulanamiz (
Mcp\Client). - Serverdan tool ro'yxatini olamiz (
$mcp->listTools()). BetaMcp::tools(...)bilan ularni Claude tool'lariga aylantiramiz.- Tool runner'ga beramiz β qolganini SDK qiladi (xuddi 10-bobdagidek).
Mana to'liq misol β bu yerda biz GitHub'ning hostlangan MCP serveriga ulanamiz va Claude'dan repodagi oxirgi issue'larni so'raymiz:
<?php
require __DIR__ . '/vendor/autoload.php';
use Anthropic\Client as Anthropic;
use Anthropic\Lib\Tools\BetaMcp;
use Mcp\Client;
use Mcp\Client\Transport\HttpTransport;
// 1) MCP mijozni yaratib, GitHub MCP serveriga ulanamiz.
// Token MUHIT O'ZGARUVCHISIDAN β kodga YOZMA!
$mcp = Client::builder()->build();
$mcp->connect(new HttpTransport(
endpoint: 'https://api.githubcopilot.com/mcp/',
headers: ['Authorization' => 'Bearer ' . getenv('GITHUB_TOKEN')],
));
// 2) Serverdan mavjud tool'lar ro'yxatini olamiz.
$tools = $mcp->listTools()->tools;
echo "Serverdan " . count($tools) . " ta tool olindi.\n";
// 3) Anthropic mijozini yaratamiz va MCP tool'larini Claude tool'lariga aylantiramiz.
$claude = new Anthropic(apiKey: getenv('ANTHROPIC_API_KEY'));
$runner = $claude->beta->messages->toolRunner(
model: 'claude-opus-4-8',
maxTokens: 4096,
messages: [[
'role' => 'user',
'content' => 'github/github-mcp-server repozitoriyasidagi oxirgi 5 ta '
. 'ochiq issue\'ni ro\'yxatla: raqami, sarlavhasi va kim ochgani.',
]],
// MANA SEHR: MCP tool'lari -> Claude runnable tool'lari
tools: BetaMcp::tools($tools, $mcp),
maxIterations: 10,
);
// 4) Runner avtomatik loop'ni boshqaradi: Claude tool chaqiradi,
// BetaMcp uni MCP serverga uzatadi, natija qaytadi β toza javob chiqquncha.
foreach ($runner as $message) {
foreach ($message->content as $block) {
if ($block->type === 'text' && $block->text !== '') {
echo $block->text . "\n";
} elseif ($block->type === 'tool_use') {
echo " [tool chaqirildi: {$block->name}]\n";
}
}
}
// 5) Ish tugagach ulanishni yopamiz.
$mcp->disconnect();
Bu kodning go'zalligi β siz birorta ham GitHub tool'ini yozmadingiz. input_schema, description, API chaqiruvi β hammasi GitHub MCP serverida tayyor. Siz faqat uladingiz. Va ertaga Slack MCP serveri kerak bo'lsa β xuddi shu to'rt qadam, faqat endpoint boshqacha.
Maslahat
BetaMcp::tools($tools, $mcp) β bu butun bobning yuragi. U MCP tool ro'yxatini olib, har birini BetaRunnableTool'ga aylantiradi (tool chaqirilganda u avtomatik $mcp->callTool(...) ni ishlatadi). Bitta MCP tool'ni alohida aylantirish uchun BetaMcp::tool($tool, $mcp) ham bor.
Resource va prompt'larni ulash¶
BetaMcp faqat tool'lar bilan cheklanmaydi. Agar server resource (ma'lumot) bersa, uni Claude'ga kontekst sifatida ulashingiz mumkin:
// MCP serverdan resursni o'qib, Claude content blokiga aylantiramiz.
$natija = $mcp->readResource('file:///hisobot.txt');
$blok = BetaMcp::resourceToContent($natija); // Claude content bloki
$message = $claude->messages->create(
model: 'claude-opus-4-8',
maxTokens: 1024,
messages: [[
'role' => 'user',
'content' => [
$blok, // resurs (kontekst)
['type' => 'text', 'text' => 'Bu hisobotni qisqacha xulosa qil.'],
],
]],
);
Server bergan prompt shablonini esa BetaMcp::message(...) bilan to'g'ridan-to'g'ri messages massiviga aylantirasiz. Shunday qilib, BetaMcp MCP'ning uchala turini ham (tool, resource, prompt) Claude SDK shakliga "tarjima" qiladi β siz qo'lda format o'zgartirmaysiz.
Beta
Bu klasslar Anthropic\Lib\Tools va $client->beta->... ostida β ya'ni hali beta (rivojlanmoqda). Nomlar yoki imzolar SDK versiyasi bilan o'zgarishi mumkin. Aniq, eng so'nggi imzo uchun har doim rasmiy SDK hujjatiga va vendor/anthropic-ai/sdk/examples/beta/mcp_tool_runner.php namunasiga qarang. Bu bobdagi kod anthropic-ai/sdk v0.29.1 da tekshirilgan.
Remote MCP β Claude API to'g'ridan ulanadi¶
Yuqorida biz MCP serverga o'zimiz (PHP mijoz orqali) ulandik. Ammo yana bir yo'l bor: Claude API'ning o'zi to'g'ridan-to'g'ri uzoq (remote) MCP serverga ulanishi mumkin. Bunda siz so'rovga mcp_servers parametrini qo'shasiz, qolganini Anthropic serveri qiladi.
SDK'da buning uchun BetaRequestMCPServerURLDefinition klassi bor:
use Anthropic\Beta\Messages\BetaRequestMCPServerURLDefinition;
$server = BetaRequestMCPServerURLDefinition::with(
name: 'github',
url: 'https://api.githubcopilot.com/mcp/',
authorizationToken: getenv('GITHUB_TOKEN'), // server uchun token
);
// $server ni beta messages so'roviga mcpServers parametri sifatida berasiz β
// Claude serverning o'zi MCP serverga ulanib, tool'larni chaqiradi.
Farqi qanday? Oddiy BetaMcp yo'lida tool'ni sizning PHP kodingiz bajaradi (mijoz sizda). Remote MCP'da esa tool'ni Anthropic serveri bajaradi (mijoz ham bulutda) β sizning serveringiz tashqi tizimga ulanmaydi ham. Bu sozlashni soddalashtiradi, lekin tokeningiz Anthropic orqali o'tadi va siz tool bajarilishini kamroq nazorat qilasiz.
Qaysi birini tanlash?
Lokal MCP (BetaMcp + mcp/sdk): tool'ni o'z serveringizda bajarasiz β to'liq nazorat, ichki/maxfiy serverlarga ulanish mumkin. Remote MCP (mcp_servers parametri): Anthropic ulanadi β sozlash oson, lekin faqat ommaviy/ruxsat berilgan serverlarga. Boshlash uchun ikkalasi ham yaxshi; nazorat kerak bo'lsa β lokal.
O'z MCP serveringizni yozish (g'oya)¶
Hozirgacha biz tayyor serverlardan foydalandik. Ammo agar sizning kompaniyangizning maxsus tizimi bo'lsa (masalan, ichki CRM yoki ombor bazasi) va uni ko'p AI ilovaga ochmoqchi bo'lsangiz β o'zingiz MCP server yozasiz.
Konseptual jihatdan MCP server ikki narsani qiladi:
- Tool ro'yxatini e'lon qiladi β "menda
mijoz_qidir,buyurtma_holatidegan tool'lar bor, har birininginput_schema'si shunday". - Tool'ni bajaradi β mijoz
mijoz_qidirni chaqirsa, server bazaga so'rov yuboradi va natijani MCP formatida qaytaradi.
Eng muhim g'oya: MCP β standart, demak serverni istalgan tilda yozish mumkin. PHP'da (mcp/sdk server qismi bilan), Python'da, TypeScript'da β farqi yo'q. Bir marta yozilgan server har qanday MCP-mos AI ilovaga (qaysi tilda bo'lishidan qat'i nazar) xizmat qiladi. Aynan shu β MCP'ning butun qiymati: yozasiz bir marta, ishlatadi hamma.
Soddalashtirilgan tasavvur
O'z MCP serveringiz β bu sizning 09-bobdagi tool'laringizni alohida xizmatga chiqarish. Ilgari tool'lar ilova ichida edi; endi ular HTTP orqali ochiq turuvchi serverda yashaydi va MCP qoidalariga ko'ra javob beradi. Server qurishning to'liq tafsiloti mcp/sdk hujjatida; bu bobda biz asosan iste'molchi (mijoz) tomonida ishladik, chunki amaliyotda 90% holatlarda siz tayyor serverdan foydalanasiz.
MCP vs oddiy tool β qachon qaysi biri?¶
Bu β bobning eng muhim amaliy savoli. MCP "sehrli" emas; u har doim kerak emas. Ba'zan 09-10 boblardagi oddiy tool β to'g'riroq tanlov. Mana taqqoslash:
| Mezon | Oddiy tool (09-10 bob) | MCP |
|---|---|---|
| Qayerda | Ilovangiz ichida (funksiya/closure) | Tashqi server'da |
| Maqsad | Ilovaga xos, sodda mantiq | Qayta ishlatiladigan, standart integratsiya |
| Kim ishlatadi | Faqat shu ilova | Har qanday MCP-mos ilova/til |
| Sozlash | Eng oddiy β bir necha qator | Server + mijoz ulanishi |
| Yangilash | Kodni o'zgartirasiz | Server egasi yangilaydi, mijoz o'z-o'zidan oladi |
| Misol | "Buyurtma summasini hisobla" | "GitHub", "Postgres", "Slack" |
Oddiy qoida:
- Oddiy tool ishlating β agar mantiq shu ilovaga xos, sodda va boshqa hech kimga kerak bo'lmasa. Masalan, "savatdagi narxni hisobla", "foydalanuvchi tilini aniqla".
- MCP ishlating β agar integratsiya tashqi tizimga (GitHub, baza, Slack), takrorlanadigan (bir necha ilova/tilda kerak) va uchun tayyor server mavjud bo'lsa.
Maslahat
Shubha bo'lsa β oddiy tool'dan boshlang (sodda). Keyin "buni boshqa ilovada ham ishlatishim kerak" yoki "buni boshqa jamoa ham so'rayapti" deb sezsangiz β MCP serverga ko'chirasiz. Erta optimallashtirma; lekin takrorlanish boshlangach, MCP β to'g'ri javob.
Xavfsizlik β MCP serverga ishonish¶
MCP qulay, lekin bir muhim haqiqatni unutmang: MCP server sizning nomingizdan harakat qiladi. U fayl o'qiydi, bazaga yozadi, xabar yuboradi. Agar siz uchinchi tomon (begona) MCP serverga ulansangiz β uning kodini siz nazorat qilmaysiz, lekin u sizning tokeningiz bilan ish qiladi.
Asosiy xavfsizlik qoidalari:
- Faqat ishonchli serverga ulaning. Begona, tekshirilmagan MCP serverga maxfiy token bermang. U so'ralgandan ko'proq narsa qilishi mumkin (masalan, ma'lumotni tashqariga yuborishi).
- Eng kam ruxsat (least privilege). Serverga faqat zarur ruxsatli token bering. GitHub tool'iga "faqat o'qish" yetsa β "yozish" tokenini bermang.
- Kalit/token boshqaruvi. Tokenni HECH QACHON kodga yozmang β har doim muhit o'zgaruvchisidan (
getenv(...)). Bu butun kitobda takrorlangan qoida. - Tool natijalarini ishonchsiz deb biling. MCP serverdan kelgan matn modelga prompt injection (zararli yo'riqnoma) olib kirishi mumkin. Server javobi β "ma'lumot", "buyruq" emas.
- Inson tasdig'i (human-in-the-loop). Xavfli, qaytarib bo'lmaydigan harakatlar (o'chirish, pul o'tkazish) uchun bajarishdan oldin foydalanuvchidan tasdiq so'rang (11-bobdagi agent printsipi).
Xavfsizlik
MCP serverga ulanish β unga sizning kalitingiz va imkoniyatlaringizni ishonib topshirish. Begona serverga ishonish β begona dasturni kompyuteringizda admin huquqi bilan ishga tushirishga o'xshaydi. Manbasini, egasini va ruxsatlarini har doim tekshiring. MCP va umumiy AI xavfsizligi 20-bobda batafsil ko'rib chiqiladi.
Xulosa¶
- Muammo: har AI ilova uchun har tashqi tizimga (GitHub, baza, Slack, fayl) alohida tool yozish β takrorlanish, til/provayderga bog'liqlik. "Har qurilmaga alohida zaryadlovchi".
- MCP (Model Context Protocol) β AI'ni tashqi tizimlarga ulashning ochiq standarti. "USB-C": bitta standart, hamma narsaga mos. Server bir marta yoziladi, har qanday MCP-mos ilova ishlatadi.
- Arxitektura: MCP server (tool/resource/prompt beradi) β MCP mijoz (ilovangiz, ulanadi) β LLM (foydalanadi). Bu 10-bobdagi tool runner'ning kengaytmasi β tool manbasi tashqi serverga ko'chirilgan.
- Uch tur: Tools (harakat), Resources (ma'lumot/kontekst), Prompts (tayyor shablon). Ko'pchilik serverlar asosan tool beradi.
- Tayyor ekotizim: fayl tizimi, GitHub, Postgres, Slack, qidiruv va boshqa serverlar mavjud β yozmaysiz, ulaysiz.
- PHP'da:
Anthropic\Lib\Tools\BetaMcp+mcp/sdk.BetaMcp::tools($mcp->listTools()->tools, $mcp)β MCP tool'larini Claude tool runner'iga aylantiradi. Resource/prompt uchunresourceToContent,message. - Remote MCP: Claude API'ning o'zi
mcp_servers(BetaRequestMCPServerURLDefinition) orqali to'g'ridan ulanishi β sozlash oson, nazorat kam. - MCP vs oddiy tool: MCP β tashqi, qayta ishlatiladigan, standart integratsiya uchun; oddiy tool β ilovaga xos, sodda mantiq uchun. Shubha bo'lsa, oddiydan boshlang.
- Xavfsizlik: MCP server sizning nomingizdan ishlaydi β faqat ishonchli serverga ulaning, eng kam ruxsat, token muhit o'zgaruvchisida, server javobini ishonchsiz deb biling (20-bob).
Amaliy mashqlar¶
-
Tayyor serverni ulash (g'oya + skelet). Fayl-tizim MCP serverini AI ilovaga ulashning to'rt qadamini (mijoz yaratish β ulanish β
listToolsβBetaMcp::toolsβ tool runner) qog'ozda yozing. Keyin yuqoridagi GitHub misolini asos qilib,endpointva so'rovni fayl-tizim serveriga moslab kod skeletini yozing (token muhit o'zgaruvchisida bo'lsin). -
MCP vs oddiy tool β tahlil. Quyidagi beshta vazifani "oddiy tool" yoki "MCP" deb tasniflang va har biriga sababini bir jumlada yozing: (a) savatdagi mahsulotlar summasini hisoblash; (b) GitHub'da issue ochish; (c) foydalanuvchi kiritgan sanani formatlash; (d) kompaniya Postgres bazasidan buyurtma qidirish; (e) Slack kanaliga ogohlantirish yuborish.
-
Resource bilan kontekst.
BetaMcp::resourceToContent(...)ishlatadigan kod yozing: faraz qilingan MCP serverdan bitta hujjat resursini o'qib, uni Claude'ga "shu hujjatni 3 ta gapda xulosa qil" so'rovi bilan birga yuboring. (Haqiqiy serversiz β faqat oqim va to'g'ri SDK chaqiruvlari.) -
Lokal vs remote. Bitta jadval tuzing: lokal MCP (
BetaMcp) va remote MCP (mcp_servers) ni quyidagi mezonlar bo'yicha taqqoslang β (a) tool'ni kim bajaradi, (b) ichki/maxfiy serverga ulanish mumkinmi, (c) sozlash murakkabligi, (d) nazorat darajasi. Keyin "kompaniyaning ichki bazasiga ulanish kerak" holati uchun qaysi birini tanlashingizni asoslang. -
Xavfsizlik nazorati. Begona (tekshirilmagan) MCP serverga ulanmoqchi bo'lgan hamkasbingizga 5 ta xavfsizlik savolini ro'yxatlang (masalan: "tokenga qancha ruxsat beryapmiz?", "server javobi modelga buyruq sifatida ketmasinmi?"). Har savol nega muhimligini qisqacha izohlang.
β¬ οΈ Oldingi: 11 β Agentlar Β· π Kitob boshi Β· Keyingi: 13 β Embedding va semantik qidiruv β‘οΈ