AI-инжиниринг

MCP (Model Context Protocol): стандарт подключения AI к внешним системам

Цели урока

  • Понять архитектуру MCP: клиент-серверная модель, транспорт, capabilities
  • Создать MCP-сервер с tools и resources с нуля на Node.js
  • Научиться определять tools с JSON Schema и обрабатывать вызовы
  • Реализовать resources: статические, шаблонные, с подписками на изменения
  • Освоить production-паттерны: remote deploy, безопасность, композиция серверов

MCP - это USB-C для AI. До него каждая интеграция писалась вручную: Claude + GitHub, Claude + Notion, Claude + БД. После - один протокол, любой клиент. Anthropic открыл его в ноябре 2024 - и за 3 месяца появилось 1000+ серверов. Claude Desktop, Cursor, VS Code, Windsurf - все добавили поддержку. Это самый быстрорастущий стандарт в AI-инфраструктуре за всё время.

  • Claude Desktop + MCP серверы: одна команда - поиск в Jira, проверка GitHub PR, отправка в Slack. Без переключения вкладок
  • Cursor использует MCP для подключения к внутренним API компаний - AI-ассистент с доступом к production данным в реальном времени
  • Anthropic опубликовал reference MCP-серверы для PostgreSQL, Google Drive, Puppeteer, Brave Search - готовые к использованию
  • Компании строят internal MCP-серверы: AI получает доступ к внутренним системам через единый протокол вместо десятков кастомных интеграций

Как появился MCP

**Ноябрь 2024**: Anthropic выпускает MCP как open-source стандарт - MIT лицензия, открытая спецификация. **Декабрь 2024**: Claude Desktop добавляет нативную поддержку, первые 100 community-серверов. **Январь 2025**: Cursor, Windsurf, VS Code Copilot добавляют MCP. **Февраль 2025**: 1000+ open-source серверов на GitHub. **Март 2025**: крупные компании объявляют о production-деплое internal MCP-серверов. За 4 месяца MCP стал де-факто стандартом AI tool integration - быстрее чем любой другой протокол в истории developer tools.

Предварительные знания

  • Tool Calling / Function Calling: LLMs Controlling External Systems

MCP: стандартный протокол для AI интеграций

До ноября 2024 мир AI-интеграций выглядел как вавилонская башня. ChatGPT plugins - один формат. LangChain tools - другой. Каждый стартап - своя самодельная схема. N клиентов × M систем = N×M интеграций, которые надо писать, поддерживать и отлаживать заново при каждом обновлении.

**Model Context Protocol (MCP)** - открытый стандарт от Anthropic, который сломал эту логику. Один сервер реализует протокол - и автоматически работает с Claude Desktop, Cursor, VS Code, любым custom agent. N + M вместо N × M. Это USB-C для AI: один разъём, любое устройство.

Компонент MCPЧто делаетАналогия
ToolsФункции которые AI может вызывать (запросы к API, файловые операции)Function calling, но стандартизированный
ResourcesДанные которые AI может читать (файлы, БД, API ответы)GET endpoint - read-only доступ к данным
PromptsШаблоны промптов которые сервер предоставляет клиентуПредустановленные команды / slash-commands
TransportСпособ связи: stdio (stdin/stdout) или HTTP+SSEUSB-кабель между устройствами

Под капотом - **JSON-RPC 2.0** поверх транспорта. Каждое сообщение выглядит как `{"jsonrpc": "2.0", "method": "tools/call", "params": {...}, "id": 1}`. Не новый формат - знакомый RPC. Это важно: Anthropic не изобретала велосипед, а взяла battle-tested стандарт и добавила discovery, versioning и security model поверх него.

За 3 месяца после релиза MCP появилось 1000+ open-source серверов: для GitHub, Jira, PostgreSQL, Slack, Notion, файловых систем. Claude Desktop, Cursor, Windsurf, VS Code - все добавили поддержку. Это самый быстрорастущий стандарт в AI-инфраструктуре.

