Skip to main content

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​

ServerTransportRole
xiaohe-hubHTTP → https://skills-hub.xiaohe.team/mcpSkill catalog: discover, fetch content
xiaohe-execstdio (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.

ToolPurpose
render_list_devicesGPU label, online state, queued jobs
render_uploadInline scene upload (≤ 8 MiB; larger scenes go to POST /render/uploads)
render_submitQueue a job: engine, samples, resolution, frame, format
render_statusState, timestamps, error, artifacts
render_list_jobsRecent jobs, optionally filtered by state
render_cancelCancel a queued or running job
render_artifactsArtifact 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.