«Да я просто прикручу Claude через обычный Function Calling»: иллюзия, которая стоила мне 1400 долларов

«Зачем мне городить огород? У Claude есть API, есть Tools. Передам массив JSON-схем, напишу десяток функций на Python, и агент готов». Я повторял эту мантру прошлой осенью с уверенностью человека, который написал свой первый скрипт для Bybit лет пять назад и думал, что познал мир автоматизации.

Спустя трое суток ручной обвязки мой криптобот слил 1400 долларов чистыми на проскальзывании. Не потому, что Claude 3.5 Sonnet ошибся в логике рынка. А потому, что самопальный мост из пяти функций превратился в клубок спагетти: одна функция зависла в ожидании вебсокета, контекст захлебнулся собственным логом, а модель уверенно вызвала закрытие позиции по рынку, решив, что ордер исполнился три минуты назад. В тишине пустой серверной это звучало как приговор моему «простому решению».

Мусор в поиске и реальная архитектура

Если вбить аббревиатуру в поиск без контекста разработки, алгоритмы сойдут с ума. До сих пор половина выдачи — это архивы фанатов Minecraft: порталы вроде mcpedl и mcpehub, форки серверов mcpaper, турниры mcpvp или вообще техническая смазка mcp al 10 из промышленного каталога. Забавно, но факт.

Однако если задать вопрос предметно — model context protocol (mcp) что это для реального продакшена — ответ окажется куда практичнее. Model Context Protocol это открытый стандарт, разработанный Anthropic, который делает с интеграцией нейросетей ровно то же самое, что USB сделал с проводами в 90-х. Он отрезает LLM от прямой возни с внутренностями вашего кода.

Когда вы подключаете бота напрямую через банальный Function Calling, вы берете на себя всю грязную работу. Вы вручную сериализуете данные, скармливаете модели раздутые системные промпты, следите за токенами в истории и пытаетесь заставить модель помнить, какое состояние у биржевого стакана было два шага назад. Рано или поздно модель просто сходит с ума от объема мусора в контекстном окне. MCP это разделение ответственности: интерфейс отдельно, реализация отдельно, стейт под контролем.

Почему прямые функции умирают под нагрузкой

Давайте честно: если ваша задача — раз в день парсить погоду и присылать шутку в Telegram, вам не нужен протокол. Пишите functions = [...] и забудьте. Проблемы начинаются там, где появляется реальный стейт, асинхронные очереди и деньги.

Вот три капкана, в которые наступает каждый, кто пытается обойтись «простым скриптом»:

1. Утечка контекста. Каждое определение функции внутри промпта съедает драгоценные токены. Сделайте двадцать функций: баланс, маржа, плечи, триггерные ордера, история сделок, спот, фьючерсы. Вы отдаете треть контекстного окна только на то, чтобы объяснить модели, как эти функции называются. С протоколом модель видит только ресурсы и методы через стандартизированный клиент, запрашивая спецификацию по требованию.

2. Безопасность и ключи. В наивной реализации разработчики часто передают API-ключи прямо в окружение, доступное процессу выполнения агента. Стоит модели поймать галлюцинацию или вредоносный инъекционный промпт из внешнего источника данных (например, из ленты новостей, которую она анализирует), и ваши приватные ключи могут улететь во внешний лог. MCP сервер это изолированный демон. У него свои права доступа. Он отдает модели данные, но никогда не отдает ей контроль над средой исполнения.

3. Синхронизация состояния. Трейдинг не прощает рассинхрона. Когда мы строили живую инфраструктуру под нашу стратегию RVV — вот, кстати, открытый пруф работы алгоритма на реальном рынке — главной болью было убедиться, что аналитический модуль видит позицию идентично биржевому ядру. С простыми функциями Claude постоянно получал устаревший снепшот. С протоколом mcp сервер выступает единым источником правды: модель запрашивает динамический ресурс, а не гадает на старых логах.

Анатомия нормальной связки: как выглядит рабочий MCP сервер

По своей сути, mcp server — это независимый процесс, общающийся с клиентом (например, Claude Desktop или Claude Code) через стандартный транспорт JSON-RPC (через stdio или HTTP с SSE). Никакой магии. Никаких закрытых протоколов.

Вместо того чтобы писать сотни строк бойлерплейта, вы поднимаете сервис, объявляющий три вещи: Resources (статические или потоковые данные, например, логи или состояние портфеля), Tools (действия: выставить лимитку, отменить сетку) и Prompts (готовые шаблоны задач). Модель сама решает, когда ей нужно обратиться к ресурсу, а когда запросить исполнение инструмента. При этом код исполнения физически крутится на вашей машине или защищенном бэкенде, а не плавает внутри памяти агента.

Когда вы переводите инфраструктуру на model context protocol (mcp), ваша среда разработки меняется радикально. Вы можете открыть терминал, запустить Claude Code, натравить его на локальный торговый шлюз и сказать: «Проанализируй просадку по стратегии за последние 4 часа, сопоставь с волатильностью BTC и подготовь корректировку риск-параметров». И Claude выполнит это, потому что протокол дает ему доступ к вашим базам и сервисам нативно, безопасно и структурированно.

Перестаньте изобретать велосипед

Мы потратили слишком много месяцев и сожгли достаточно депозитов, пытаясь склеить LLM с боевым софтом изолентой из разрозненных скриптов. Строить автоматизацию на костылях сегодня — это осознанный выбор терпеть ночные падения серверов и необъяснимые ошибки API.

Если вы хотите пропустить этот этап граблей и сразу собрать надежный каркас, в котором Claude берет на себя роль полноценного инженера и оператора систем, загляните в наш практикум по Production MCP & Claude Code. Мы в NEXUS Algo упаковали туда проверенные боевые шаблоны серверов, архитектуру безопасного подключения к базам и биржам, а также готовые пайплайны, которые работают годами без вашего постоянного надзора.