До появления стандартизированных протоколов каждое подключение нового инструмента к LLM-приложению означало написание отдельного «клея»: кастомные функции с декоратором @tool, ручная обработка аутентификации, своя логика сериализации данных. Для одного-двух инструментов это терпимо, но в продакшене такой подход быстро превращается в набор несовместимых интеграций, которые сложно тестировать и поддерживать.
Model Context Protocol (MCP), выпущенный Anthropic, решает эту проблему так же, как REST API когда-то решил проблему взаимодействия веб-сервисов — через единый открытый стандарт. MCP построен поверх JSON-RPC и описывает три роли: MCP Host (само AI-приложение), MCP Client (компонент внутри приложения, поддерживающий соединение с сервером) и MCP Server (программа, предоставляющая инструменты по стандартизированному протоколу). Разработчик пишет MCP-сервер один раз — и любой совместимый агент может подключиться к нему без дополнительного кода.
Агент, описанный в материале, строится по паттерну ReAct (Reasoning + Acting). Это цикл из трёх шагов: модель анализирует задачу и решает, какой инструмент вызвать; агент вызывает инструмент и получает результат; модель интерпретирует результат и либо делает следующий вызов, либо формулирует финальный ответ. Ключевое отличие от классической цепочки вызовов — модель сама определяет порядок и набор инструментов, а не следует жёстко заданному пайплайну. Для управления этим циклом используется LangGraph, который даёт явный контроль над состоянием агента.
Агент строится по паттерну ReAct: цикл «Мысль → Действие → Наблюдение» повторяется, пока модель не соберёт достаточно данных для ответа.
RAG (Retrieval-Augmented Generation) в такой архитектуре перестаёт быть отдельным слоем и становится ещё одним инструментом агента. Когда нужна информация из внутренней документации, агент вызывает инструмент search_documentation, который обращается к векторной базе ChromaDB и возвращает релевантные фрагменты. Это надёжнее, чем полагаться на память модели: LLM не пытается воспроизвести факты из обучающих данных и не рискует сгенерировать несуществующие детали.
Для создания MCP-сервера используется библиотека FastMCP — высокоуровневая обёртка, которая сводит описание инструмента к декорированию обычной Python-функции. FastMCP автоматически генерирует JSON-схему параметров на основе сигнатуры функции и docstring. Версия FastMCP 1.0 была включена в официальный MCP Python SDK от Anthropic; версия 2.0 развивается отдельно и добавляет возможности на стороне клиента. В демо-примере сервер предоставляет два инструмента: получение погоды через бесплатный Open-Meteo API (не требует ключа) и создание задач в GitHub через GitHub API с токеном авторизации. Сервер запускается с транспортом stdio — это позволяет агенту поднимать его как подпроцесс.
Полный стек проекта: Python 3.11+ с asyncio, LangGraph и LangChain для логики агента, FastMCP для сервера инструментов, ChromaDB как встраиваемая векторная база, эмбеддинги OpenAI text-embedding-3-small, в качестве LLM — Claude через Anthropic API или GPT-4. Для связи MCP-инструментов с форматом LangChain используется библиотека langchain-mcp-adapters. Такой стек подходит как для прототипов, так и для небольших продакшен-сценариев: ChromaDB не требует отдельного сервера, а MCP-сервер можно заменить или расширить, не трогая логику агента.


