Skip to main content
Glama
EvgenVer

lira-sapr-mcp

by EvgenVer
README.md
# lira-sapr-mcp

MCP server that lets AI agents (Claude, Codex and other MCP clients) drive LIRA-SAPR /
LIRA-FEM 2024 R2 and newer on Windows through its COM API: create and edit models, run
the analysis, read results. Documentation is in Russian.

MCP-сервер, через который ИИ-агент управляет ЛИРА-САПР на компьютере инженера: создаёт и
правит расчётные модели, запускает расчёт и получает результаты — компактно, а полные
таблицы файлом CSV/Excel.

## Что умеет

- **Модели:** открыть, создать, импортировать из текстового формата ЛИРЫ, сохранить,
  закрыть; сводка (узлы, элементы, типы КЭ, жёсткости, загружения, есть ли результаты);
  картинка модели в PNG.
- **Правка:** любая таблица ввода ЛИРЫ; нагрузки; операции высокого уровня — добавить
  узлы и элементы, назначить или создать жёсткость, связи, собственный вес.
- **Расчёт:** запуск с ожиданием, статус, остановка, протокол, удаление результатов.
- **Результаты:** перемещения, усилия и напряжения всех типов КЭ, РСН, РСУ, периоды и
  модальные массы, подобранная арматура, нагрузки на фрагмент и продавливание. Сервер
  отдаёт экстремумы и N наибольших строк, строит огибающие, отбирает по порогу и
  выгружает полные таблицы в CSV или Excel.
- **Надёжность:** резервная копия модели перед первой правкой и откат из неё; агент
  видит модальные окна ЛИРЫ и может ответить на них; честный ответ, если ЛИРА не уложилась
  в тайм-аут.
- **Скрипт агента:** для всего остального агент выполняет свой Python-код с объектами
  ЛИРЫ.

Все 41 инструмент с описанием — в [docs/tools.md](docs/tools.md).

## Что нужно

- Windows и ЛИРА-САПР 2024 R2 или новее с действующей лицензией. ЛИРА работает с
  окном на том же компьютере; сервер запускает её сам, если она не запущена.
