Первый и самый частый примитив MCP — tool, инструмент. Tool — это действие, которое умеет сервер: «найти задачу в трекере», «создать запись в базе», «выгрузить остатки из 1С». Не данные — именно глагол, что-то, что меняет мир или запрашивает результат.
Из чего состоит tool
У каждого инструмента три части:
- имя — короткий идентификатор, например
create_task; - описание — человеческим языком: что делает и когда применять;
- схема входа (
input_schema) — какие параметры принимает и какого типа.
Вот как сервер примерно объявляет инструмент:
{
"name": "create_task",
"description": "Создаёт задачу в трекере. Используй, когда пользователь просит завести новую задачу.",
"input_schema": {
"title": "string",
"assignee": "string",
"due": "string (дата)"
}
}
Описание тут не украшение. Модель не видит код инструмента — она видит только имя, описание и схему. По описанию она и решает, какой инструмент вызвать и с какими параметрами. Плохое описание — модель промахнётся или не вызовет вовсе.
Вызывает модель — запускает человек
Ключевая граница безопасности: модель вызывает инструмент (формирует запрос: имя + аргументы), но выполнить действие разрешает человек или хост. Особенно это важно для инструментов, которые меняют состояние: создают записи, удаляют, отправляют.