Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SIMINTECH_OUTPUT_DIRNoDirectory for simulation output files. Defaults to <temporary directory>/simintech-output.<temp>/simintech-output

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
add_blockC

Добавить блок на главную страницу проекта.

connectA

Соединить выход блока src с входом блока dst линией связи.

Созданная линия запоминается, но не трассируется здесь: трассировка (layout_place) делается, когда блоки займут свои места. Нормализовать сразу нельзя — блоки в этот момент стоят в (0,0) друг на друге, и NormalizeWire прокладывает маршрут в обход наложенных блоков, оставляя в геометрии точки вида (-160,-1056). Проверено на SimInTech64 2026-09-15: такие точки потом не пересчитываются, и линия остаётся кривой даже после расстановки.

list_blocksA

Вывести список блоков текущей страницы проекта.

get_block_paramsA

Прочитать параметры блока.

COM API не умеет перечислять свойства блока, поэтому читаются имена из каталога блоков (simintech_api/data/block_catalog.json). Имена короткие и различаются по классам: у «Константы» a, у «Ступеньки» t/y0/yk, у «Интегратора» k/x0.

set_block_paramA

Установить параметр блока и переинициализировать блок.

Блок переинициализируется (InitBlock) — без этого изменение может не дойти до расчёта: карта COM API отмечает, что SetBlockProp не влияет на уже инициализированные блоки (например, «Константа»).

Имя параметра сверяется с каталогом блоков до записи. Раньше здесь было предупреждение уже после записи, а сам SetBlockProp неизвестные имена не отвергает: значение уходило в никуда, и по ответу нельзя было отличить применённый параметр от неприменённого.

Отдельно отвергается Name: он в каталоге есть (общее свойство), но блок не переименовывает — COM такой записи не применяет.

read_output_fileA

Прочитать текстовый файл с результатами расчёта.

Основной способ получить результаты: get_signal работает только у проекта с подключённой базой сигналов, а блок «В файл» пишет результат в текстовый файл независимо от базы. Каждая строка — один момент времени: «<время> <значение 1> … <значение n>».

Порядок работы: add_block("В файл", props="filename=<путь>,count=1,step=[0.1]") → соединить с выходом модели → run(to_time=…) → read_output_file(<путь>).

Читается только каталог результатов. По умолчанию это <временный каталог>/simintech-output (переопределяется переменной SIMINTECH_OUTPUT_DIR), и блок «В файл» должен писать внутрь него — иначе инструмент откажет. Это стандартное ограничение, а не опция: иначе инструмент превращается в «прочитать произвольный файл по пути от клиента». Относительный путь ищется внутри каталога результатов, символические ссылки раскрываются до проверки — поэтому .. и ссылки выйти наружу не помогают. Текущий каталог печатает help_text.

summarize_output_fileA

Свести результат расчёта к числам: диапазон, min/max, среднее, наклон.

Дополняет read_output_file, который отдаёт строки как есть: проверять модель по двумстам строкам текста неудобно, а по сводке видно, попала ли кривая в ожидание. Работает без COM — сохранённый файл результата разбирается и на машине без SimInTech.

Колонки файла блока «В файл»: 0 — время, 1..n — значения. По умолчанию берётся последняя колонка (выход модели).

inspect_project_fileA

Разобрать сохранённый проект (.xprt) без COM — годится и для Linux.

SimInTech работает только на Windows, но XML-экспорт проекта (его пишет save_project) читается где угодно: видно, какие блоки в модели и с какими параметрами. Это способ проверить чужую модель, не поднимая среду.

Что даёт разбор: классы блоков с именами их параметров (включая вычисляемые — запись в них ничего не меняет) и имена блоков, по которым адресуются connect/get_signal.

Чего не даёт: связей и координат — по XML они не восстанавливаются надёжно, — и расчёта: без Windows он не идёт. Значения параметров показаны не будут: в файле они у каждого экземпляра свои.

