Кратко
Когда агент снова и снова решает одну и ту же многошаговую задачу, он может предложить переиспользуемый инструмент на коде через code_propose_tool. Предложение ничего не запускает и ничего не выдаёт; администратор проверяет программу в разделе AI Skills и создаёт инструмент одним кликом: только для чтения и с правами вызывающего. Как это работает в AnythingMCP, шаг за шагом.
Коротко: Агент, который отвечает на вопрос «ежемесячная выручка по каналам», каждую неделю заново пишет одну и ту же программу. Ему не нужно переписывать её каждый раз, но и создавать инструменты самостоятельно он тоже не должен. В режиме кода AnythingMCP работает золотая середина: агент вызывает code_propose_tool, передавая название, описание, программу и причину, по которой её стоит сохранить. Это лишь записывает предложение: код не выполняется, инструмент не появляется. Администратор находит предложение в разделе AI Skills → Suggested, читает программу и нажимает Create tool. Новый инструмент работает только на чтение и выполняется с правами каждого вызывающего; любые дополнительные права выдаются отдельной, осознанной правкой. Доступно в self-hosted AnythingMCP начиная с v0.52.0, скоро появится в AnythingMCP Cloud.
Почему предложения, а не самостоятельно созданные инструменты
Агенты хорошо замечают, что задача механическая: те же три вызова, то же объединение, та же сумма. Если превратить это в сохранённый инструмент, следующий ответ станет быстрее, дешевле и стабильнее. Но инструмент — это ещё и постоянная возможность в твоём рабочем пространстве, а программу за ним написала модель, которая могла читать недоверенный контент. Поэтому агент может предлагать, а решает человек. Тот же принцип AnythingMCP применяет к навыкам и корпоративной памяти, которые предлагают ИИ-клиенты: агент составляет черновик, администратор одобряет.
Что понадобится
- Self-hosted AnythingMCP v0.52.1 или новее с настроенным исполнителем кода (настройка в шаге 1 здесь).
- Режим кода
inlineна MCP-сервере. Именноinlineпредоставляетcode_executeиcode_propose_tool;toolsотдаёт только сохранённые инструменты на коде. Задай его в настройках сервера (Code mode → Saved code tools + inline code), доступно с v0.52.1; см. шаг 2 руководства по инструменту на коде. - Право на встроенный код у роли пользователя. У администраторов рабочего пространства оно есть.
- Как было объявлено вместе с v0.52, встроенный код и предложения входят в тарифы Team и Enterprise.
Шаг 1 — Агент решает задачу встроенным кодом
Пользователь задаёт вопрос, для ответа на который нужно несколько вызовов, например: «выручка за октябрь, магазин и B2B-счета». Когда встроенный код включён, агент пишет программу и запускает её через code_execute: только чтение, с правами самого пользователя, поверх коннекторов, доступных ему на этом сервере. Как выглядит такая программа, смотри в рецепте про выручку.
Шаг 2 — Агент предлагает сохранить программу
Когда агент находит закономерность, которую стоит сохранить (сам или потому, что пользователь говорит «сохрани это как инструмент»), он вызывает code_propose_tool со следующими полями:
| Поле | Что заполняет агент |
|---|---|
name | Короткое имя инструмента, например monthly_revenue_by_channel |
description | Что инструмент делает и что возвращает, для администратора и будущих вызывающих |
code | Программа, того же вида, что и тело для code_execute |
rationale | Почему её стоит сохранить, например: «спрашивали четыре раза в этом месяце; заменяет около 20 вызовов инструментов» |
inputSchema | Необязательно: собственные параметры инструмента, например month в формате YYYY-MM |
Ответ агенту простой: предложение записано на проверку и не будет выполняться или становиться инструментом, пока администратор его не одобрит. То же можно сообщить и пользователю.
Шаг 3 — Администратор проверяет предложение
Открой AI Skills в боковой панели (раздел Intelligence) и переключись на Suggested. Предложение отображается как карточка с пометкой Code tool proposal и содержит:
- область действия и пометку, что предложение внёс агент, а инструмент только для чтения и выполняется с правами вызывающего;
- Why: обоснование агента;
- Does: описание;
- Program с длиной в символах, чтобы прочитать её целиком;
- примечание о том, на каком коннекторе будет создан инструмент, и о том, что права на запись или права автора можно добавить только позже на странице инструментов коннектора.

