UniRoboSim MCP

UniRoboSim MCP

MCP server exposing UniRoboSim evidence, simulation state, camera images, and optional explicit control of owned simulation sessions.

Category
访问服务器

README

UniRoboSim MCP

English | 简体中文

unirobosim-mcp exposes UniRoboSim evidence, simulation state, backend camera images, and explicitly enabled simulation control to MCP-compatible clients. The server has two deployment profiles:

  • Evidence profile (default): bounded, read-only access to an operator-selected evidence root.
  • Control profile (explicit): Evidence tools plus Read and Control tools for simulator sessions created and owned by this server.

The server does not attach to sessions created by other applications.

Installation

Python >=3.11,<3.13 is supported. Install Core, this package, and the adapter required by the selected backend in the same environment.

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

General deployments use the current MCP 2.x runtime. Isaac Lab 3.0 environments retain their verified Pydantic and Uvicorn pins, so install the compatibility extra there:

python -m pip install './UniRoboSim-mcp[isaaclab]'

The extra selects MCP 1.10.1; it exposes the same UniRoboSim tool catalog and was verified through the real stdio protocol with Isaac Sim 6.0.1.

Evidence profile

unirobosim-mcp --root /absolute/path/to/approved/evidence

UNIROBOSIM_EVIDENCE_ROOT may be used instead of --root:

export UNIROBOSIM_EVIDENCE_ROOT=/absolute/path/to/approved/evidence
unirobosim-mcp
Tool Contract
evidence_server_info Return the active root, hard query limits, and control status.
list_debug_evidence List allowlisted evidence with a bounded POSIX glob.
read_debug_evidence Read one bounded UTF-8 or JSON artifact.
summarize_debug_trace Validate a closed trace and return its compact manifest.
query_debug_events Query publish, clear, and reset events without full geometry.
query_debug_reports Query accepted, filtered, and dropped publish decisions.
query_debug_primitives Reconstruct selected active debug primitives at a sequence.

Absolute paths, traversal, escaping symlinks, unapproved extensions, oversized files, excessive scans, and excessive result counts are rejected.

Control profile

Control must be enabled explicitly. Local asset files are denied unless their parent tree is allowlisted with --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 300

Read API

Read tools require a session ID but not the write lease.

Tool Contract
simulation_list_backends Discover and probe installed backend entry points.
simulation_list_sessions List sessions owned by this server; lease values are never returned.
simulation_scene_snapshot Return the portable scene graph for entity and camera discovery.
simulation_get_entity Read typed state for a rigid body, articulation, deformable, particle fluid, or camera.
simulation_capture_camera Return an MCP image containing PNG data encoded from the backend RGB camera buffer.

simulation_get_entity reports the canonical path, entity kind, original MCP configuration, simulation tick, array shapes and dtypes, and type-specific data. include_values=true includes bounded values; include_contact=true adds rigid-body contact state.

simulation_capture_camera is not a desktop or browser screenshot. It calls the selected backend through Camera.read("rgb"), validates the canonical [environment,height,width,3] uint8 buffer, and encodes that buffer as PNG. save_to_evidence=true also writes the image under <root>/screenshots/ and returns its SHA-256 digest and dimensions.

Control API

All mutations require the opaque lease_id returned by simulation_create and a unique command_id.

Tool Contract
simulation_control_info Return ownership policy, allowlisted roots, and hard resource limits.
simulation_create Create an owned EasyAPI session for an explicit backend.
simulation_configure_entity Add a box, rigid asset, articulation, camera, deformable, or particle fluid before start.
simulation_start Compile the scene and return its backend build fingerprint.
simulation_renew_lease Extend the write lease without changing its value.
simulation_step Advance the simulation by a bounded number of steps.
simulation_reset Reset all or selected environments.
simulation_command Apply articulation, rigid-wrench, deformable, fluid, scene, or debug-clear commands.
simulation_close Close the owned session and release backend resources.

Repeated use of a command_id with identical input returns the cached result with idempotent_replay=true. Reusing that identifier with different input is rejected. Expired sessions are closed automatically. Every applied or rejected mutation is written to mcp-control-audit.jsonl; lease values are excluded from the audit record.

Agent operating rule

An agent using the Control profile must follow this sequence:

  1. Call simulation_list_backends and select an available backend explicitly.
  2. Call simulation_create; retain the returned lease only for write operations.
  3. Add all entities with unique command identifiers, then call simulation_start.
  4. Use simulation_scene_snapshot to discover canonical entity and camera paths.
  5. Use simulation_get_entity for targeted state and simulation_capture_camera for visual verification.
  6. Reuse a command identifier only to retry the identical write request.
  7. Call simulation_close for every created session, including failed workflows.

The agent must not infer backend support from tool availability. Unsupported simulator capabilities are reported by capability negotiation or by the selected adapter.

Loopback HTTP

unirobosim-mcp \
  --root /absolute/path/to/approved/evidence \
  --transport streamable-http \
  --host 127.0.0.1 \
  --port 8766

Unauthenticated HTTP is restricted to 127.0.0.1, localhost, or ::1. Remote deployment requires an authenticated and authorized gateway. Control mode must not be exposed directly on an untrusted network.

Programmatic embedding

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")

Verification

python -m pip install -e '.[dev]'
ruff format --check src tests
ruff check src tests
mypy src
coverage run -m pytest
coverage report

Release acceptance calls every published MCP tool through a real in-process MCP client. Additional contract tests cover all supported entity types and command families, leases, idempotency, expiration, allowlisted assets, resource limits, audit records, PNG encoding, and saved screenshot evidence. Native acceptance is executed separately for each installed simulator adapter; a feature is not reported as passed for a backend unless that native run succeeds.

Core contracts and adapter installation are documented in UniRoboSim Core.

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选