help_textA

Справка: порядок работы и где взять список инструментов.

Перечня команд здесь намеренно нет: он дублировал бы tools/list и расходился бы с ним при каждом добавлении инструмента. Источник истины по составу — tools/list.

layout_placeA

Расставить блоки по слоям без наложений — с применением координат.

Координаты считает LayeredPlacer, и они тут же применяются к блокам (set_center). Раньше инструмент только возвращал координаты текстом, а блоки не двигал: агент получал подтверждение расстановки, которой не было. Позиция задаётся до расчёта — она влияет только на вид схемы.

Размеры блоков не задаются: set_center сохраняет родной размер каждого блока (он задан правилами разработки SimInTech, и подменять его нельзя), а расстановка считается по фактическим габаритам из get_size.

Здесь же трассируются линии, созданные connect в этой сессии: после сдвига блоков геометрия пересчитывается NormalizeWire, иначе провода остаются диагональными (по прямой между портами). Это единственное место, где трассировка возможна: до расстановки блоки лежат в (0,0) друг на друге, и маршрут получается в обход наложенных блоков. Линии, созданные не в этой сессии, недоступны: COM не умеет перечислять линии страницы.

statusA

Проверить доступность COM-сервера SimInTech (Windows).

disconnectA

Завершить сессию: закрыть проект и отсоединиться от COM-сервера.

Сбрасывается всё состояние сессии. Раньше обнулялся только клиент, а текущий проект оставался в глобальной переменной: следующие вызовы шли с мёртвым ProjectId.

create_projectA

Создать новый проект SimInTech из шаблона «пустой модели».

Проект создаётся из шаблона поставки (Схема модели общего вида.prt), а не через NewProject: пустой проект не считает — в нём нет расчётного слоя и настроек расчёта, поэтому модельное время не растёт ни через run, ни через step, хотя вызовы и возвращают успех. Особенности среды — simintech-code/docs/reference/com_api_inventory.md, §18.

Предыдущий открытый проект закрывается: иначе они копились бы внутри mmain.exe.

set_calc_timeB

Задать конечное время расчёта проекта (endtime расчётного слоя).

Расчёт идёт до этого момента; run(to_time=…) не может уйти за него.

open_projectA

Открыть существующий проект SimInTech (.prt/.xprt).

Предыдущий открытый проект закрывается (см. create_project).

save_projectA

Сохранить текущий проект в файл.

Два формата, и назначение у них разное:

  • XML (.xprt, по умолчанию) — обычный текст: читается глазами, диффится, переживает перенос между версиями;

  • бинарный (.prt, binary=True) — нативный формат проекта, тот самый, который открывает GUI SimInTech. XML в GUI тоже открывается, но двойным щелчком по файлу проекта запускается именно .prt.

Перед записью показывается форма проекта (FormShow) — иначе файл получится «закрытым» для GUI: состояние окна хранится в самом проекте, и сессия, работающая через COM, записывает в него признак «окно скрыто». COM такой проект потом открывает и считает, а GUI восстанавливает сохранённое состояние окна и окна модели не показывает — выглядит как «проект не открылся».

close_projectB

Закрыть текущий проект.

runA

Запустить расчёт проекта (опционально до момента времени).

Проверяется фактическое модельное время, а не код возврата: на проекте без расчётного слоя или с неподключённым входом ProjectRun/RunTo/ ProjectStep возвращают успех, а модельное время не растёт. Раньше инструмент в этом случае сообщал «Расчёт завершён» — ложное подтверждение. Недостижение отметки — отказ (isError), а не текст в успешном ответе: клиент, доверяющий флагу, иначе счёл бы расчёт дошедшим.

Расчёт идёт до endtime проекта, поэтому to_time больше него недостижим — поднимите время расчёта через set_calc_time.

stepA

Выполнить указанное число шагов расчёта.