MCP - это просто ещё один способ tool calling

MCP - стандартизированный протокол с discovery, versioning и security model. Tool calling - это механизм вызова функций внутри одного LLM-вызова. MCP - это межпроцессная коммуникация со своим lifecycle

Обычный tool calling (OpenAI function calling, Anthropic tool use) работает в рамках одного запроса к API: схема определена, модель вызывает функцию, бекенд исполняет. MCP - слой выше: сервер запускается как отдельный процесс, клиент динамически обнаруживает его capabilities через `tools/list`, подключение персистентное. Плюс встроенная версионность, аутентификация, audit trail. Это разные уровни абстракции.

Какую проблему решает MCP?

Создание MCP Server с нуля

MCP-сервер - обычная Node.js программа. Никакого магии: `@modelcontextprotocol/sdk` берёт на себя транспорт и JSON-RPC, разработчик только регистрирует capabilities. Весь код сервера - это объявления: что умею, как вызывать, что верну.

Жизненный цикл MCP-сервера - это handshake-протокол. Клиент стартует процесс (stdio) или подключается по HTTP. Происходит `initialize` - обмен capabilities. Потом `tools/list` - клиент узнаёт что умеет сервер. После этого - `tools/call` когда AI решает что нужно. Всё это автоматически, разработчик только регистрирует handlers.

  • **Запуск** - клиент стартует процесс сервера (stdio) или подключается по HTTP
  • **Initialize** - handshake: клиент и сервер обмениваются capabilities
  • **List** - клиент запрашивает tools/list, resources/list, prompts/list
  • **Use** - клиент вызывает tools/call, resources/read когда AI решает что нужно
  • **Shutdown** - клиент отключается, сервер завершает работу

**stdio транспорт - для локальных серверов.** Процесс запускается клиентом, общение через stdin/stdout. Идеально для разработки и персональных инструментов. Для production и remote доступа - HTTP+SSE транспорт.

Как Claude Desktop узнаёт о доступных tools MCP-сервера?

MCP Tools: определение и обработка вызовов

**Tools** - главная capability MCP-сервера. Это функции, которые AI вызывает для действий: запрос к API, запись в базу, выполнение команды. Каждый tool определяется именем, описанием и JSON Schema параметров.

Важный инсайт: описание tool и параметров - это промпт для модели. Claude решает, какой tool вызвать, анализируя именно этот текст. Плохое описание = модель вызывает не то, не тогда, не с теми параметрами. Это не техническая проблема - это промпт-инжиниринг на уровне API.

**Tools выполняют действия - это side effects.** Создание задачи, отправка email, запись в БД - необратимые операции. В agentic loop Claude сам решает когда вызывать tools. Tool для удаления базы без подтверждения - не гипотетический риск, это реальный сценарий в production. Деструктивные операции требуют human-in-the-loop.

Что является определяющим фактором для AI при выборе, какой MCP tool вызвать?

MCP Resources: данные для контекста AI

**Resources** - read-only данные, которые MCP-сервер предоставляет клиенту для контекста. Принципиальное отличие от tools: resources не выполняют действия, они только читаются. Файлы, конфигурации, данные из БД, документация - всё это resources.

Разделение Tools и Resources - это не просто архитектурная чистота. Это security model. Resources безопасно загрузить в контекст перед ответом - они не изменяют состояние. Tools потенциально опасны - у них есть side effects. Клиент (Claude Desktop, Cursor) показывает пользователю разные UX-паттерны для чтения vs действия.

CapabilityToolsResources
НазначениеВыполнение действий (side effects)Чтение данных (read-only)
Кто инициируетAI решает вызвать toolПользователь или AI запрашивает resource
Примерыcreate-task, send-email, deployproject-config, task-details, logs
БезопасностьТребует подтверждения (может быть опасно)Безопасно - только чтение

**Resource templates** (`tasks://{taskId}`) - удобный паттерн. AI может запросить `tasks://PROJ-123` - конкретную задачу, а template автоматически извлечёт taskId и загрузит данные. Не нужно создавать отдельный resource для каждого элемента.