Читай программу так же, как проверял бы небольшой pull request:
- Какие инструменты она вызывает? Каждый
amcp.run('…'). Те ли это инструменты, которые обещает описание, и все ли они на чтение? - Что она возвращает? Только то, что нужно для вопроса, или целые записи с персональными данными?
- Разумно ли устроены циклы? Постраничная выборка заканчивается, пакеты параллельных вызовов, нет вызова на каждую строку большой таблицы без необходимости. Запуск останавливается через 10 секунд и 500 вызовов инструментов.
- Достаточно ли понятны имя и описание, чтобы ИИ вызвал инструмент в нужный момент и правильно объяснил результат (брутто или нетто, какой период, какие системы)?
Шаг 4 — Создай инструмент или отклони предложение
Create tool выполняет обычные проверки при создании инструмента: коннекторы должны принадлежать одному рабочему пространству, а также действует лимит тарифа на число сохранённых инструментов на коде. Инструмент создаётся на коннекторе, указанном в карточке:
- только чтение (он может вызывать лишь инструменты, которые не изменяют данные);
- выполнение от имени вызывающего (каждый внутренний вызов проверяется по собственной роли вызывающего);
- с коннекторами автора предложения на этом сервере. После создания открой инструмент и сузь Uses до коннекторов и инструментов, которые он действительно вызывает.
Dismiss переносит предложение на вкладку Dismissed. Если агент продолжает предлагать то, что тебе не нужно, укажи это в инструкциях сервера.
Шаг 5 — Только при необходимости: дополнительные права, осознанно
Созданный инструмент можно редактировать, как любой инструмент на коде, на странице MCP Tools коннектора. Две настройки через предложение недоступны вообще:
- Allow write tools: программа сможет вызывать инструменты, изменяющие данные. Требуется Enterprise.
- Run as definer: программа выполняется с настройками автора вместо прав вызывающего. Только для администраторов.
Обе настройки перепроверяются при сохранении. В этом и смысл архитектуры: агент никогда не сможет повысить собственные полномочия, потому что предложение всегда только для чтения, всегда выполняется от имени вызывающего и ограничено коннекторами, к которым у предложившего пользователя уже был доступ.
Почему это безопасно
- Предложение инертно.
code_propose_toolне выполняет код и ничего не создаёт. - Нет повышения привилегий. Предложенный инструмент может ссылаться только на собственные коннекторы автора предложения и стартует в режиме только чтения, от имени вызывающего.
- Решает человек. Только администратор может превратить предложение в инструмент, и для этого проходят те же проверки, что и для инструмента, написанного вручную.
- Запуски остаются изолированными и аудируются. После создания каждый запуск проходит через изолированный исполнитель кода и записывается вместе с каждым внутренним вызовом инструмента. См. Безопасное выполнение кода для ИИ-агентов.
FAQ
Может ли обычный пользователь предлагать инструменты?
Любой пользователь, у роли которого есть право на встроенный код, на сервере с режимом кода inline. Без этого права пользователь не видит ни code_execute, ни code_propose_tool.
Видит ли агент, было ли его предложение принято? Агент увидит новый инструмент в списке инструментов сервера после его создания, как и любой другой, и сможет вызывать его в дальнейшем.
Можно ли отредактировать программу перед созданием инструмента? Создай инструмент, а затем отредактируй его на странице MCP Tools коннектора, как любой инструмент на коде: программу, описание, параметры, Uses.
Related
- Что такое режим кода MCP?
- Создай свой первый инструмент на коде, шаг за шагом
- Рецепты режима кода: ежемесячная выручка, сверка счетов, 100 запросов цен
- Безопасное выполнение кода для ИИ-агентов
- Управление MCP, роли и права пользователей
- Граф знаний для MCP
Это руководство помогло?