Галоўная / Артыкулы

Введэнне ў MCP: ад фрагментацыі да спяльных сервероў інструментаў

Чаму не выходзіць вставляць кантэкст, як дапамогла вызовка функцыі, чаму інтэграціі тыпу N×M шкодзяць, і як MCP прыводзіць стак LLM да сервераў спільных інструментаў, якія можна вікорыстоўваць знову тыпу N+M.

Выдавец: REACTAPP.TOP6 хв чытання1373 слоў

Крыніцы: Introduction To MCP: Connecting LLMs to the Real World

Што, якбы мадэль мовы могла налажваць звязкі, камунікацыю і дзеяць у рэальным свеце? MCP — гэта з’ўязчык между інтэлектам і дзеянням.

ChatGPT быў запусцан 30 лістапада, у серэдзіне-канцы 2022 года, і прышвырнуў упрыск у вжыванне штучнага інтэлекту ў повсякдзеннасці — для падвышэння продуктыўнасці, выпанення ўседневных задач, рашэння проблем. Продавцы пасля чаго адключылі штучны інтэлект да продуктаў, якія людзі вжывалі ўжо: комплектаў для падвышэння продуктыўнасці, дзяловых чатоў, сістэм пошуку, інтэграваных срэдаў разработкі, корпаратывных програм. Асістэнты перэсталі быць толькі самастоятэльнымі чатботамі.

Пасля чаго з’явілася ўжо большая проблема. Мадэлі можуць рассуждаваць і пісаць, але для значаменай працы трэбуе правільны кантэкст, даны, інструменты і сістэмы. Паў’языванне гэтых элементаў зазвычай значыла спецыяльныя інтэграціі, API-і, механізмы аўтэнтыфікацыі і код, прызначаны для конкрэтных інструментаў. Гэта розсіяванне мае свое назва: фрагментацыя.

Проблема фрагментацыі

Фрагментацыя выклікаецца, калі команды вжываюць многа асістэнтав штучнага інтэлекту, кожны з якіх застрэчаецца у сваёй сабеекосыстэме.

Уявіце распрацоўшчыка ў VS Code. Асістэнт у самам рэдакторы разумее тое, што знаходзіцца ў межах рэпозытарыя. Калі яму патрабуюцца даныя з GitHub issues або сторанак у Confluence за межамі IDE, ён пакідае асістэнта, копіюе тэкст, вставляе яго знову і сподзіваецца, што модэль запрацюе з достатнім кантэкстам.

Такая постаўная зміна інструментоў і ручная перадача кантэксту ёсць фрагментацыяю: модэль ўмная, але яна не бачыць автаматычна ўсіх сістэм, якія патрабуюцца для выпання задачы.

Што значыць «кантэкст»

Кантэкст — гэта все, што модэль можа бачыць пад час адпаведзення. Практычна: все, што LLM выкарыстоўвае для структуравання адпаведзення — часта історыя чату плюс тое, што вставіў корыстнік.

Прыклад: стварэнне функцыі безпекі з ChatGPT. Распрацоўшчык можа:

  1. JIRA — копіюе трэбаванні і крытэрыя апрацоўкі ў чат.
  2. GitHub — вставляе супаўзялыя рэалізацыі і рэпозытарыя.
  • MySQL — выкачваць даны сістэмы ручнаі і вводзіць іх.
  • Google Drive — прыклеіваць документы, інструкціі з безпекі, нотаткі па архітэктуры.
  • Teams/Slack — збіраць недокументаваныя знання з колег.
  • Толькі тады яны задаюць справжнія пытання. Мадэль дае лепшыя адказы, але працэс ўскладнюецца:

    • Ручны копіюванне-вставканне межа сістэмамі ўскладненая.
    • Кантэкст рассеюецца; распрацоўшчыкі стаюць «людскімі 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 ён знаходзіцца на серверэ, які іншыя аплікацыі можа перадаўна выкорыстоваць. Той самы запіт ад корыстніка, але разныя фарматы інтэграцыі. Калі ў планах ужо існуе другі кліент, лепш выбраць сервер; калі эксперымент будзе завершаны ў наступным цыкле, лепш выбраць местную функцыю.