- [uv](https://docs.astral.sh/uv/getting-started/installation/) — он сам поставит
  нужный Python и библиотеки. Установка uv в PowerShell:

  ```powershell
  powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  ```

## Подключение к агенту

Сервер ставить отдельно не нужно: агент запускает его командой `uvx`, которая при
первом запуске скачивает сервер с GitHub и собирает его в отдельном окружении (около
минуты), а потом берёт из кэша.

Команда запуска сервера:

```bash
uvx --from git+https://github.com/EvgenVer/lira-sapr-mcp lira-sapr-mcp
```

**Claude Code** — в терминале:

```bash
claude mcp add lira-sapr -- uvx --from git+https://github.com/EvgenVer/lira-sapr-mcp lira-sapr-mcp
```

**Codex** — в файле `%USERPROFILE%\.codex\config.toml`:

```toml
[mcp_servers.lira-sapr]
command = "uvx"
args = ["--from", "git+https://github.com/EvgenVer/lira-sapr-mcp", "lira-sapr-mcp"]
```

**Claude Desktop, Cursor и другие клиенты с JSON-настройкой** (в Claude Desktop это
файл `claude_desktop_config.json`: Settings → Developer → Edit Config):

```json
{
  "mcpServers": {
    "lira-sapr": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/EvgenVer/lira-sapr-mcp", "lira-sapr-mcp"]
    }
  }
}
```

После настройки перезапустите агента и попросите его вызвать `lira_status`: он покажет
найденные версии ЛИРЫ и какая используется.

**Обновление.** `uvx` держит собранный сервер в кэше. Чтобы взять новую версию с GitHub,
выполните один раз и перезапустите агента:

```bash
uvx --refresh --from git+https://github.com/EvgenVer/lira-sapr-mcp lira-sapr-mcp --version
```

**Без доступа к GitHub.** Скачайте папку проекта и укажите её вместо адреса:
`uvx --from C:\path\to\lira-sapr-mcp lira-sapr-mcp`.

Настройки сервера (версия ЛИРЫ, тайм-ауты), журнал и решение проблем —
в [docs/operations.md](docs/operations.md).

## Важно знать

- **Скрипт агента получает полный доступ** к ЛИРЕ, файлам и Python на вашем компьютере
  (`lira_run_script`). Он включён по умолчанию: через него агент делает то, чего нет в
  остальных инструментах. Подключайте сервер только к агенту, которому доверяете, и
  следите за тем, что он запускает. Чтобы выключить скрипты, добавьте флаг
  `--no-scripts` в конец команды запуска — например, в Codex
  `args = ["--from", "git+https://github.com/EvgenVer/lira-sapr-mcp", "lira-sapr-mcp", "--no-scripts"]`.
- Перед первой правкой или перезаписью модели сервер кладёт её копию в папку
  `lira-mcp-backups` рядом с моделью и никогда не удаляет копии.
- **Нагрузки** в API ЛИРЫ задать нельзя, поэтому сервер меняет их, пересобирая модель
  через текстовый формат, и сверяет результат с оригиналом. Модели с нормами сочетаний
  ЛИРЫ по умолчанию (СП 20.13330) правятся полностью. Модели по другим нормам (например,
  СНиП 2.01.07-85\*) он не меняет: после пересборки ЛИРА не может вернуть их виды
  загружений, и сервер называет, какие виды слетели бы. Такие нагрузки правьте в окне
  ЛИРЫ. Модели со стадиями монтажа пересборку тоже не переживают — сервер отказывает и
  ничего не меняет.
- ЛИРА хранит результаты расчёта по имени модели: одноимённые модели из разных папок
  делят результаты. Сервер предупреждает агента, когда результаты принадлежат
  одноимённой модели, которую он рассчитал последней, или когда модель сохранена после
  расчёта и результаты могли устареть. Для этого после своего расчёта он кладёт в
  рабочую папку ЛИРЫ файл-метку `<имя модели>.lira-mcp.json`.
- Проверено на ЛИРА-САПР 2024 R2.3. Версии 2025 и 2026 поддерживаются тем же кодом,
  но пока не проверены. Если у вас 2025 или 2026, пришлите отчёт
  `uvx --from git+https://github.com/EvgenVer/lira-sapr-mcp lira-sapr-mcp --diagnose`
  (ЛИРУ он не запускает; отчёт появится в текущей папке; перед отправкой посмотрите
  его — там пути папок).

## Для разработчиков

```bash
uv sync
uv run pytest
```

Живые тесты на ЛИРЕ — `uv run pytest -m lira`. Как устроен сервер, какие решения
приняты и что проверено — сайт документации в `docs/`
(`uv run zensical serve -a localhost:8010`).

TDQS

B3.3/5.0

Scored across 41 tools

Disambiguation4/5

Most tools target clearly distinct resources or phases: model lifecycle, table access, loads, analysis control, and result queries. A few boundaries are softer, such as lira_analysis_protocol vs. lira_analysis_status, lira_read_table vs. lira_export_text, and generic lira_write_table vs. dedicated add/set tools, but descriptions generally disambiguate them.

Naming Consistency4/5

All tools use a consistent lira_ prefix and snake_case, which is predictable across the set. The main deviation is that many result/query tools are noun phrases rather than verb_noun actions, but the style remains coherent.

Tool Count2/5

41 tools is heavy for a single MCP server, with many result-query tools that could be consolidated or reached through fewer parameterized endpoints. The complexity of LIRA partly justifies breadth, but the surface is still over 25 tools and feels sprawling.

Completeness4/5

The tool surface covers model creation/opening/saving, backups, table editing, loads, analysis control, result extraction, design results, and dialog handling. Minor gaps remain, such as explicit deletion of nodes/elements or load cases and direct editing of load combinations, though lira_write_table and lira_run_script provide workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues