MCP nima va u nega hamma narsani o'zgartiradi?

Dasturlashda har yili qandaydir "yangi trend" chiqadi va ko'p o'tmay unutiladi. Lekin ba'zida shunday narsa chiqadiki, u o'yin qoidalarini butunlay o'zgartirib yuboradi.

API o'z vaqtida dasturlarni bir-biri bilan bog'lashda shunday inqilob qilgan edi. Bugun AI olamida xuddi shunday portlash sodir bo'lyapti - uning nomi Model Context Protocol (MCP).

Agar siz AI bilan ishlaydigan bironta loyiha yoki agent qurgan bo'lsangiz, bu post sizning hayotingizni ancha yengillashtiradi.

Nega oddiy API LLM uchun yetarli emas?

O'nlab yillar davomida biz API orqali dunyoni boshqarib keldik. Jarayon sodda:

  1. Endpoint yaratasiz
  2. Request yuborasiz
  3. Aniq, bashorat qilinadigan JSON response olasiz

Oddiy dasturlar uchun bu ideal. Lekin Katta Til Modellari (LLM) kirib kelgach, bu algoritm choklaridan so'kila boshladi. Chunki model oddiy dastur emas - u ehtimolliklarga tayanib fikrlaydi:

  • Bitta ish uchun 10 ta turli endpoint chaqirishi mumkin
  • Ularni mantiqiy ketma-ketlikda bog'lashi kerak
  • Tartibsiz (unstructured) ma'lumotni tahlil qiladi
  • Yetishmayotgan parametr bo'lsa, qayta savol berishi mumkin

API'ni qulflangan shkafga o'xshatish mumkin. Uni ochish uchun qaysi tortmani, qanday kalit bilan ochishni oldindan aniq bilishingiz kerak. Model esa shkaf ichida nima borligini ko'rmaydi - siz har safar unga uzoq-uzoq prompt yozib, har bir funksiyani qayta tushuntirishga majbursiz.

Bu holatning nomi bor: Prompt Engineering Hell.

MCP nima?

2024 yil noyabrda Anthropic tomonidan ochiq standart sifatida taqdim etilgan Model Context Protocol aynan shu muammoni yechish uchun yaratildi.

MCP - modelning o'z atrofidagi vositalarni (tools), ma'lumotlarni (resources) va tizimlarni mustaqil ravishda topishi va ishlata olishi uchun yaratilgan ochiq protokol.

Rasmiy hujjatda buni shunday tasvirlashadi: MCP - bu AI ilovalar uchun USB-C porti. Xuddi USB-C turli qurilmalarni bitta standart orqali ulaganidek, MCP AI modellarni turli ma'lumot manbalari bilan bitta standart orqali ulaydi.

Oddiyroq aytganda, u modelga API dokumentatsiyasini shunchaki o'qitish emas, uning qo'liga API'ning tirik xaritasini berishdir.

API va MCP orasidagi farq

