Кратко
Code mode позволяет AI-агенту запустить одну короткую программу, которая вызывает сразу несколько MCP-инструментов, вместо того чтобы вызывать их по одному через модель. Почему это экономит токены и обращения к модели, когда это помогает, а когда нет, и как AnythingMCP это реализует: сохранённые code-инструменты, встроенный код и предложения агента в изолированном раннере.
Кратко: В обычном MCP AI-агент вызывает один инструмент, читает результат целиком, принимает решение, вызывает следующий инструмент и так далее. Каждый шаг — это обращение к модели, а каждый промежуточный результат проходит через её контекстное окно. Code mode позволяет агенту (или администратору заранее) написать короткую программу на JavaScript, которая делает эти вызовы, фильтрует и объединяет результаты и возвращает только ответ. В AnythingMCP программа выполняется в изолированном раннере, который имеет доступ только к тем MCP-инструментам, которые вызывающему уже разрешено использовать. Code mode доступен в self-hosted AnythingMCP начиная с v0.52.0 и скоро появится в AnythingMCP Cloud; пока ты его не включишь, он выключен.
Проблема: вызовы инструментов идут через модель
Возьмём вопрос, который руководитель отдела продаж мог бы задать ассистенту, подключённому к CRM и ERP:
«Какие из наших открытых коммерческих предложений относятся к клиентам, у которых всё ещё есть просроченный счёт?»
При одном вызове инструмента на шаг агент:
- вызывает CRM, чтобы получить список открытых предложений (допустим, 40), и читает все 40 в свой контекст;
- вызывает ERP по одному разу на клиента, чтобы найти открытые счета: ещё 40 вызовов, ещё 40 результатов в контексте;
- сравнивает их «в уме» и пишет ответ.
Каждый вызов — это отдельный ход: модель пишет вызов, клиент его выполняет, результат возвращается в модель, модель читает его и пишет следующий вызов. Полные результаты остаются в контексте, хотя для ответа нужно, возможно, пять строк. Это стоит токенов (всё, что читает модель, тарифицируется и занимает её контекстное окно), времени (десятки ходов) и точности (сравнение 40 списков чтением — это то место, где модели ошибаются).
Идея: пусть модель напишет программу
Языковые модели хорошо пишут короткие программы. Поэтому вместо того, чтобы делать вызовы самому, агент пишет одну программу:
const quotes = await amcp.run('crm_list_open_quotes', {});
const overdue = [];
for (const q of quotes) {
const invoices = await amcp.run('erp_open_invoices', { customer: q.customerId });
const late = invoices.filter((i) => i.dueDate < new Date().toISOString().slice(0, 10));
if (late.length) overdue.push({ quote: q.number, customer: q.customerName, overdueInvoices: late.length });
}
return overdue;
Названия инструментов условные; на практике это инструменты твоих коннекторов.
Программа выполняется рядом с инструментами. 40 записей о предложениях и 40 списков счетов никогда не попадают в контекст модели; туда попадает только возвращённый список. Один ход вместо сорока одного. Эта идея стала популярной в 2025 году под названиями вроде «code mode» и «code execution with MCP»; AnythingMCP реализует её как управляемую функцию шлюза.
| Один вызов инструмента на шаг | Code mode | |
|---|---|---|
| Ходы через модель | По одному на вызов (41 в примере) | Один |
| Что попадает в контекст | Каждый промежуточный результат | Программа и её возвращаемое значение |
| Циклы, фильтры, соединения | Выполняет модель, читая данные | Выполняет код, точно |
| Лучше всего подходит для | Одиночных запросов, шагов, требующих суждения | Повторяющейся механической многошаговой работы |
Три формы в AnythingMCP
Сохранённые code-инструменты. Администратор один раз пишет программу и сохраняет её как инструмент, например customer_overview(customer), который читает данные из ERP и CRM и возвращает одну сводку. Для AI-клиента это обычный MCP-инструмент: он отображается в списке, права на него настраиваются по ролям, его вызовы попадают в аудит. Агент просто вызывает его. Создай свой первый code-инструмент.
Встроенный код (code_execute). На серверах, где эта функция включена, агент может написать и сразу выполнить программу поверх инструментов, которые разрешено использовать пользователю. Всегда только для чтения и всегда с собственными правами вызывающего.
Предложения (code_propose_tool). Когда агент замечает многошаговый шаблон, который стоит сохранить, он может предложить его как сохранённый code-инструмент. Предложение ничего не запускает и ничего не создаёт; администратор просматривает программу и нажимает Create tool. Как утверждаются предложения.
Что обеспечивает безопасность
Код, написанный моделью, по определению недоверенный: результат инструмента с внедрённым промптом может повлиять на то, что напишет модель. Поэтому AnythingMCP никогда не выполняет его в собственном процессе. Каждый запуск отправляется в отдельный сервис code-runner: один жёстко ограниченный подпроцесс на запуск, без сети, без файловой системы, без переменных окружения и без секретов. Единственный выход наружу — amcp.run, на который шлюз отвечает от имени роли вызывающего, с теми же правилами чтения и записи, что и при прямом вызове инструмента. Каждый запуск и каждый вызов инструмента внутри него попадает в журнал аудита. Полная модель: Безопасное выполнение кода для AI-агентов.
Когда code mode помогает, а когда нет
Он помогает, когда работа механическая и повторяющаяся: один и тот же запрос для 100 артикулов, сумма по двум системам, сопоставление счетов с заказами, отчёт, который всегда требует одних и тех же пяти вызовов. Смотри три рецепта.
Он не помогает, когда нужно сделать всего один вызов (программа вокруг единственного вызова только добавляет шаг) или когда на каждом шаге требуется суждение модели о только что прочитанном («прочитай этот договор и реши, что проверить дальше»). Запись намеренно ограничена: встроенный код никогда не записывает, а сохранённый code-инструмент может вызывать инструменты записи, только если это разрешил администратор, в редакции Enterprise.
Доступность и ограничения
| Self-hosted (v0.52.0+) | AnythingMCP Cloud | |
|---|---|---|
| Code mode | Доступен, по умолчанию выключен | Скоро |
| Требования | Сервис code-runner и включённый code mode для каждого MCP-сервера | – |
По редакциям, как было объявлено с v0.52:
| Community | Starter | Team | Enterprise | |
|---|---|---|---|---|
| Сохранённые code-инструменты | 3 | 5 | 20 | Без ограничений |
| Встроенный код и предложения агента | – | – | ✓ | ✓ |
| Code-инструменты с правом записи, «run as definer» | – | – | – | ✓ |
Один запуск ограничен 10 секундами, 500 вызовами инструментов (по 16 одновременно) и 1 МБ возвращаемых данных. Code-инструменты предоставляются только на собственных MCP-серверах рабочего пространства и никогда на общем эндпоинте /mcp, который используют AI-клиенты из каталогов. Сравнить тарифы.
FAQ
Code mode заменяет MCP? Нет. Это способ использования MCP-инструментов. Программа вызывает те же инструменты, которые агент мог бы вызвать напрямую, через тот же шлюз и с теми же правами.
Какие AI-клиенты это поддерживают?
Все. Сохранённый code-инструмент — обычный MCP-инструмент, а code_execute — обычный инструмент, принимающий программу в качестве аргумента. Claude, ChatGPT, Copilot, Gemini и Cursor могут вызывать оба.
Какой язык?
JavaScript, в виде тела асинхронной функции. Без импортов и пакетов: у программы есть amcp и сам язык.
Сколько это экономит? Всё зависит от задачи. Одиночный запрос ничего не экономит. Задача, при которой в контекст пришлось бы читать десятки промежуточных результатов, экономит большую часть этих токенов и ходов, потому что к модели возвращается только возвращаемое значение.
Связанные материалы
- Создай свой первый code-инструмент шаг за шагом: заказы из ERP и аккаунт из CRM в одном вызове
- Безопасное выполнение кода для AI-агентов: как работает изолированный раннер
- Рецепты code mode: выручка за месяц, сверка счетов, 100 запросов цен
- Агент предлагает code-инструмент, администратор его утверждает
- Что такое MCP?
- Governance MCP, роли пользователей и права
Это руководство помогло?