МКП: Асалінныя прынцыпы — хосты, кліенты, серверы і формат канэкцыі JSON-RPC
Дазвольце даклэ расказаць, чаму існуе Protocol Model Context, як хосты, кліенты і серверы дзеляцца роботай, як выглядаюць паведамленні JSON-RPC і чым разлічаюцца транспорты stdio і HTTP.
Крыніцы: Beyond the Noise: How MCP Unlocks the Real Value of LLMs
Моделі мовы сталі практычнаюцькімі для бізнесу з таго моменту, калі ўжо моглі выканаць дзеяння, а не толькі даўаць адпаведзі. Справжня сложнасць ніколі не была ў самай модэлі; яе справжняя прычына — падключэнне ў базы даных, API і внутрашнія інструменты, дзе фактычна ведуцца роботы, пры чым такое падключэнне трэба здзейсніць толькі аднае раз, а не для кожнага застосунку чы кожнага поставщыка модэлі. Протакол контексту модэлі (MCP) — это спроба стандартазаваць такое падключэння. У этай статыце пояснюецца проблема, яку рашае MCP, ролі його складовых, што перадаецца праз канал зв’язку, а таксама чым разлічуюцяся два стандартных спосабу передачы даных, ўжо тады, калі вы зможаце правільна расставіць сервер MCP у сваёй архітэктуре.
Дзе LLM-ы ствараюць цэннасць: выкананне дзеянняў
Раней вялкі асэнцыяванні былі недаступныя проста таму, што програмна апаратура не магла расумець запыткі з нэўстройванай структураю. Моделі мовы усуваюць гэты бар’ер, і калі яны падключаюцца да інструментаў, яны можу кераваць багатыядернымі процесамі, якія раней выкалікавалі патрэбу, каб чалавек пераходзіў з адной системы ў іншую.
Разглядзім помчык, якому прабуюць даслаўці знайсці і забронюваць паўзач з Касабланкі ў Рабат. Расумеўце запытку — гэта толькі першы крок. Помчык должен шукаць інфармацыю ў сервісе раскладу, выбраць час выезду, вызваць API для броніравання і паўнестаць рэзультат. Кожны з гэтых крокаў — це вызов інструмента. Калі інструменты ўпускаюцца через сервер MCP, будзь-які сумэжны агент можа выкарыстоўваць увесь гэты процес.
Прыцэпныя выгоды ўсунуліся без промедзю: меньшая колькасць ручных крокаў па заданню абяцае нижэйшыя эксплуатацыйныя витраты і шырэйшы тэрмін выканання. Існуе таксама аргумент, які стосуецца кантэксту викорыстання. Працавнікі регулярна працуюць з многама панелямі керування і інтерфейсамі, кожны з якіх мае свою логіку. Размовны фронтэнд, які праўязаны з гэтымі бэкэндамі, можа сховаць вялічзину гэтай складнасці за адним інтерфейсам.
Проблема інтэграцыі, якую рашае MCP
Викорыстанне інструментаў не ў новінку. Кожны значны SDK для LLM яго падтрымлівае, але кожны з іх робіць гэта за дапамою саўствае сваіх правілаў для адзначэння інструмента, апісання параметраў і вярнення рэзультатаў. Практычны наследкі — той самы інструмент реалізуецца колькаразо, по разу ад кожнага прадавця модэляў. Змена модэляў або падтрымка двух адночасна значыць перенесенне гэтага коду інтэграцыі, што спамляе команды і ускладняе масштабаванне продуктаў.
Адзінакоўка з SDK-амі не рашае гэтую проблему цалком. Вы можете стварыць савой шар інтэграціі, які будзе перадаваць намеры на дзеяння, вызываць канцэнтры, збіраць параметры, карацься з бягамі та фіксаваць статыстыку. Гэта дадае дапамогу у скасаванні додатковай складнасці, але ўсё ж можна яе кераваць. Глыбэйшая проблема заключаецца у тым, што такі шар зазвычай знаходзіцца ўнутрь адной прыкладнай програмы. Калі другая прыкладная програма патрабуе тых сабе інструментоў, каманда зноў стварае той самы шар. Логіка інтэграціі є прыўязанай да користувача, а не да системы, якая володзіць данай можлівасцю.
Што такое MCP
MCP — это адкрыты стандарт, які дае прыкладным програмам з ШІ спакойны спосаб падключэння да источнікаў даных і інструментоў. Ён не дазволяе робіць нічага, што раней было абсалютна немагчымым; ён проста робіць такія падключэння простымі та болей адноснымі. Документацыя протаколу на modelcontextprotocol.io є автарытатным джерелам інформаціі.
Ключовая зміна заключаецца ў тым, дзе розташоўвана логіка інструмента. За дапамогою MCP сервіс бэкенду, такі як база дадзенаў, API або внутршній інструмент, публікуе свае можлівасці через сервер MCP. Часта аналогія — це порт USB-C: сервіс выкладае стандартны роз’єм, і будзь-яка сумесная прыкладна програма можа даўацься пад’яздом да яго. Програма на базе AI больш не мае інформаціі пра тое, як викорыстоўваць кожны інструмент; ёй проста трэба вярна выкананы протакол.
Архітектура: хосты, кліенты і серверы
MCP выкарыстоўвае архітектуру кліент-сервер з трыма ролямі, якія легка плутаць:
- Хост: сама програма на базе AI, напрыклад чат-асистент, IDE з агентам, або ваш сае агент-сервіс. Цэ гэта тое, з чым взаімаецца корыстнік, і ён падключаецца да зовнішняго свету через адны або калькі сервера MCP.
Хост ніколі не спрачываецца безпосередна з серверам. Ён стварае по адному кліенту на кожны сервер і перадае ўсю комунікацыю яму, прычаму кожны кліент падтрымвае аддзейную, одназначную з’язок. Такое раздзеленне ў практыцы є корыстным: хост, які з’яўлены з серверам файловай системы, серверам выдачы квітакоў і серверам CRM, запускае трохі незалежных кліентоў, таму неудача або прыграніця прав на аднам з’язку не паўтарыцца ў іншых.
Тры прымітывы сервера
Прымітывы визначаюць, што можа надаць кожная з сторон. Сервер выклікае тры галоўныя відмены:
- Інструменты: аператывы, якіе можа выконваць модель, такія як вызов API або запіс даных.
- Рэсурсы: даныя, якіе модель можа чытаць і выкарыстоўваць як контэкст, такія як рядкі базы даных або дакументы.
- Інструкцыі: заздалега заданыя шаблоны інструкцый, якіе керуюць моделью, падобныя за сутнісцю да повтарна выкарыстоўваных системных інструкцый.
Разлік межа інструментамі і рэсурсамі мае значэнне для безпекі і дызайна. Чытанне рэсурса не павінно вызываць побачных эфектаў, тады калі вызов інструмента можа змяніць ситуацыю, таму хосты часта прыменяюць разныя правіла затверджэння для кожного з іх.
JSON і JSON-RPC: формат паведамлення
JSON (JavaScript Object Notation) выклікае структураваныя даныя у вастоўцы з тэксту, складванага з пар ключ-значэнне, масіў і вкладаных об’ектаў. Паколькі гэты формат просты і падтрымліваецца ўсюды, апарун і прыёмнік, напісаныя на разных мовах, можу дагадацца, што значыць паведамленне.
JSON-RPC будуе на гэму, визначаючы фіксаваную структуру паведамлення для аддалённых вызоў прыемаў. Запит называе метод, несе параметры і містіць ідэнтыфікатор; якщо обе стороны дазволяюць сягледзецца структурой, кліент можа папросіць сервер адрыхтуваць метод і прыняць рэзультат або памылку у такім жа прыведзенні до зрозумеласці формате. Нижэйшы прыклад — запит JSON-RPC 2.0, які папрашае сервер адрыхтуваць вычысленне пагоды для Касабланкі. Зверніце ўвагу на чатыры поля: версію протакола, id запиту, які викорыстоўваецца для паўтарнага адпаведання на рэспонс, назву method і об’ект params.
{
"jsonrpc": "2.0",
"id": 1,
"method": "get_weather",
"params": {
"city": "Casablanca"
}
}
Эты прыклад паказывае просты JSON-RPC. У самага MCP інструменты не выклікаюцца як методы верхньага рэвэлю, названыя па імені інструмента. У замен кліент адправляе запит з методам tools/call, пакладаючы назву інструмента та яго аргументы ў params. Самэй гэтыя непрывычныя способы дазволяюць MCP задаць фіксаваныя методы протаколу, тады як серверы можаць відкрываць будзь-якія інструменты, якія ўпадаюць им у вярас.
Адкрыцце — гэта тое, чаго не хапяе
JSON-RPC сама па сабе застаўляе адну проблему: кліент павінен ужо знаты, якія методы працюе сервер. MCP закрывае гэты праслой калі стандартизуе спосаб, яким кліенты выявляюць можлівасці сервера. Кліент можа папросіць сервера пераказаць список яго інструментаў, рэсурсоў і запитоў, атрымаваць назвы, апісанні і схемы вводу, а пасля перадаць гэтыя апісанні модэлю. MCP таксама вказывае, як ініціязуецца з’язак і якія механізмы транспорту перадаюць паведамленні.
Механізмы транспорту: як паведамленні пераходзяць
JSON-RPC визначае слоўнік; транспорт визначае, як байты пераходзяць між кліентам і серверам. На час напісання MCP вказывае два стандартных транспорты. Пераканайцеся ў актуальныя спецыфікацыі пры выкорыстоўванні деталяў, адтолькі протакол продовжвае развівацца.
stdio для локальных інструментаў
За дапамою транспорту stdio кліент запускае сервер MCP як дзецячы процэс. Сервер чытае прыходзячыя паведамленні з свайго стандартнага вводу і запісвае адпаведныя адказы ў свой стандартны вывод. Кожны процэс автаматычна отрымае гэтыя каналы ад оператывной системы, таму не трэба сетавых сокетоў чы портам.
Гэта робіць stdio ідальным выборам для апранатоў, якія працуюць на той жа апарат, што і хост, напрыклад, для сервера, який стварае папкі ў локальной файловай системе. Дадатковыя прынты — гэта ізоляція: сервер існуе толькі пакуль хост яго запускае, і да яго нельга дасягнуць через сеть.
Streamable HTTP для спільных, аддалённых сервероў
За дапамою Streamable HTTP сервер ёсць незалежны процэс, які працуе як HTTP-сервіс, і ён можа аддаўаць службы многам кліентам адразу. Паведамленні абмэняюцца за дапамою звычайных HTTP-запросаў.
Гэты спосаб перадачы дастакоў можа выконваць стрімінг. У замест на чаканне на завершальную адпаведь, сервер можа падаць даны поступова, што ўжо цэнна для дзейнароўкаў інструментаў, якія працуюць дзённы час. Стрімінг адбываецца за дапамогою Server-Sent Events (SSE) — однакоўнага каналу, у якім адпаведь HTTP несе серыю запускаемых серверам заходаў. Трафік у працоўным напрамку яшчэ падае як звычныя запиты HTTP ад кліента. Дакладная працэсаў залежыць ад реалізацыі і версіі HTTP, якая викорыстоўваецца.
Практычная правіла: выберыце stdio, калі інструмент знаходзіцца на апараты ўжо однаго пользователя, а выберыце Streamable HTTP, калі неабходна раздаваць можлівасці між пользователямі аб командамі, з аутантыкацыяй і кантролем сеті, якія трэбуюць спільныя службы.
Чаму пратакол мае большое значэнне чым іншы SDK
Пратакты існуюць таму, што системы, створаныя разнымі командамі, на разных языках і па розныя графікі выпуску, все ж можу взаімна працаваць прыемлівым чынам. Пратакт — это даговораны набор правіл пра тое, як незалежныя складовыя взаінная кантактуюцца, адначытае іх упаведамленні і ствараюць адказгоднасць.
Цэнна стандартазавання доступу да інструментаў пераважна эканамічная. Калі косцт разыявлення новага модэлю або новай прыкладнай програмы падходзіць да нуля, експерыментаванне стае дашчавым, а дашчавыя експерыменты спрыяюць быстрэйшым ітераціям. Команда, якая адпаведна за систему, можа выдаліць адзін сервер MCP, і кожная ныячая і будучая AI-прыкладная програма ў організацыі можа яго выкарыстоўваць без спецыяльнага коду для з’еднання. Чыба пазнаць, як гэта выглядае ў рамках фрэймворку агента, пераканацца нашай статыце пра стандартазаванне інтэграціі інструментаў у LangGraph за дапамогою MCP.
Галоўныя вывары
- LLM-і даюць максымальную цэннасць, калі можаюць дзейваць у рэальных системах, і пераканаленнем являецца інтэграцыя, а не інтеллект.
- Без стандарта той самы інструмент пераўтвараецца па-разнаму для кожнага SDK модэлю і кожнай аплікацыі; MCP пераносіць гэтую логіку на сервер, які прыналежыць системе, якая надае можлівасці.
- Хост запускае аднаго кліента на кожны сервер, і кожны кліент падтрымлець спецыяльную з’ўязок; серверы праставляюць інструменты, рэсурсы і запросы.
- JSON-RPC задае формат паведамлення, тады як MCP дагаўляе фіксаваны слоўнік методаў, такіх як
tools/call, а таксама механізм адкрыцья можлівасцей. - Для локальных, однаго корыстувача інструментаў выкорыстоўваюце stdio, а для спяльных, даўняхых служб — Streamable HTTP, і пераканайцеся, што деталі транспорту супарадні з чынным стандартам.