Подключение ИИ-ассистента через MCP
Создавайте, проверяйте и рассчитывайте связные графы через MCP-совместимого ассистента, затем продолжайте работу в редакторе BGModeller.
Подключение к BGModeller
Model Context Protocol (MCP) позволяет ассистенту вызывать инструменты BGModeller. Нужен клиент с поддержкой удалённых MCP-серверов через Streamable HTTP и подключение к интернету. Руководство можно читать офлайн; инструменты выполняются на публичном сервере.
Для больших динамических расчётов клиент также должен уметь программно принимать, сохранять и обрабатывать результаты в файлах. Одной поддержки MCP недостаточно. До запуска ассистент должен проверить эти возможности; если их нет, предупредить пользователя до вызова simulate_model. Подробнее — работа с большими результатами.
| Настройка подключения | Значение |
|---|---|
| Имя | bgmodeller (или другое имя в вашем клиенте) |
| URL сервера | https://bgmodeller.mkefweb.com/mcp |
| Транспорт | Streamable HTTP через HTTPS |
| Аутентификация | None / anonymous: без аутентификации. Учётная запись BGModeller, API-ключ и вход через OAuth не требуются. |
В настройках MCP вашего клиента добавьте удалённый сервер с этими параметрами. Включите его инструменты, при необходимости переподключитесь и попросите ассистента вызвать get_capabilities. URL предназначен для протокола: открытие адреса как обычной страницы в браузере не проверяет подключение.
Пример для Codex CLI
codex mcp add bgmodeller --url https://bgmodeller.mkefweb.com/mcp
codex mcp list
Если инструменты не появились, переподключитесь или начните новый сеанс. Способ подключения MCP в Codex описан в официальной документации OpenAI. В других клиентах используйте их интерфейс настроек, транспорт Streamable HTTP и тот же URL сервера.
Доступные инструменты
Ниже приведены имена инструментов на сервере; клиент может добавлять к ним префикс. Все физические величины задаются в единицах СИ.
| Инструмент | Назначение |
|---|---|
get_capabilities | Текущие ограничения публичных расчётов и MCP. Вызывайте первым. |
get_library | Поддерживаемые компоненты, именованные порты, параметры и физические области. |
list_documentation | Темы руководства и разделы блоков: идентификаторы, названия, типы компонентов и ссылки. Необязательный language: en (по умолчанию) или ru. |
get_documentation | Текст темы topic или отдельного раздела section на выбранном language. Возвращает уравнения, таблицы, описания схем и связанные темы; задача расчёта не создаётся. |
list_examples | Список встроенных примеров и их идентификаторов. |
get_example | Получение редактируемого JSON модели с расположением элементов. Передайте идентификатор примера в name. |
validate_model | Проверка и нормализация документа из model. Возвращает задачу; незавершённая схема может пройти проверку документа. |
analyze_model | Проверка топологии, анализ причинности и уравнений для model. Возвращает задачу. |
simulate_model | Численный расчёт model с необязательными settings. Возвращает задачу. |
get_job | Статус задачи по двум значениям: job_id и job_token. |
get_result | Модель, анализ, численные результаты или диагностика завершённой задачи. Нужны её идентификатор и токен. |
cancel_job | Отмена задачи по её job_id и закрытому job_token. |
Чтение руководства и справочника блоков
Ассистент может читать руководство непосредственно через MCP, без отдельного инструмента браузера. Используйте известные идентификаторы тем и разделов для адресных вызовов get_documentation. Если идентификаторы неизвестны, вызовите list_documentation: он возвращает topics с названиями тем, их идентификаторами topic и массивами sections. У разделов блоков есть поле component; для примитивов также указана физическая область domain. Повторно используйте уже прочитанную документацию в рамках задачи.
Примеры вызовов инструментов для чтения описания гидроцилиндра:
list_documentation({"language":"ru"})
get_documentation({"topic":"cylinder","language":"ru"})
get_documentation({"topic":"cylinder","section":"block-CylinderDA","language":"ru"})
Первый вызов нужен только для поиска неизвестных идентификаторов; второй читает всю тему, третий — только раздел блока. Для английского используйте "language":"en" или не указывайте язык. Для сопротивления в гидравлике выберите "topic":"hydraulics","section":"block-R", а для механического демпфера — "topic":"mechanics","section":"block-R". Используйте известные или найденные идентификаторы, а не URL или путь к файлу.
В ответе data.content содержит текст, data.url — ссылку на исходную страницу или раздел, а data.links — связанные темы. Для перехода к связанной теме передайте её topic, language и, если есть, section в следующий вызов get_documentation. Не передавайте весь объект ссылки: title и url не являются аргументами инструмента.
Текст берётся из того же руководства, что открывается в браузере. Сохраняются уравнения, таблицы, подписи и текстовые описания схем; изображения не передаются. Если нужно рассмотреть рисунок, откройте data.url. Нижние и верхние индексы в тексте обозначаются как A_{A} и x^{2}.
Пример запроса: «Прочитай русское описание CylinderDA и связанных компонентов через BGModeller MCP. Объясни порты, единицы, уравнения и ограничения, затем предложи модель с учётом этих допущений».
Чтение документации не запускает расчёт и не требует токена задачи, но учитывается в общем ограничении частоты API-запросов. Если новые инструменты не появились после обновления сервера, переподключите MCP в клиенте. При ошибке 404 для темы или раздела заново получите список через list_documentation.
Пример: расчёт механической модели
После подключения попробуйте такой запрос:
Используй инструменты BGModeller MCP, чтобы открыть пример mechanical_two_mass. Сначала прочитай ограничения, библиотеку компонентов и соответствующие разделы руководства через get_documentation; ищи неизвестные идентификаторы только при необходимости. Проверь документ модели, проанализируй топологию и уравнения, затем выполни симуляцию. Дождись каждой задачи и проверь её результат перед следующим шагом. Объясни результаты в единицах СИ и сообщи диагностику. Верни проверенную модель в виде файла two-mass.json для скачивания, чтобы я мог открыть её в редакторе.
- Один раз прочитайте
get_capabilitiesиget_library, затемget_exampleс{"name":"mechanical_two_mass"}и соответствующие описания механических блоков черезget_documentation. Повторно используйте полученные сведения; вызывайтеlist_examplesилиlist_documentationтолько для поиска неизвестных идентификаторов. Используйте структуру полученной модели, не подбирайте имена компонентов и портов наугад. - Вызовите
validate_modelс{"model": …}. Принятая задача возвращаетhttp_status: 202и объектdataсjob_idиjob_token. - Вызывайте
get_jobс обоими значениями. Соблюдайтеretry_after; иначе ожидайте 1, 2, 4, затем 8 секунд, сохраняя интервал 8 секунд при следующих опросах. При статусеcompletedвызовитеget_result. Не публикуйте токен. Проверьтеhttp_status, признак успеха, диагностику и причину завершения: завершённая задача не обязательно содержит успешный расчёт. - Возьмите
data.modelиз успешного результата проверки. Передайте его вanalyze_model, дождитесь выполнения и получите результат этой задачи. Исправьте ошибки топологии до симуляции: успешная проверка документа ещё не означает, что модель можно рассчитать. - Передайте проверенную модель в
simulate_model, дождитесь выполнения и получите результат. До интерпретации рядов проверьте статус завершения, время и диагностику. Каждый запуск возвращает собственные идентификатор и токен задачи.
Ответы инструментов содержат http_status, retry_after и data. Ассистент должен сообщать статус и ошибки, сохранять файл модели вместе с результатами и показывать только необходимые выборки вместо полных численных массивов.
Большие динамические результаты: требования к клиенту
Динамический расчёт может вернуть большой набор временных рядов для множества элементов и переменных схемы. Поиск значений в нужные моменты времени, экстремумов и событий требует программной обработки; полный JSON в контексте ассистента не заменяет работу с файлами.
- До запуска: убедиться, что клиент может принять ответ инструмента в коде без вывода больших массивов в контекст, сохранить его в доступный файл и затем читать и обрабатывать этот файл программно. Если это невозможно или возможности не подтверждены, предупредить пользователя до запуска большого расчёта и предложить клиент с такой поддержкой. Меньший объём расчёта можно предложить только с объяснением влияния на запрошенный результат; нельзя молча сокращать временной интервал или разрешение.
- При получении:
get_resultвозвращает полный JSON, а не готовый файл. Сохранить полученные данные непосредственно из кода до истечения срока хранения, без печати полного ответа и без переписывания массивов ассистентом. Сохранить исходные численные данные, идентификаторы переменных и элементов, единицы, временные координаты, диагностику и статус решателя. Проверить запись и читаемость файла; нормализованную модель сохранить отдельно. - При обработке: загружать файл в коде и выбирать переменные по идентификаторам, значения по временным координатам, экстремумы и события. Если запрошенного момента нет в выходной сетке, явно указать выбранный ближайший шаг или способ интерполяции. Ассистенту передавать пути к файлам, фактический интервал расчёта, число точек, статус завершения, существенную диагностику и компактную выборку с единицами и идентификаторами.
- При представлении: строить графики, таблицы и экспорты из сохранённых данных, сохраняя оригинал с полным разрешением. Прореживание для отображения должно сохранять значимые экстремумы и события. Не запускать расчёт повторно только ради изменения оформления.
Сохранение JSON после его вывода в контекст не устраняет уже потраченный контекст. MCP-сервер сам не сохраняет файлы в рабочем пространстве клиента: это обязанность клиента. Экономия контекста не должна скрывать ошибки и существенные предупреждения.
Открытие модели в редакторе
- Сохраните объект модели из результата проверки (
data.model) в файл.jsonв кодировке UTF-8, напримерtwo-mass.json. В файл модели не должны попадать полный ответ инструмента, идентификатор и токен задачи или ограждения блока кода Markdown. - Откройте редактор BGModeller. Сначала сохраните текущую работу, затем нажмите Open на панели инструментов и выберите JSON-файл.
- Проверьте параметры компонентов, начальные условия, соединения и расположение элементов. Нажмите Analyze и Simulate для проверки и расчёта в редакторе, затем Save для сохранения изменений.
JSON модели сохраняет расположение элементов и настройки, но не включает результаты симуляции. Для больших динамических расчётов обязательно сохраняйте полные численные результаты отдельно по правилам файловой обработки. MCP не открывает браузер и не сохраняет файлы на вашем компьютере автоматически: это делает клиент. Подробнее — результаты и файлы в редакторе.
Ограничения и устранение ошибок
MCP и расчёты в браузере используют общую очередь публичного сервиса и общие квоты на IP-адрес. У облачного ассистента может быть общий исходящий IP, поэтому квоту могут делить несколько пользователей. MCP не увеличивает доступные вычислительные ресурсы.
Получайте актуальные data.limits и data.mcp_limits через get_capabilities. Стандартная публичная конфигурация:
| Ограничение | Стандартное значение |
|---|---|
| Размер модели | 80 элементов, 160 соединений |
| Численные результаты | 2 001 точка вывода; 250 000 выходных значений |
| Активные задачи, включая очередь | 2 на IP; 4 на весь сервис |
| Ожидание / выполнение | 45 секунд в очереди; 20 секунд выполнения (не модельного времени) |
| Хранение результатов | 120 секунд после завершения задачи; перезапуск сервиса может сделать задачи недоступными раньше |
| Размер запроса MCP | 2 МиБ на весь JSON-запрос, включая модель и оболочку протокола |
| Сложность JSON | 32 уровня вложенности; 50 000 значений JSON |
| Размер ответа | 10 МиБ на результат сервера; 24 МиБ на закодированный ответ MCP |
- Сервис занят или превышена частота запросов (429): выдержите паузу
retry_after, если она указана, и реже опрашивайте статус. Проверка документа и анализ тоже расходуют квоты расчётов. - Ошибка модели (422): прочитайте диагностику, исправьте указанные компоненты или соединения и повторите проверку.
- Задача не найдена или истёк срок хранения (404): проверьте, что идентификатор и токен относятся к одной задаче. Скачивайте результаты сразу; после истечения срока они не восстанавливаются. При необходимости запустите новый расчёт из сохранённой модели.
- Соединение потеряно при отправке: задача уже может выполняться. Не отправляйте её повторно автоматически; если получили идентификатор и токен, сначала проверьте эту задачу.
- Инструменты недоступны: проверьте точный HTTPS-адрес, транспорт и включение инструментов в клиенте. При недоступности MCP редактор в браузере может продолжать работать.