Xususiyat API MCP
Tabiati Ikki dastur o'rtasidagi qat'iy shartnoma Model va tashqi muhit o'rtasidagi semantik protokol
Muloqot tili JSON, XML, gRPC (qat'iy sxema) JSON Schema orqali o'zini o'zi tasvirlaydi
Fikrlash Qaysi funksiya qachon chaqirilishi kodda hardcode Qaysi tool qachon ishlatilishi modelning o'z tanlovi
Moslashuvchanlik Har servis uchun alohida wrapper kod Bitta client har qanday MCP server bilan ishlaydi

MCP arxitekturasi: 3 ta komponent

Ko'pchilik MCP'ni faqat "Model + Server" deb soddalashtiradi, lekin rasmiy arxitektura 3 ta aniq qatlamdan iborat:

[MCP Host]  --tashkil qiladi-->  [MCP Client]  --ulanadi-->  [MCP Server]
   |                                  |                          |
Claude Desktop,               Har bir serverga            PostgreSQL, Gmail,
Cursor, Claude Code            1 ta alohida client          GitHub, Notion...

1. Host - AI ilovaning o'zi (Claude Desktop, Cursor, Claude Code). U butun jarayonni boshqaradi.

2. Client - Host ichida yashaydigan komponent. Har bir MCP serverga alohida, 1:1 ulanish yaratadi va so'rovlarni formatlab yuboradi.

3. Server - tashqi tizim bilan modelni bog'lovchi tarjimon. Masalan, PostgreSQL MCP Server - Claude va baza orasidagi ko'prik.

Server 3 ta narsani taqdim etadi (primitives)

  • Tools - model chaqira oladigan funksiyalar (masalan: create_jira_ticket, run_sql_query)
  • Resources - modelga taqdim etiladigan ma'lumot obyektlari (fayl, hujjat, baza yozuvi)
  • Prompts - modelga vazifani qanday bajarishni ko'rsatuvchi tayyor shablonlar

Client tomonida esa Roots (xavfsiz fayl ulanishi) va Sampling (modeldan yordam so'rash, masalan SQL so'rov generatsiya qilish) bor.

Amaliy misol: Support Ticket AI Agent

Tasavvur qiling, siz mijozlar muammosini hal qiladigan AI Agent yaratyapsiz. U uchta servis bilan ishlashi kerak: Gmail, Notion, Jira.

An'anaviy API yondashuvi

Har bir servis uchun alohida SDK yoki wrapper yozasiz. Authentication, pagination, rate limiting, error handling - hammasini o'zingiz kodda boshqarasiz. Keyin modelga uzun prompt yozasiz:

"Agar foydalanuvchi shikoyat qilsa, birinchi Gmail orqali pochtani tekshir. Agar Notion'da yechim topilmasa, mana bu formatda Jira'ga POST so'rov yubor..."

Har yangi servis - yana bir hafta integratsiya kodi.

MCP yondashuvi

Bularning hech biri kerak emas. Gmail, Notion, Jira - har biri tayyor MCP server sifatida mavjud (yoki siz o'zingiz yozasiz). Model ularga ulanadi va o'z asboblar qutisini ko'radi.

Siz shunchaki: "Mana imkoniyatlar ro'yxati, foydalanuvchiga yordam ber" deysiz. Model qaysi toolni qachon ishlatishni o'zi hal qiladi.

MCP server o'zini qanday tasvirlaydi?

Har bir MCP server o'z imkoniyatlarini JSON Schema orqali deklarativ shaklda ko'rsatadi. Model bu serverga odatda ikkita transport orqali ulanadi:

  • Stdio - lokal serverlar uchun (bitta client, bitta process)
  • Streamable HTTP - masofaviy serverlar uchun (bir nechta client bir vaqtda)

Mana create_jira_ticket tool'ining haqiqiy ko'rinishi:

{
  "name": "create_jira_ticket",
  "description": "Tizimda nosozlik yuz berganda Jira'da yangi ticket ochish",
  "inputSchema": {
    "type": "object",
    "properties": {
      "title": {
        "type": "string",
        "description": "Muammoning qisqacha mazmuni"
      },
      "priority": {
        "type": "string",
        "enum": ["HIGH", "MEDIUM", "LOW"]
      }
    },
    "required": ["title", "priority"]
  }
}

Model ushbu metadatani o'qigach, qanday parametrlar borligini va ularning ma'nosini o'zi anglaydi (self-describing). Dasturchi o'rtada tarjimonlik qilib o'tirmaydi.

Java tomonda, agar siz o'z MCP serveringizni yozmoqchi bo'lsangiz, rasmiy Java SDK mavjud:

// Java MCP SDK - oddiy tool ro'yxatdan o'tkazish
McpServer server = McpServer.sync(transportProvider)
    .serverInfo("jira-mcp-server", "1.0.0")
    .capabilities(ServerCapabilities.builder()
        .tools(true)
        .build())
    .build();

server.addTool(SyncToolSpecification.builder()
    .tool(new Tool(
        "create_jira_ticket",
        "Tizimda nosozlik yuz berganda Jira'da yangi ticket ochish",
        jsonSchema  // yuqoridagi schema
    ))
    .callHandler((exchange, request) -> {
        String title = request.arguments().get("title").toString();
        String priority = request.arguments().get("priority").toString();
        Ticket ticket = jiraClient.createTicket(title, priority);
        return new CallToolResult(ticket.getUrl());
    })
    .build());

API o'lib ketadimi?

Yo'q. Vahima qilishga hojat yo'q.

Tizimlar orqa fonda baribir o'sha biz bilgan REST, gRPC yoki GraphQL orqali ishlashda davom etadi. MCP bu tizimlarning o'rnini bosmaydi - u Model va API o'rtasidagi aqlli vositachi (middleware) vazifasini bajaradi.

[LLM / AI Agent] -> (MCP Protocol) -> [MCP Server] -> (Standard REST API) -> [Sizning Backend]

Xuddi qadimda FTP, Gopher, Telnet kabi tarqoq protokollar bo'lib, keyinchalik HTTP hammasini yagona standartga birlashtirgani kabi, MCP ham AI ekotizimidagi barcha xizmatlarni bitta ochiq standart ostiga yig'moqda.

Bugun siz o'z mahsulotingiz uchun bitta MCP server yozsangiz, ertaga uni ChatGPT, Claude yoki Gemini - istalgan LLM hech qanday qo'shimcha kodsiz ishlatib keta oladi.

Bu vaqtinchalik gap emas: 2025-yil davomida OpenAI va Google DeepMind ham o'z mahsulotlarida MCP'ni qo'llab-quvvatlashni e'lon qilishdi. 2025-yil oxiriga kelib, ochiq direktoriyalarda 10 mingdan ortiq MCP server ro'yxatga olingan edi. Yil oxirida esa Anthropic protokolni Linux Foundation qoshidagi yangi tashkil etilgan Agentic AI Foundation'ga topshirdi - bu MCP endi bitta kompaniyaga tegishli emas, balki haqiqiy ochiq sanoat standarti ekanini bildiradi.

xavfsizlik

Bu yerda hammasi ideal emas. Agar qaror qabul qilishni butunlay modelga topshirib qo'ysak, model adashib:

  • Muhim ma'lumotlar bazasini o'chirib yuborishi
  • Mijozlarga noto'g'ri email jo'natishi
  • Ruxsat berilmagan maxfiy fayllarni o'qib ketishi

mumkin. Shuning uchun MCP spetsifikatsiyasida aniq talab bor: har doim odam nazorati (human in the loop) bo'lishi kerak - tool chaqirilishidan oldin foydalanuvchi buni rad eta olishi shart.

MCP xavfsizlik qatlamlari ustida jiddiy ish olib borilmoqda: Authentication, Dynamic Permissions, Scope control, Capability checks. Tizimga asboblar qutisi berayotganda ichiga bomba solib qo'ymaslik - dasturchining eng birinchi vazifasi.

paradigma almashinuvi

Yillar davomida dasturchilar kod yozganda faqat "Qanday qilish kerak?" (routes, endpoints, controllers) haqida o'ylashgan.

MCP boshqacha fikrlashni talab qiladi: endi biz modelga qanday qilishni hardcode qilmaymiz, balki unga "Tizimning imkoniyatlari qanday?" ekanini tasvirlab beramiz. Qolgan fikrlash va marshrutlash ishlarini model o'zi bajaradi.

API deterministik tizimlar uchun yaratilgan edi - bir dastur ikkinchisidan aniq ma'lumot so'raydi. MCP esa ehtimollarga asoslangan AI tizimlari uchun yaratilgan - model o'ylaydi, rejalashtiradi, qaror qiladi.

API va MCP raqobatchi emas. MCP - API ustida ishlaydigan yangi qatlam.

Manbalar