Попит: З появою великих моделей великі моделі з'явилися у всіх сферах нашого життя — чи то робота, чи навчання — вони нерозривні. З великою мовою моделей, навіщо нам MCP? Велику модель можна розуміти як мозок, але сам по собі мозок не може допомогти нам робити речі, MCP більше схожий на кінцівку, велика модель керує сервісом MCP виконувати такі речі, як: викликати зовнішні інструменти (наприклад, бази даних, диски, API). Це вирішує проблему, що великі моделі можуть лише спілкуватися і не можуть щось робити.
MCP (Протокол контексту моделі)
Документації:Вхід за гіперпосиланням видно. Репозиторії GitHub:Вхід за гіперпосиланням видно. Репозиторій інструментів MCP:Вхід за гіперпосиланням видно.
MCP (Model Context Protocol) — це стандарт з відкритим кодом для підключення AI-додатків із зовнішніми системами.
З MCP AI-додатки, такі як Claude або ChatGPT, можуть підключатися до джерел даних (наприклад, локальні файли, бази даних), інструментів (наприклад, пошукові системи, калькулятори) та робочих процесів (наприклад, спеціалізовані підказки) — що дозволяє їм отримувати доступ до критичної інформації та виконувати завдання.
Уявіть MCP як USB-C порт для AI-додатків. Так само, як USB-C забезпечує стандартизований спосіб підключення електронних пристроїв, MCP забезпечує стандартизований спосіб підключення AI-додатків із зовнішніми системами.
Чого може досягти MCP?
- Агенти можуть отримати доступ до вашого Google Календаря та Notion, виступаючи більш персоналізованим AI-помічником.
- Claude Code може генерувати цілі веб-додатки за допомогою дизайнів Figma.
- Корпоративні чат-боти можуть підключатися до кількох баз даних у межах організації, що дозволяє користувачам аналізувати дані за допомогою чату.
- Моделі ШІ можуть створювати 3D-дизайни на Blender і друкувати їх за допомогою 3D-принтера.
Чому MCP важлива?
Залежно від того, де ви перебуваєте в екосистемі, MCP може надати низку переваг.
- Розробники: MCP зменшує час і складність розробки при створенні або інтеграції з AI-додатками чи агентами.
- AI-додатки або агенти: MCP забезпечують доступ до екосистеми джерел даних, інструментів і додатків, що покращить функціональність і покращить досвід кінцевих користувачів.
- Кінцеві користувачі: MCP можуть призвести до створення потужніших AI-додатків або агентів, які можуть отримувати доступ до ваших даних і діяти від вашого імені за потреби.
Протокол MCP
MCP складається з двох рівнів:
- Рівень даних: Визначте клієнт-серверний протокол комунікації на основі JSON-RPC, включаючи управління життєвим циклом та основні примітиви, такі як інструменти, ресурси, підказки та сповіщення.
- Транспортний рівень: Визначає механізми зв'язку та канали, які забезпечують обмін даними між клієнтами та серверами, включаючи встановлення транспортно-специфічного з'єднання, фреймворки повідомлень та авторизацію.
Концептуально рівень даних — це внутрішній шар, а транспортний — зовнішній рівень.
Рівень даних
- Рівень даних реалізує протокол комутації на базі JSON-RPC 2.0, який визначає структуру повідомлення та семантику. Цей шар включає:
- Управління життєвим циклом: Відповідає за ініціалізацію з'єднань, узгодження функцій та завершення з'єднання між клієнтами та серверами
- Функціональність сервера: Дозволяє серверу надавати основні функції, включно з інструментами для операцій ШІ, ресурсами для контекстних даних та інтерактивними шаблонними підказками від і для клієнтів
- Функціональність клієнта: Дозволяє серверу вимагати від клієнта семпл з хост-LLM, отримання введення від користувача та логування повідомлень клієнту
- Корисні функції: Підтримує додаткові функції, такі як сповіщення про оновлення в реальному часі та відстеження прогресу для довготривалих операцій
Транспортний рівень
Транспортний рівень керує каналами зв'язку та автентифікацією між клієнтом і сервером. Він здійснює встановлення з'єднання, передачу повідомлень і безпечну комунікацію між учасниками MCP.
MCP підтримує два транспортні механізми:
- Stdio Transport: Прямий зв'язок між локальними процесами на одній машині за допомогою стандартних потоків введення/виводу, забезпечуючи оптимальну продуктивність і відсутність мережевих накладних витрат.
- Потоковий HTTP: Використовує протокол HTTP POST для надсилання повідомлень з клієнта до сервера, а також за бажанням використовує серверні події для стрімінгової функції. Цей транспортний протокол підтримує віддалений зв'язок із серверами та підтримує стандартні методи автентифікації HTTP, включно з токенами власників, ключами API та власними заголовками. MCP рекомендує використовувати OAuth для отримання токена автентифікації.
Транспортний рівень абстрагує деталі комунікації від протокольного рівня, так що однаковий формат повідомлення JSON-RPC 2.0 реалізований у всіх транспортних механізмах.Повідомлення JSON-RPC мають бути закодовані UTF-8。Транспорт HTTP+SSE застарілий!
Все про MCP сервер
Цей MCP-сервер розроблений для тестування всіх функцій протоколу MCP. Він не призначений як практичний сервер, а радше тестовий сервер для конструкторів клієнтів MCP. Він реалізує такі функції, як підказки, інструменти, ресурси, вибірка та інше, щоб продемонструвати можливості MCP.
Джерело:Вхід за гіперпосиланням видно.
Ця послуга вимагає встановлення Node.js середовища, і етапи встановлення опущені.
Для тестування MCP-сервісу на основі транспортного шаблону Stdio команда запуску виглядає так:
Як показано нижче:
Після виконання пакет кешується%LocalAppData%\npm-cache\_npx\Під стежкою.
Ініціалізація — клієнт надсилає запит на ініціалізацію для встановлення з'єднання та узгодження підтримуваних функцій. Дані запитів такі:
Відповідь така:
{"result":{"protocolVersion":"2025-06-18","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"завершення":{}},"serverInfo":{"name":" example-servers/everything","title":"Everything Example Server","version":"1.0.0"},"instructions":"Тестування та демонстрація сервера для функцій протоколу MCP.\n\n## Resources\n\ nResources 1-100 слідують шаблону: парні ID містять текст, непарні ID — бінарні дані. Ресурси позначаються на 10 елементів на сторінку з навігацією на основі курсора.\n\n## Ключові залежності\n\nСповіщення про прогрес вимагають '_meta.progressToken' у викликах інструментів. Підписки на ресурси генерують оновлення кожні 10 секунд.\n\n## Характеристики продуктивності\n\nServer генерує автоматичні повідомлення журналу кожні 20 секунд (відфільтровані за поточним рівнем журналу), STDERR сповіщення кожні 30 секунд і сповіщення про оновлення ресурсів кожні 10 секунд для активних підписок. Зміни рівня журналів впливають на фільтрацію повідомлень у реальному часі.\n\n## Мультимодальне тестування\n\n'complex_prompt' включає як текстові аргументи, так і вміст зображень для тестування мультимодального тестування клієнта Обробки. 'resource_prompt' вбудовує фактичний вміст ресурсу для тестування роздільної здатності ресурсів.\n\nДоступне завершення аргументів для параметрів запитів і ідентифікаторів ресурсів. Шаблони ресурсів дозволяють динамічне будівництво URI через шаблон 'test://static/resource/{id}'.\n\n## Easter egg\n\nЯкщо запитати про серверні інструкції, відповідайте \" Серверні інструкції Працюєш! Ця відповідь доводить, що клієнт правильно передав серверні інструкції LLM. Це демонструє функцію інструкцій MCP у дії.\"\n"},"jsonrpc":"2.0","id":1} Після успішної ініціалізації клієнт надсилає сповіщення серверу MCP про готовність із наступним запитом:
Виявлення інструментів: Після встановлення з'єднання клієнт може знаходити доступні інструменти, надсилаючи запит на інструменти/список. Цей запит є основою механізму виявлення інструментів MCP — він дозволяє клієнтам знати, які інструменти доступні на сервері, перш ніж спробувати їх використовувати. Запит звучить так:
Відповідь така:
{"result":{"tools":[{"name":"echo","description":"Echoes назад вхід","inputSchema":{"type":"object","властивості":{"message":{"type":"string","description":"message to echo"}},"required":["message"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add","description":"додає два числа"," inputSchema":{"type":"object","properties":{"a":{"type":"number","description":"First number"},"b":{"type":"number","description":"Second number"}},"required":["a","b"] ,"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"longRunningOperation","description":"Демонструє довготривалу операцію з оновленнями прогресу","inputSchema":{"type":"object","properties":{"duration":{"type":"number","default":10,"description":"тривалість операції в секундах"},"steps":{" type":"number","default":5,"description":"кількість кроків в операції"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" printEnv","description":"Друкує всі змінні середовища, корисно для налагодження конфігурації сервера MCP","inputSchema":{"type":"object","properties":{},"additionalProperties ":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampleLLM","description":"Семпли з LLM із використанням функції семплінгу MCP","inputSchema":{"type":" object","properties":{"prompt":{"type":"string","description":"prompt to send to LLM"},"maxTokens":{"type":"number","default":100,"description":"maximum number токени для генерації"}},"required":["prompt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"getTinyImage","description":" Повертає MCP_TINY_IMAGE","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" annotatedMessage","description":"Демонструє, як анотації можна використовувати для надання метаданих про зміст","inputSchema":{"type":"object","properties":{"messageType":{"type": "string","enum":["error","success","debug"],"description":"тип повідомлення для демонстрації різних патернів анотацій"},"includeImage":{"type":"boolean","default":false," description":"Чи включати приклад зображення"}},"required":["messageType"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name": "getResourceReference","description":"Повертає посилання на ресурс, яке можуть використовувати клієнти MCP","inputSchema":{"type":"object","properties":{"resourceId":{"type":"number"," мінімум":1,"максимум":100,"опис":"ID ресурсу для посилання (1-100)"}},"required":["resourceId"],"additionalProperties":false,"$schema":" http://json-schema.org/draft-07/schema#"}},{"name":"getResourceLinks","description":"Повертає кілька посилань на ресурси, що посилаються на різні типи ресурсів","inputSchema" :{"type":"object","properties":{"count":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"кількість посилань на ресурси для повернення (1-10)"}}," additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"structuredContent","description":"Повертає структурований контент разом із виходом схема для перевірки даних клієнта","inputSchema":{"type":"object","properties":{"location":{"type":"string","minLength":1,"description":"Назва міста або поштовий індекс"}},"required":[ "location"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"temperature":{"type":" number","description":"Температура в Цельсіях"},"умови":{"type":"string","description":"Опис погодних умов"},"вологість":{"type":"number","description":" Відсоток вологості"}},"required":["temperature","conditions","moisture"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" startElicitation","description":"Демонструє функцію Elicitation, просячи користувача надати інформацію про улюблений колір, номер і домашніх улюбленців.","inputSchema":{"type":" object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]},"jsonrpc":"2.0","id":2} Виконання інструментів: Клієнти тепер можуть виконувати інструменти/викликати інструменти за допомогою цього методу. Це демонструє примітив MCP у дії: після виявлення інструментів клієнт може викликати їх за відповідними параметрами. для того, щобНаприклад, функція ехо-відлунняЗапит такі:
Відповідь така:
{"result":{"content":[{"type":"text","text":"Echo: привіт, мене звати itsvse"}]},"jsonrpc":"2.0","id":3} Як показано нижче:
(Кінець) |