MCP & Render Devices
Two MCP servers ride along with every Session — one for the skills hub, one for GPU render devices. Both are wired in automatically when the Session has a cloud key; nothing extra to install on the client.
Skills Hub MCP
| Server | Transport | Role |
|---|---|---|
xiaohe-hub | HTTP → https://skills-hub.xiaohe.team/mcp | Skill catalog: discover, fetch content |
xiaohe-exec | stdio (local) | Run skill scripts on this machine |
xiaohe-hub answers xiaohe_get_skill, xiaohe_list_skills, and the media
tools (xiaohe_tts, xiaohe_stt, xiaohe_generate_image). xiaohe-exec
runs xiaohe_skill_exec(skill, script, argv) locally, so skill scripts can
touch your files and tools — the hub never executes code on your machine.
Render device MCP
The xiaohe-render server turns a GPU workstation into a schedulable device:
upload a .blend, queue a render, poll status, download the result — all
through MCP, no scp or remote desktop.
| Tool | Purpose |
|---|---|
render_list_devices | GPU label, online state, queued jobs |
render_upload | Inline scene upload (≤ 8 MiB; larger scenes go to POST /render/uploads) |
render_submit | Queue a job: engine, samples, resolution, frame, format |
render_status | State, timestamps, error, artifacts |
render_list_jobs | Recent jobs, optionally filtered by state |
render_cancel | Cancel a queued or running job |
render_artifacts | Artifact list with short-lived signed download links |
Typical flow from a Session:
render_list_devices → pick a device
render_upload → get upload_id
render_submit → get job_id
render_status → poll until succeeded
render_artifacts → download the PNG/EXR
Render params are allowlisted (engine ∈ CYCLES/EEVEE, samples ≤ 4096,
resolution within 16–8192, format ∈ PNG/JPEG/OPEN_EXR); anything else is
rejected. The worker renders with --factory-startup --disable-autoexec, so
.blend startup scripts never run.
Who may use it
Everything on the render surface is deny-by-default. Grants come from
accounts entitlements plus the local policy file
(/etc/xiaohe/mcp-policy.json on the hub); deny always wins. A key without
grants sees an empty tool list — the server stays silent rather than failing
loudly. Device-scoped grants (device.render.<id>) control which machines a
key may submit to.
Deploying a device
A machine joins by running the outbound worker — no inbound firewall changes. Install on the device (Windows, no admin needed):
# from apps/render-worker/ in the xiaohe-agent repo
powershell -ExecutionPolicy Bypass -File install.ps1 `
-WorkerToken "xh_wrk_..." -DeviceId "my-gpu-box"
The worker polls the hub, renders one job at a time with the local Blender,
and uploads artifacts. To revoke a device, remove its token from
XIAOHE_RENDER_DEVICE_TOKENS on the hub and restart the hub.