IT · Model Context Protocol

Використання resources в MCP

Дані й контекст за URI для агента

Урок 9

План заняття

  1. 01 Вступ
  2. 02 Що таке resources
  3. 03 Навіщо і коли використовувати
  4. 04 Приклад: brands і models
  5. 05 Як описувати resources
  6. 06 Практика

Блок 1

Вступ

Від tools і prompts до resources

Вступ

Що вже є

У qauto MCP server уже є tools і prompts.

Сьогодні додаємо resources — дані за URI. Без довідника id модель не знає, які carBrandId і carModelId передати в add_car.

Блок 2

Що таке resources

Дані й контекст за URI

Що таке resources

Визначення

Resources — спосіб віддати клієнту дані для контексту моделі: довідники, схеми, документи.

Кожен resource має унікальний URI. Host читає його і додає вміст у розмову.

Що таке resources

Не tools і не prompts

  • Tools — дії (API, створення авто)
  • Prompts — шаблон постановки задачі
  • Resources — дані для читання (довідник id)

Що таке resources

Як це виглядає для користувача

Resources — application-driven: Host вирішує, як показувати список і коли підтягувати контекст.

Користувач може обрати resource у UI, або Host додасть його автоматично.

Блок 3

Навіщо і коли використовувати

Практичні правила

Навіщо і коли

Навіщо

  • Дати моделі стабільний контекст (довідники, схеми, документи)
  • Не дублювати довгі дані в кожному prompt
  • Відділити «прочитати» від «зробити»

Блок 4

Приклад: brands і models

Довідник для add_car

Приклад

Ідея

Два resources: повний каталог і один бренд за id у URI.

Агент читає id і викликає add_car — без вгадування carBrandId / carModelId.

Приклад

Приклади id

  • Audi R8 → brand 1, model 2
  • BMW X5 → brand 2, model 8
  • Ford Focus → brand 3, model 12

Приклад

URI може мати id

  • Статичний: qauto://cars/catalog — увесь довідник
  • З параметром: qauto://cars/brands/{brand_id}
  • Приклад читання: qauto://cars/brands/1 → моделі Audi

Приклад

Код на FastMCP

@mcp.resource("qauto://cars/catalog", ...)
def get_car_catalog() -> str:
    return json.dumps(catalog)

@mcp.resource("qauto://cars/brands/{brand_id}", ...)
def get_car_brand(brand_id: str) -> str:
    # brand_id з URI → моделі одного бренду
    return json.dumps(brand)

Приклад

Як це працює по кроках

Приклад

Опційно: ресурс через tool

Блок 5

Як описувати resources

URI, description, формат

Опис resources

Хто читає опис

Description resource читає людина або UI Host у списку контексту.

Модель бачить вміст уже після resources/read. Пишіть «для вибору зі списку».

Опис resources

URI та іменування

  • Статичний URI: qauto://cars/catalog
  • З id у шляху: qauto://cars/brands/{brand_id}
  • Параметр URI → аргумент функції: brand_id: str

Блок 6

Практика

Resource + створення авто

Фінал заняття

Підсумки

На цій лекції ми розібрали resources у MCP: що це за інтерфейс, коли його використовувати і як описати для людини в списку Host.

Також зібрали практичний приклад — довідник brands/models для створення авто через tools.

У наступній лекції перейдемо до покращення і структуризації MCP-сервера.