Проверяется фактический рост модельного времени, а не только код возврата: ProjectStep сообщает об успехе и на проекте без расчётного слоя, и при неподключённом входе блока — время при этом стоит. Раньше инструмент безусловно отвечал «Выполнено шагов: N». Если время не сдвинулось, инструмент отказывает: шаги, которых не было, — не успех.

stopA

Остановить расчёт.

Вызов неблокирующий и не подтверждает, что расчёт шёл: ProjectStop сообщает об успехе и на стоящем проекте. Состояние проверяйте по get_time.

get_timeA

Вернуть текущее модельное время проекта.

list_signalsA

Вывести читаемые сигналы проекта и имена блоков отдельно.

Сигналы (source='com') имеют дескриптор и читаются через get_signal. Имена блоков из XML читать нельзя — это подсказка о содержимом схемы.

get_signalA

Прочитать значение сигнала — он адресуется именем блока.

Работает только у проекта с подключённой базой сигналов. У модели, созданной через create_project, базы нет: list_signals скажет об этом прямо, а этот инструмент вернёт ошибку. Результат самодельной модели забирайте блоком «В файл» и read_output_file.

set_signalB

Записать значение в сигнал (адресуется именем блока).

Записывать можно только сигналы проекта с подключённой базой сигналов — как и get_signal.

Prompts

Interactive templates invoked by user choice

NameDescription
create_pid_modelШаблон создания ПИД-регулятора в SimInTech. Возвращает последовательность команд для сборки ПИД-контура с обратной связью через инструменты MCP-сервера.
create_rc_chainШаблон создания RC-цепи (ступенька → усилитель → интегратор).

Resources

Contextual data attached and managed by the client

NameDescription
resource_statusСтатус COM-сервера SimInTech (аналог инструмента status). Инструмент при недоступном COM отказывает (это и есть отказ), а ресурс — только читаемое представление, поэтому причину возвращает текстом: исключение при чтении ресурса клиенту ничего не объясняет.
resource_project_blocksСписок блоков текущего проекта (read-only представление).
resource_blocks_catalogКаталог блоков: классы, их параметры и вычисляемые имена. Источник — `simintech_api/data/block_catalog.json` из `simintech-code`. Агенту он нужен, чтобы не угадывать имена параметров: имена короткие и различаются по классам (у «Константы» — `a`, а не `y0`), а запись в неизвестное имя COM принимает молча.
resource_skillsСписок скиллов: что агент может подгрузить про SimInTech. Скиллы живут в отдельном репозитории `simintech-skill`; сервер их только читает (искать в этом репозитории нечего).

TDQS

A3.7/5.0

Scored across 24 tools

Disambiguation5/5

Each tool addresses a distinct resource or action: signals are separated from block parameters, reading files is separated from reading signals, and run/step/stop are clearly differentiated. Even adjacent tools like get_signal, read_output_file, and summarize_output_file have explicit usage boundaries, so an agent is unlikely to select the wrong one.

Naming Consistency4/5

The dominant pattern is snake_case verb_noun (get_signal, create_project, set_block_param, list_blocks), which is readable and predictable. A few tools break the pattern with bare verbs (connect, run, step, stop) or noun-style names (status, help_text), but these deviations are minor and do not obscure meaning.

Tool Count3/5

24 tools sits in the heavy borderline range; the set is organized into project, model, simulation, and results subdomains, but several utility/introspection tools (help_text, status, inspect_project_file, summarize_output_file) inflate the count. Each tool is individually useful, but the overall surface is more than a typical well-scoped MCP server needs.

Completeness3/5

The core workflow—create/open/save/close projects, add and configure blocks, run/step/stop, and fetch results—is covered. However, there is no way to delete a block or remove a wire, which is a notable gap when composing models iteratively, and signal-DB setup is also outside the tool surface. These gaps are workable but prevent full lifecycle coverage.

Maintenance

ActivityMaintained
ResponsivenessNo issues