UniRoboSim MCP
UniRoboSim MCP
unirobosim-mcp предоставляет доступ к данным UniRoboSim, состоянию симуляции, изображениям с камер бэкенда и явно включённому управлению симуляцией для MCP-совместимых клиентов. Сервер имеет два профиля развёртывания:
Профиль Evidence (по умолчанию): ограниченный доступ только для чтения к корню данных, выбранному оператором.
Профиль Control (явный): инструменты Evidence плюс инструменты Read и Control для сессий симулятора, созданных и принадлежащих этому серверу.
Сервер не подключается к сессиям, созданным другими приложениями.
Установка
Поддерживается Python >=3.11,<3.13. Установите Core, этот пакет и адаптер, требуемый выбранным бэкендом, в одном окружении.
conda create -n unirobosim-mcp python=3.12 pip -y
conda activate unirobosim-mcp
git clone https://github.com/GitHofee/UniRoboSim.git
git clone https://github.com/GitHofee/UniRoboSim-mcp.git
git clone https://github.com/GitHofee/UniRoboSim-mujoco.git # example backend
python -m pip install ./UniRoboSim ./UniRoboSim-mcp ./UniRoboSim-mujocoОбычные развёртывания используют текущую среду выполнения MCP 2.x. Среды Isaac Lab 3.0 сохраняют проверенные версии Pydantic и Uvicorn, поэтому установите дополнительный пакет совместимости там:
python -m pip install './UniRoboSim-mcp[isaaclab]'Дополнительный пакет выбирает MCP 1.10.1; он предоставляет тот же каталог инструментов UniRoboSim и был проверен через реальный протокол stdio с Isaac Sim 6.0.1.
Related MCP server: gazebo-mcp
Профиль Evidence
unirobosim-mcp --root /absolute/path/to/approved/evidenceUNIROBOSIM_EVIDENCE_ROOT может использоваться вместо --root:
export UNIROBOSIM_EVIDENCE_ROOT=/absolute/path/to/approved/evidence
unirobosim-mcpTool | Contract |
| Возвращает активный корень, жёсткие лимиты запросов и статус управления. |
| Перечисляет разрешённые данные с ограниченным POSIX-шаблоном. |
| Читает один ограниченный артефакт UTF-8 или JSON. |
| Проверяет закрытую трассу и возвращает её компактный манифест. |
| Запрашивает события публикации, очистки и сброса без полной геометрии. |
| Запрашивает принятые, отфильтрованные и отклонённые решения о публикации. |
| Восстанавливает выбранные активные отладочные примитивы в последовательности. |
Абсолютные пути, обход каталогов, выход за пределы символьных ссылок, неутверждённые расширения, слишком большие файлы, чрезмерное сканирование и чрезмерное количество результатов отклоняются.
Профиль Control
Управление должно быть явно включено. Локальные файлы ресурсов запрещены, если их родительское дерево не внесено в белый список с помощью --asset-root.
unirobosim-mcp \
--root /absolute/path/to/approved/evidence \
--enable-control \
--asset-root /absolute/path/to/approved/assets \
--max-sessions 2 \
--lease-timeout-seconds 300API чтения
Инструменты чтения требуют идентификатор сессии, но не лицензию на запись.
Tool | Contract |
| Обнаруживает и проверяет установленные точки входа бэкенда. |
| Перечисляет сессии, принадлежащие этому серверу; значения лицензий никогда не возвращаются. |
| Возвращает переносимый граф сцены для обнаружения объектов и камер. |
| Читает типизированное состояние для твёрдого тела, сочленения, деформируемого объекта, частичной жидкости или камеры. |
| Возвращает изображение MCP, содержащее данные PNG, закодированные из буфера RGB-камеры бэкенда. |
simulation_get_entity сообщает канонический путь, тип объекта, исходную конфигурацию MCP, тик симуляции, формы и типы данных массивов, а также данные, специфичные для типа. include_values=true включает ограниченные значения; include_contact=true добавляет состояние контакта твёрдого тела.
simulation_capture_camera — это не снимок экрана рабочего стола или браузера. Он вызывает выбранный бэкенд через Camera.read("rgb"), проверяет канонический буфер uint8 [environment,height,width,3] и кодирует этот буфер в PNG. save_to_evidence=true также записывает изображение в <root>/screenshots/ и возвращает его SHA-256 дайджест и размеры.
API управления
Все изменения требуют непрозрачный lease_id, возвращаемый simulation_create, и уникальный command_id.
Tool | Contract |
| Возвращает политику владения, разрешённые корни и жёсткие лимиты ресурсов. |
| Создаёт принадлежащую сессию EasyAPI для явного бэкенда. |
| Добавляет коробку, жёсткий ресурс, сочленение, камеру, деформируемый объект или частичную жидкость до запуска. |
| Компилирует сцену и возвращает отпечаток сборки бэкенда. |
| Продлевает лицензию на запись без изменения её значения. |
| Продвигает симуляцию на ограниченное количество шагов. |
| Сбрасывает все или выбранные среды. |
| Применяет команды сочленения, жёсткого момента, деформируемого объекта, жидкости, сцены или очистки отладки. |
| Закрывает принадлежащую сессию и освобождает ресурсы бэкенда. |
Повторное использование command_id с идентичными входными данными возвращает кэшированный результат с idempotent_replay=true. Повторное использование этого идентификатора с другими входными данными отклоняется. Просроченные сессии закрываются автоматически. Каждое применённое или отклонённое изменение записывается в mcp-control-audit.jsonl; значения лицензий исключаются из записи аудита.
Правило работы агента
Агент, использующий профиль Control, должен следовать этой последовательности:
Вызовите
simulation_list_backendsи явно выберите доступный бэкенд.Вызовите
simulation_create; сохраняйте возвращённую лицензию только для операций записи.Добавьте все объекты с уникальными идентификаторами команд, затем вызовите
simulation_start.Используйте
simulation_scene_snapshotдля обнаружения канонических путей объектов и камер.Используйте
simulation_get_entityдля целевого состояния иsimulation_capture_cameraдля визуальной проверки.Повторно используйте идентификатор команды только для повторной попытки идентичного запроса на запись.
Вызовите
simulation_closeдля каждой созданной сессии, включая неудачные рабочие процессы.
Агент не должен делать вывод о поддержке бэкенда на основе доступности инструментов. Неподдерживаемые возможности симулятора сообщаются через согласование возможностей или выбранным адаптером.
Loopback HTTP
unirobosim-mcp \
--root /absolute/path/to/approved/evidence \
--transport streamable-http \
--host 127.0.0.1 \
--port 8766Неаутентифицированный HTTP ограничен адресами 127.0.0.1, localhost или ::1. Удалённое развёртывание требует аутентифицированного и авторизованного шлюза. Режим управления не должен быть напрямую доступен в ненадёжной сети.
Программное встраивание
from pathlib import Path
from unirobosim_mcp import ControlLimits, EvidenceLimits, SimulationControl, create_server
root = Path("/approved/evidence")
control = SimulationControl(
root,
asset_roots=(Path("/approved/assets"),),
limits=ControlLimits(max_sessions=1, lease_timeout_seconds=120),
)
server = create_server(
root,
limits=EvidenceLimits(max_results=50, max_query_items=100),
control=control,
)
server.run(transport="stdio")Проверка
python -m pip install -e '.[dev]'
ruff format --check src tests
ruff check src tests
mypy src
coverage run -m pytest
coverage reportПриёмка релиза вызывает каждый опубликованный инструмент MCP через реальный внутрипроцессный MCP-клиент. Дополнительные контрактные тесты охватывают все поддерживаемые типы объектов и семейства команд, лицензии, идемпотентность, истечение срока действия, разрешённые ресурсы, лимиты ресурсов, записи аудита, кодирование PNG и сохранённые доказательства снимков экрана. Нативная приёмка выполняется отдельно для каждого установленного адаптера симулятора; функция не считается пройденной для бэкенда, если этот нативный запуск не завершился успешно.
Основные контракты и установка адаптера описаны в UniRoboSim Core.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP server for the OPERANT AI operating-agent calibration benchmark.
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for controlling Universal Robots arms and Robotiq grippers via RTDE protocol, enabling motion, force, I/O, and gripper operations.1MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for AI agents to drive Gazebo / gz-sim simulation, with offline mock mode for CI/demos.4MIT
- FlicenseAqualityAmaintenanceMCP server that exposes a deterministic force-on-force simulation of FPV sUAS vs counter-UAS RF direction finding as tools for AI agents to run engagements, sweep seeds, and compare configurations.5-
- FlicenseNot gradedqualityBmaintenanceMCP server for controlling a simulated robot arm with vision-based pick-and-place, driven by LLM or manual control.1-