Janction Render

io.github.JasmyLab-JANCTIONv0.2.1更新於 Oct 1, 2026

Render Blender scenes (.blend or bpy script) on JANCTION GPUs from AI agents: previews, frames, MP4.

已驗證Streamable HTTP可網頁執行Cloud & InfrastructureMedia & Design

概覽

AI 產生的概覽

在 JANCTION 雲端 GPU 上算繪 Blender 場景,回傳預覽影格、時間估算以及最終的 PNG 或 MP4 結果。

功能
讓助理提交 .blend 檔案、bpy 場景指令碼或場景連結,並在遠端 GPU 上算繪。工具包括:scene_info 在不算繪的情況下檢視攝影機、影格範圍與缺少的檔案;render_preview 回傳最多四張低成本的拼接預覽圖;render_estimate 提供 GPU 秒數、排隊等待與配額是否足夠;render_final 輸出 PNG 或 MP4;render_status、render_download 與 render_cancel 用於任務控制;另有 billing 與 render_info 檢視配額和可用工作節點。命令列工具提供相同操作。
適用情境
適合沒有本機 GPU、本機算繪太慢,或希望助理透過預覽、調整、再算繪來反覆調整場景的情況。也適合用 bpy 指令碼建立場景、需要在最終算繪前快速取得視覺回饋的代理工作流程。
執行需求
遠端方式:連線 Streamable HTTP 端點,使用 OAuth 2.1 或 Bearer API 金鑰,無需安裝。本機 stdio 方式:需要 Python 與 uvx 或 pip,以及 JANCTION_RENDER_SERVER 服務網址(預設 API 金鑰並快取在本機;可用 JANCTION_RENDER_API_KEY 固定金鑰。需要網路連線。
安裝前請注意
stdio 伺服器會把本機場景檔案傳送到遠端服務,請勿提交機密素材。API 金鑰關聯配額以及日後的額度,JANCTION_RENDER_API_KEY 應視為機密。免費測試期每個金鑰每天 10 GPU 分鐘,之後計畫按 GPU 秒計費,可能產生費用。輸入與結果在最後一次使用後 24 小時刪除。場景指令碼在無網路的隔離容器中執行。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Janction Render,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "janction-render": {
      "type": "http",
      "url": "https://render.janction.jp/mcp"
    }
  }
}

README

JANCTION Render

[JasmyLab-JANCTION/janction-render MCP server]

A cloud GPU render farm for Blender, built for AI agents. Render Blender scenes on JANCTION GPUs from Claude, ChatGPT, Claude Code, Codex, Cursor or any MCP client: an MCP server (remote and stdio) plus a CLI. Use it to render Blender without a GPU, or when rendering locally is slow.

  • Input: a .blend file, or a bpy Python script that builds the scene (no local Blender needed).
  • scene_info reads the scene without rendering (cameras, frame range, missing files).
  • render_preview returns 1-4 low-cost frames tiled in one image within seconds, so the agent can look, fix, and repeat.
  • render_estimate says how long a render will take ("about 3 minutes") and whether it fits today's free quota.
  • render_final renders the frames on GPUs and joins them into an MP4; render_status reports the remaining time.
  • Free beta: no charges. Each key gets 10 GPU-minutes per day; a final render is up to 240 frames at 1080p. Paid plans (per GPU second, prepaid credit) will be announced on the service page before they start.
  • Inputs and results are deleted 24 hours after last use and are never used for training.

Status

Free beta. Service page: https://render.janction.jp (/v1/health, /llms.txt). Blender 5.0, Cycles on GPU.

Connect (remote MCP, nothing to install)

MCP server URL: https://render.janction.jp/mcp (Streamable HTTP). Auth is OAuth 2.1 with dynamic client registration: pressing "Connect" opens a page that creates a free API key (or takes one you already have). A raw API key also works as Authorization: Bearer jr_....

clienthow
Claude.ai (web, desktop, mobile)Settings → Connectors → Add custom connector → paste the URL → Connect
ChatGPTSettings → Connectors → Advanced → Developer mode → Create → paste the URL (OAuth)
Claude Codeclaude mcp add --transport http janction-render https://render.janction.jp/mcp, then /mcp to authenticate
Cursor, Windsurf, other MCP clientsStreamable HTTP at the URL above (OAuth, or a Bearer API key header)

Remote tools take scene_script (bpy code as text), scene_url (an https link to a .blend or .py) or scene_id; results come back as an inline image plus download links that need no key and work for about 24 hours.

Claude Code plugin (the remote connector plus a skill with the workflow):

