Skip to main content
Glama
Zmokizmoghi

orca-profiles-mcp

by Zmokizmoghi

orca-profiles-mcp

MCP-сервер, который читает и редактирует профили OrcaSlicer. Он разворачивает всю цепочку inherits и показывает, какое звено задало каждое значение.

Что делает

Профиль OrcaSlicer хранит только свои отличия от родителя. Открытия файла недостаточно, чтобы узнать скорость внешней стенки: значение может прийти от родителя, от родителя родителя или из встроенных значений по умолчанию. Этот сервер проходит цепочку до корня, вычисляет эффективные значения и сохраняет их происхождение.

Он обрабатывает те части Orca, которые ломают наивные считыватели:

  • родители разрешаются по имени, между вендорами — нить Sovol наследует от OrcaFilamentLibrary;

  • отсутствующий родитель Generic … заменяется на Generic <material> @System, а переименованные профили находятся через их список renamed_from;

  • векторы, связанные с вариантами экструдера, объединяются поэлементно, включая маркер nil, означающий «сохранить здесь значение родителя»;

  • дочерний профиль может объявлять больше экструдеров, чем родительский — тулченджер поверх профиля машины с одним экструдером — и оба экструдера сохраняют свои значения;

  • ключи, не относящиеся к типу профиля, отбрасываются, потому что Orca тоже их отбрасывает; о них сообщается, а не применяются молча.

Установка

cd ~/job/orca-profiles-mcp
uv sync

Зарегистрируйте в Claude Code:

claude mcp add orca-profiles -- uv --directory ~/job/orca-profiles-mcp run orca-profiles-mcp

Инструменты

Инструмент

Назначение

get_setup

обнаруженные корни, версия Orca, вендоры, выбранные пресеты

list_profiles

поиск по типу, имени, вендору, источнику

get_profile

профиль в режиме raw / resolved / traced

get_chain

цепочка наследования до корня

explain_key

откуда взялось конкретное значение

find_children

какие профили наследуют от этого

diff_profiles

сравнить два профиля

compare_with_upstream

сравнение с репозиторием OrcaSlicer

validate

сломанные inherits, циклы, неизвестные ключи, избыточные дельты

check_deltas

проверить развёртывание по дельтам, которые записала сама Orca

сообщает об избыточных ключах и необъяснимых длинах векторов отдельно

set_values

установить значения с пересчётом дельт

create_profile

создать пользовательский профиль

rename_profile, delete_profile

переименовать и удалить

normalize_profile

удалить ключи, идентичные родительским

Значения возвращаются ровно в том виде, в каком они хранятся в файлах: "0.20" остаётся "0.20", а "100%" остаётся процентным значением. Движок нормализует оба при нарезке; этот сервер — нет, поэтому вы читаете ровно то, что указано в профиле, и записывается обратно без изменений.

Запись профилей

Ваши собственные профили можно редактировать свободно. Изменение системного или встроенного профиля требует force=true: такие файлы принадлежат библиотеке вендора, следующее обновление профилей восстановит их, и каждый потомок унаследует изменение.

Запись выполняется через временный файл и атомарное переименование, поэтому прерванная запись не может обрезать профиль; сначала рядом с файлом создаётся резервная копия (backup=false отключает её). Значения проверяются до записи чего-либо: ключ, принадлежащий другому типу профиля, вектор там, где движок ожидает скаляр, или число там, где формат требует строку, — отклоняются, а не сохраняются и молча отбрасываются Orca. Настройки, которые ваш закреплённый снимок не распознаёт, переносятся без изменений, поэтому профиль, записанный более новой Orca, не теряет их.

OrcaSlicer читает профили при запуске и переписывает их при выходе. Изменения, сделанные во время работы приложения, будут перезаписаны — сначала закройте Orca.

Как проверяется корректность

CLI Orca не может проверить наследование. --export-settings возвращает значения по умолчанию движка плюс ключи, присутствующие в переданных ему файлах, и никогда не обходит inherits; выбор пресетов через OrcaSlicer.conf не активирует их; передача всей цепочки как списка файлов отклоняется как дублирующийся конфигурационный файл. Все три варианта были опробованы на версии 2.4.2.

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

Именно это проверяет tests/test_smoke.py против установленной библиотеки, и именно так был найден дефект вектора тулченджера.

Ключи, сохранённые, несмотря на то что уже совпадают с родителем, сообщаются отдельно: это безвредные остатки с момента до изменения родителя, а не ошибки резолвера.

Обновление снимка движка

Значения по умолчанию движка, наборы ключей вариантов и списки ключей по типам сохраняются из установленной Orca в src/orca_profiles_mcp/data/engine-snapshot.json, привязанном к тегу версии. После обновления OrcaSlicer:

uv run python scripts/build_snapshot.py
uv run pytest

Тесты

uv run pytest

Четыре уровня:

  • модульные тесты на миниатюрной библиотеке фикстур, по одному на каждый краевой случай — наследование между вендорами, запасной вариант Generic, renamed_from, циклы, отсутствующие родители, векторы с шагом 1 и шагом 2, элементы nil;

  • циклы записи: чтение → запись без изменений → файл побайтно идентичен;

  • сквозные тесты, которые запускают упакованную точку входа как подпроцесс и управляют ею через MCP stdio, покрывая регистрацию инструментов, полный цикл создания/редактирования/проверки/удаления и распространение ошибок;

  • проверки против установленной библиотеки, включая описанную выше проверку дельт.

Тесты, использующие реальную библиотеку, пропускают себя, когда отсутствует каталог данных Orca; всё остальное выполняется на фикстурах.

Документы

  • Проектирование: docs/specs/2026-08-17-orca-profiles-mcp-design.md — включает то, что чтение исходников OrcaSlicer установило о формате профилей, и что исключили эксперименты с CLI

  • План реализации: docs/plans/2026-08-17-orca-profiles-mcp.md

Лицензия

AGPL-3.0, как и сам OrcaSlicer. Этот проект не содержит кода OrcaSlicer, но его логика наследования является построчным переносом Preset.cpp и PrintConfig.cpp, а снимок движка содержит значения по умолчанию и списки ключей, извлечённые из этого исходного кода.

Не аффилирован с проектом OrcaSlicer и не одобрен им.

-
license - not tested
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • A MCP server built for developers enabling Git based project management with project and personal…

  • Personal MCP server for humans who create. Proof of authorship, license control.

  • MCP server for generating rough-draft project plans from natural-language prompts.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Zmokizmoghi/orca-profiles-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server