Введэнне ў MCP: ад фрагментацыі да спяльных сервероў інструментаў
Чаму не выходзіць вставляць кантэкст, як дапамогла вызовка функцыі, чаму інтэграціі тыпу N×M шкодзяць, і як MCP прыводзіць стак LLM да сервераў спільных інструментаў, якія можна вікорыстоўваць знову тыпу N+M.
Крыніцы: Introduction To MCP: Connecting LLMs to the Real World
Што, якбы мадэль мовы могла налажваць звязкі, камунікацыю і дзеяць у рэальным свеце? MCP — гэта з’ўязчык между інтэлектам і дзеянням.
ChatGPT быў запусцан 30 лістапада, у серэдзіне-канцы 2022 года, і прышвырнуў упрыск у вжыванне штучнага інтэлекту ў повсякдзеннасці — для падвышэння продуктыўнасці, выпанення ўседневных задач, рашэння проблем. Продавцы пасля чаго адключылі штучны інтэлект да продуктаў, якія людзі вжывалі ўжо: комплектаў для падвышэння продуктыўнасці, дзяловых чатоў, сістэм пошуку, інтэграваных срэдаў разработкі, корпаратывных програм. Асістэнты перэсталі быць толькі самастоятэльнымі чатботамі.
Пасля чаго з’явілася ўжо большая проблема. Мадэлі можуць рассуждаваць і пісаць, але для значаменай працы трэбуе правільны кантэкст, даны, інструменты і сістэмы. Паў’языванне гэтых элементаў зазвычай значыла спецыяльныя інтэграціі, API-і, механізмы аўтэнтыфікацыі і код, прызначаны для конкрэтных інструментаў. Гэта розсіяванне мае свое назва: фрагментацыя.
Проблема фрагментацыі
Фрагментацыя выклікаецца, калі команды вжываюць многа асістэнтав штучнага інтэлекту, кожны з якіх застрэчаецца у сваёй сабеекосыстэме.
Уявіце распрацоўшчыка ў VS Code. Асістэнт у самам рэдакторы разумее тое, што знаходзіцца ў межах рэпозытарыя. Калі яму патрабуюцца даныя з GitHub issues або сторанак у Confluence за межамі IDE, ён пакідае асістэнта, копіюе тэкст, вставляе яго знову і сподзіваецца, што модэль запрацюе з достатнім кантэкстам.
Такая постаўная зміна інструментоў і ручная перадача кантэксту ёсць фрагментацыяю: модэль ўмная, але яна не бачыць автаматычна ўсіх сістэм, якія патрабуюцца для выпання задачы.
Што значыць «кантэкст»
Кантэкст — гэта все, што модэль можа бачыць пад час адпаведзення. Практычна: все, што LLM выкарыстоўвае для структуравання адпаведзення — часта історыя чату плюс тое, што вставіў корыстнік.
Прыклад: стварэнне функцыі безпекі з ChatGPT. Распрацоўшчык можа:
- JIRA — копіюе трэбаванні і крытэрыя апрацоўкі ў чат.
- GitHub — вставляе супаўзялыя рэалізацыі і рэпозытарыя.
Толькі тады яны задаюць справжнія пытання. Мадэль дае лепшыя адказы, але працэс ўскладнюецца:
- Ручны копіюванне-вставканне межа сістэмамі ўскладненая.
- Кантэкст рассеюецца; распрацоўшчыкі стаюць «людскімі API».
- Час зборкі можа перавышаць час разработкі.
- Большая колькасць істочнікаў робіць гэты працэс ненаскладным; рэальныя сістэмы большыя, чым буфер для вставкі.
Гэтыя труднасці спрыялі вікорыстоўванню функцый/інструментаў у серэдзіне 2023 года (праца OpenAI).
Выкліканне функцый
Выклік функцый дазваляе модэлю адчыняцься да зовнішніх рэсурсаў праз функцыі і выкарыстоваць яхныя рэзультаты як кантэкст. Чат сам па сабе ператворыўся на автаматызацыю задач: модэль выбірае інструмент, дапыт выканаў яго, а модэль продовжае работу.
З інструментамі, заданымі для JIRA, GitHub, MySQL, Drive, Slack і т. п., модэль можа выбраць, што запускнуць на адпаведнае запрошэнне карыстальніка, запрашаць кантэкст і даў адпаведны адказ — без неабходнасці ручнага вводу дадзеных.
Меры выкліку функцый у кожным дапыце
Уявіце сабе трох асістэнтав AI ў одной компаніі. Кожны з іх все рава патрэбуе сабой функцый/інтэграцый для баз дадзеных, GitHub, JIRA, Slack і іншага.
Калі у вас ёсць N асістэнтав і M зовнішніх рэсурсаў, вы сталквайцеся з рызыкам N × M інтэграцый. Дзесяць асістэнтав × дваццаць рэсурсаў ≈ дваста спецыяльных звязкаў. Развітака робіць стварэнне і падтрымку такой сеткі дужа дорогай.
Калі кожны прыглап все ўсё ж такі мае пад сабой кожную інтэграцыю, то фрагментацыя проста перасунулася: проблемы з аб’еднанням кантэксту сталі проблемамі інтэграцыі.
Чы можа N × M зменшыцца да N + M? Сярод іншага, самэль гэтам служыць MCP.
Протакол кантэкста мадэлі (MCP)
MCP — гэта адкрыты протакол, які стандартызуе спосабы, якімі прыглапы на базе AI падключаюцца да зовнішніх інструментаў, дадзеных і служб.
Есць два галоўныя ролі:
- Klient MCP — знаходзіцца ў прыглапе/агенце на базе AI, падключаецца да сервера, адкрывае і выкарыстоўвае доступныя інструменты/рэсурсы.
- Сервер MCP — стварае мост між прыглапам на базе AI і GitHub, JIRA, базай дадзеных, Drive, Slack або іншай службай.
Klient і сервер размовляюць на мове MCP. У змену таму, што кожны асістант павінен сам ствараць адаптары для кожнага прадавца, прыглапы адкрываюць і выкарыстоўваюць можлівасці праз аднаковы фармат.
Выклік функцыі протырачыць MCP — прыклад з пагодай
1. Выклік функцыі
Вы задаеце функцыю, якая знаходзіцца локальна ў дапынгу, і якая взаімадзейвае з API па паветра:
import requests
def get_weather(city):
response = requests.get(
"https://api.weather.com/current",
params={"city": city}
)
return response.json()
Вы рэгіструеце гэтую функцыю як інструмент. Карыстувач запытае: «Якое паветра ў Бангалуру?» Мадэль можа вызваць get_weather("Bengaluru"). Дапынг ёю запускаецца, вяртаюцься даны, і мадэль стварае адпаведны адказ.
Команда, якая стварыла дапынг, адпаведальна за задачу і падтрымкі гэтай функцыі, а таксама за ее взаінадрозныя звязкі з API.
2. MCP
Інформацыя пра паветра знаходзіцца на серверэ MCP, які взаімадзейвае з API і надае стандартны інструмент:
@mcp.tool()
def get_weather(city: str):
"""Get the current weather for a city."""
return weather_api.get_current_weather(city)
Дапынг на аснове AI ёст меркліентам MCP, які выкарыстоўвае функцыю get_weather. Той самы запыт карыстувача → выкарыстанне меркліента праз MCP → вжыце рэзультата ў адказе.
Разлік: MCP стандартызуе взаінадрозныя звязкі межы дапынгам на аснове AI і спэцыяльнымі можлівасцямі, таму аднам серверу можна служыць для багато сумесных меркліентам.
Корысты для MCP
- Менша колькасць павтаральнага тыямоўвання, чым у каталогах функцый для кожнага дапраўлення
- Меньшыя вітраты і час, які выдзейваецца на тыямоўванне
- Яснейшыя межы безпекі на серверэ
- Інтэграцыі растуць бліжэй да формулы N + M, чым N × M
Гэта і ёсць прычына. У наступных частках будзе рассказана пра архітэктуру, внутранія механізмы і практычную рэалізацыю.
Паўтарны аналіз функцыяй безпекі
Вернемся да распрацоўшчыка, які стварае механізмы безпекі. Без MCP чы іншых інструментаў кожны дзень прыводзіць да пошуку інфармацыі ў JIRA, GitHub, MySQL, Drive і Slack. Кожны такі крок ўключае пераклад кантэксту. За дапамогою вызова функцый такія крокі стаюць іменаванымі функцыйямі, якіе можа выкарыстоўваць модэль — але кожны асістант у компаніі все рава патрэбуе свой экземпляр інтэграцый.
MCP усуне гэта падвойненне. Адзін сервер даных пра пагоду, адзін сервер JIRA, адзін сервер GitHub можа служыць для большога чысла кліентаў, сумяжных з MCP. Сетка N×M стае болей схожай на N кліентаў плюс M сервераў.
Значныя дэталі дызайну, якія команды працягваюць перагледваты
Спрыяйце аднароднаму розумэнню інструментаў як продуктовай інфармацыі: чыстыя назвы і дакументацыя па параметрах спамагаюць правільна выбраць мадэль. Забяжыцеся, каб інструменты для збіркі дадзеных працавалі пасля пאўтарнага падтверджэння, а таксама выдзельце серверы ад інструментаў каталогу, якія дазволяюць толькі чытанне. Логаваце вызывы інструментаў з ID-амі карэляцыі, ёнколі бракавальны адказ можна будзе прыцягнуць да бракавальнага запрашэння дадзеных, а не крытыкаваць “мадэль” у абстрактным сэнсе.
Калі параганяеце вызывы функцый і MCP для новай сістэмы, запытайцеся, хто несе адпаведальнасць за цыкл жыцця інтэграціі. Якшто адказ — “кожная продуктовая команда назаўсёды”, то спяльныя серверы MCP самі сабе пакрываюць расходы. Якшто адказ — “адзіна тымчасовая дэманстрацыя”, то локальная функцыя будзе падходзячая.
Што будзе далей
Калі мотывацыя ясная — фрагментацыя, складанне кантэксту і проблемы інтэграцыі — наступным крокам являецца архітэктура: як кліенты знаходзяць інструменты, як серверы аўтэнтыфікуюцься, як сесіі перэдаюць рэзультаты і як запускаць першы сервер для працы. Гэтыя тэмы патрабуюць спецыяльных дэтальных аналізаў; задачай гэтага матэрыялу было паказаць непраўдападабныя прычыны і практычны прыклад з ветрамі як з адной, так і з другой стороны.
Фрагментацыя як проблема бюджэту
Пісачыце, сколькі часу ваша команда вітрачае на копіюванне даных з JIRA і GitHub у чаты. Гэтая праця ўрачунваліваецца як податак на кожнага AI-асістэнта, які вы вжываеце. Выклік функцый скарочуе час копіювання, але збільшывае колькасць коду для адаптавання. MCP спрамоўвае вітраты на спакульнаныя серверы, а не на окрэмыя версіі для кожнага асістэнта.
Складзіце бізнес-апеляцыю на гэтыя тэрміны: менш часу людзей на працу з API, меньш дубліруючыхся інтэграцый, яснейшыя пункты аўдыту. Для фінансавых вопытакоў дыяграмы архітэктуры маюць меншое значэнне, чым табліцы N×M.
Вывыкі з прыклада праблемы паветра для адміністратароў
У сцэнарыі вызыва функцый, HTTP-кліент для паветра знаходзіцца ў самай аплікацыі. У сцэнарыі MCP ён знаходзіцца на серверэ, які іншыя аплікацыі можа перадаўна выкорыстоваць. Той самы запіт ад корыстніка, але разныя фарматы інтэграцыі. Калі ў планах ужо існуе другі кліент, лепш выбраць сервер; калі эксперымент будзе завершаны ў наступным цыкле, лепш выбраць местную функцыю.