Як об’єднати агентів LLM з чим завгодно: подорож у світ Model Context Protocol
Автор: Ліла Гарт
У світі, де штучний інтелект стає все більш інтегрованим у наше повсякденне життя, надзвичайно важливо розуміти, як ці технології взаємодіють одна з одною. Зокрема, як великі мовні моделі (LLM) можуть спілкуватися з інструментами, необхідними для виконання завдань. У цьому контексті, Model Context Protocol (MCP) від Anthropic, представлений у листопаді 2024 року, відкриває захопливі можливості для створення більш взаємодіючих та ефективних агентів штучного інтелекту.
Щоб розібратися в цьому, я вирушила у віртуальну подорож з одним з ентузіастів, який взявся за сміливе завдання – побудувати власний MCP сервер всього за десять хвилин. Його ентузіазм, підбадьорений великою мискою вуглеводів, і відмова від штучних помічників (курсор, Stack Overflow) обіцяла цікаве занурення.
Навіщо взагалі потрібен MCP? Уявіть собі світ, де агенти ШІ мають безліч інструментів – від доступу до баз даних до взаємодії з веб-сервісами. Кожен фреймворк, додаток або клієнт використовує свій спосіб оголошення цих інструментів. Це може перетворитися на справжній біль у голові – постійне створення інтеграцій для використання можливостей ШІ. MCP вирішує цю проблему, стандартизуючи спосіб спілкування LLM з інструментами. Визначаючи ваш сервер інструментів один раз, ви можете використовувати його скрізь.
Етап 1: Створення сервера
Звучить серйозно, але наш герой довів, що це можливо. Отже, час пішов!
Інструменти та етап: підготовка до роботи
- Ініціалізація проекту: Все починається з команди
uv init employee-project
. Тут створюється основна структура папок для майбутнього сервера. - Virtual environment: для ізоляції проекту було використано virtual environment, що дозволяє незалежно керувати залежностями. Команда
uv venv
створює віртуальне оточення, аuv activate
– активує його. - Встановлення залежностей: Тут настає ключовий момент:
uv add mcp-cli requests
. Встановлюються необхідні пакети: бібліотека MCP CLI та пакетrequests
, необхідний для взаємодії з API.
Основа: початок роботи над сервером
- Створення файлу сервера: Найважливіший крок –
touch server.py
. Створюється файл, який стане серцем всього процесу. - Імпортування залежностей: Зрозуміло, без них нікуди:
from mcp.server.fastmcp import FastMCP
та інші модулі для роботи з JSON та мережевими запитами. - Запуск сервера: Створення об’єкта
FastMCP
з назвоюchurn-and-burn
. Це власне і є початок роботи над сервером. - Визначення інструмента: Все стає цікавіше. Використовується декоратор
@mcp.tool
, що визначає функціюpredict_churn
, яка буде взаємодіяти з вашим API. - Документація: Дуже важливо пояснити агенту, що саме робить цей інструмент. Написано докладний опис, який описує вхідні та вихідні дані.
- Реалізація логіки: Витягування даних з вхідних параметрів, створення запиту
POST
до API, обробка відповіді і, нарешті, повернення прогнозу. - Запуск сервера: Команда
if __name__ == "__main__":
забезпечує запуск сервера при виконанні скрипта.
Результат: подих від полегшення і віра в успіх
Здавалося б, 10 хвилин – це принизливо мало, але герой чудово впорався з завданням. Стримуюча пауза і погляд на секундомір, який показав 2 хвилини 47 секунд, надихнули на подальші відкриття.
Етап 2: Тестування сервера
Без тестування немає впевненості. Як перевірити, чи працює наш сервер?
Дії:
- Запуск dev-сервера: За допомогою команди
uv run mcp dev server.py
запускається dev-сервер, який надає нам доступ до MCP інспектора – інструменту для тестування інструментів. - Доступ до інспектора: Відкривається браузер і вставляється URL.
- Підключення: У інтерфейсі інспектора обирається
STDIО
, оскільки ми працюємо локально. - Вибір інструмента: В інспекторі обираємо наш інструмент
predict_churn
. - Ввід даних: Насипаємо JSON з тестовими даними.
- Запуск інструмента: Натискаємо кнопку та чекаємо на результат.
Результат:
Інформація із API з’явилася в інспекторі. Підтвердження того, що наш сервер працює успішно. Ми отримали прогноз на основі введених даних.
Етап 3: Інтеграція з агентом
Останній етап – інтеграція з агентом. Як використовувати все це з живою моделлю?
Кроки:
- Використання існуючого агента: Зроблено все просто, щоб не витрачати час на зайве.
- Налаштування параметрів: Вказуємо шлях до нашого серверного файлу, тобто вказуємо шлях до нашого сценарію.
- Запуск агента: Запуск відбувається в терміналі, з використанням усіх необхідних параметрів.
Результат:
Через використання Ollama та моделі Granite 3.1, агент зміг зробити свій висновок щодо ймовірності відтоку співробітника, з використанням MCP сервера. Агент зрозумів, що для відповіді на запитання потрібно використовувати інструмент predict churn
.
Спостереження та інтероперабельність
Наш герой не забув і про важливе – про спостереження. Найпростіший спосіб – імпортувати logging
та додати один рядок в код сервера. Всі виклики інструментів будуть відображатися в журналах сервера.
Для демонстрації інтероперабельності, наш сервер успішно інтегрували з Cursor. Це доводить, що MCP працює та може використовуватися будь-де.
Підсумок:
Цей швидкий екскурс демонструє, як легко можна почати роботу з MCP та об’єднати агенти LLM з інструментами. Від створення простого сервера до його інтеграції з агентом – все можливо.