В чём ключевое отличие MCP Resources от Tools?

MCP в production: деплой, безопасность, композиция серверов

stdio - для локальной разработки. В production появляется другой класс проблем: как деплоить remote-серверы через HTTP+SSE, как аутентифицировать клиентов, как не дать AI вызвать `delete-database` в 3 часа ночи без подтверждения.

  • **Аутентификация** - Bearer token в HTTP headers. Каждый клиент имеет свой токен с ограниченными правами
  • **Авторизация на уровне tools** - не все пользователи могут вызывать все tools. Admin tools - только для администраторов
  • **Input validation** - Zod-схемы валидируют параметры tools до выполнения. SQL injection через tool параметры - реальная угроза
  • **Rate limiting** - ограничение вызовов tools по пользователю. AI может вызвать tool 100 раз в цикле
  • **Audit log** - логирование каждого tool call: кто, что, когда, результат. Обязательно для compliance

**AI может вызвать tool неожиданно.** В agentic loop модель сама решает какие tools вызывать. MCP-сервер с tool `delete-database` без подтверждения - бомба замедленного действия. Деструктивные операции требуют human-in-the-loop.

Как реализуется композиция нескольких MCP-серверов?

MCP - это просто ещё один способ tool calling

MCP - стандартизированный протокол с discovery, versioning и security model. Обычный tool calling работает внутри одного запроса к LLM API. MCP - межпроцессная коммуникация с персистентным подключением

OpenAI function calling и Anthropic tool use - механизм на уровне одного inference запроса. Схема определена → модель решает вызвать → бекенд исполняет → возвращает результат. MCP - слой выше: отдельный процесс-сервер с lifecycle, динамическое обнаружение capabilities через `tools/list`, версионирование, аутентификация, audit trail. Cursor знает не только что может tool, но и какая у него версия - и может выбрать совместимый сервер.

Итоги

  • MCP - стандартный протокол (JSON-RPC 2.0) для подключения AI к внешним системам: N + M вместо N × M интеграций
  • MCP Server предоставляет 3 capability: Tools (действия с side effects), Resources (read-only данные), Prompts (шаблоны)
  • Описания tools и параметров - это промпт для AI: чем точнее, тем точнее модель выбирает инструмент
  • Resources - read-only данные: статические URI или templates (tasks://{taskId}) для динамической загрузки
  • Production: HTTP+SSE транспорт, Bearer auth, rate limiting, audit log, human-in-the-loop для деструктивных операций

Вопросы для размышления

  • Какие внутренние системы в текущем или прошлом проекте можно было бы подключить к AI через MCP? Что это изменило бы в ежедневной работе команды?
  • Чем MCP-сервер отличается от обычного REST API с точки зрения безопасности - какие угрозы специфичны именно для AI-вызовов?
  • При каких условиях стоит строить собственный MCP-сервер, а при каких - использовать готовый из open-source реестра?

Что дальше

MCP - протокол. Теперь стоит посмотреть как AI coding assistants (Copilot, Cursor, Claude Code) используют MCP и похожие паттерны для интеграции с IDE и кодовой базой.

  • AI Coding Assistants изнутри — Cursor и Claude Code используют MCP для подключения к инструментам разработчика
  • Autonomous Agents — MCP-серверы как tools для автономных агентов - Devin, SWE-Agent подключаются к системам через MCP

Связанные уроки

  • aie-16-tool-calling — MCP стандартизирует интерфейс tool-calling
  • aie-46-ai-coding-assistants — Coding-ассистенты потребляют MCP-серверы
  • aie-44-ai-backend-node — Backend реализует MCP-сервер
  • aie-17-agent-fundamentals — Агенты получают инструменты через MCP
  • net-54-rpc — Стандартизированные client-server вызовы возможностей
  • sd-10-microservices
MCP (Model Context Protocol): стандарт подключения AI к внешним системам

0

1

Войти