/plugin marketplace add JasmyLab-JANCTION/janction-render/plugin install janction-render@janction-render

Install (stdio MCP, sends local files)

The package is on PyPI as janction-render.

# Claude Code (uvx runs it without a global install)claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- uvx --from janction-render janction-render-mcp
# or with pip / pipxpip install janction-renderclaude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- janction-render-mcp

Codex: add to ~/.codex/config.toml

toml
[mcp_servers.janction-render]command = "uvx"args = ["--from", "janction-render", "janction-render-mcp"]env = { JANCTION_RENDER_SERVER = "https://render.janction.jp" }

A temporary API key is issued automatically on first use and cached in ~/.janction-render.json; set JANCTION_RENDER_API_KEY to pin one (quota and, later, credit belong to the key). The same key can be used from the remote connector: paste it on the connect page.

Then, in Claude Code:

Build a small street scene in Blender with a camera fly-through and render a preview with janction-render.

Tools

toolwhat
`scene_info(scene_scriptscene_url
render_preview(..., frames="1-24")up to 4 frames (720p budget) tiled with frame labels; returns the image inline
render_estimate(scene_id, frame_start, frame_end, width, height, samples)GPU seconds, queue wait, "about N minutes", fits today's free quota? No GPU time used
render_final(scene_id, frame_start, frame_end, width, height, samples, fps, output)PNG or MP4; returns job_id + estimate
render_status(job_id)progress and ETA (eta.human); render_download(job_id) files or links; render_cancel(job_id)
billing()free-beta quota (used today, daily limit, reset time); later balance and top-up link
render_info()workers online, queue and expected wait

CLI: janction-render inspect|preview|render|status|download|cancel|jobs|balance|topup|info.

Writing a scene script

python
import bpy, mathfor ob in list(bpy.data.objects):    bpy.data.objects.remove(ob, do_unlink=True)scene = bpy.context.scenescene.frame_start, scene.frame_end = 1, 24bpy.ops.mesh.primitive_monkey_add(location=(0, 0, 1))cam = bpy.data.objects.new("Camera", bpy.data.cameras.new("Camera"))scene.collection.objects.link(cam); scene.camera = camcam.location = (6, -6, 4); cam.rotation_euler = (math.radians(60), 0, math.radians(45))sun = bpy.data.objects.new("Sun", bpy.data.lights.new("Sun", "SUN"))scene.collection.objects.link(sun)

The service sets engine (Cycles), resolution, samples and denoising; your script sets the scene, camera and frame range. Scripts run in an isolated container with no network. See samples/cube_scene.py.

HTTP API

POST /v1/keys                                   -> {api_key}         (header X-API-Key afterwards)POST /v1/files  multipart "file" (.blend|.py)   -> {scene_id}POST /v1/estimate {kind, frames|frame_start/frame_end, width, height, samples, scene_id?} -> seconds, wall_seconds, human, quotaPOST /v1/jobs   {scene_id, kind: info|preview|final, frames|frame_start/frame_end, width, height, samples, camera, fps, output}GET  /v1/jobs/{id}      status, progress, eta, artifacts[], cost, warnings, info    DELETE /v1/jobs/{id}  cancelGET  /v1/jobs/{id}/artifacts/{name}             PNG / MP4POST /mcp                                       remote MCP (Streamable HTTP; Bearer api key or OAuth)GET  /.well-known/oauth-protected-resource/mcp  OAuth discoveryPOST /v1/billing/checkout {amount_yen} -> {checkout_url}   POST /v1/billing/sync   GET /v1/ledger   GET /v1/meGET  /llms.txt  /terms  /privacy  /legal  /security

During the free beta a 429 quota_exceeded response carries resets_at; a 400 beta_limit means the job is too big (split it). Once paid plans start, a 402 payment_required response carries checkout_url.

Self-hosting

The server (FastAPI + SQLite, with the remote MCP endpoint) and the worker (Blender in disposable Docker containers, --network none --cap-drop ALL) live in the internal repository and are not part of this package yet. This repository holds the client side: stdio MCP server, CLI, HTTP client, samples and the Claude Code plugin.

MCP registry

This server is listed in the official MCP registry as io.github.JasmyLab-JANCTION/janction-render (remote: https://render.janction.jp/mcp).

mcp-name: io.github.JasmyLab-JANCTION/janction-render

License

MIT (see LICENSE). Operated by JasmyLab Inc.

來源:README.md,提交 5b9c716

工具

0
工具後設資料尚未被收錄。

版本歷史

1
  1. v0.2.1最新Oct 1, 2026