mcpField
J
JANCTION Render

JANCTION Render

远程服务
render.janction.jp媒体与设计1今天更新

关于 JANCTION Render

JANCTION Render 是面向 AI Agent 和 3D 工作流的云端 GPU 渲染服务,可接收 Blender 项目、脚本及常见 3D 文件。它提供带场景诊断的预览,并返回渲染帧或 MP4,无需本地安装 Blender 或配备 GPU。

主要功能

  1. 01在云端 GPU 上渲染 Blender 场景
  2. 02接收脚本和多种 3D 文件
  3. 03提供带诊断反馈的预览
  4. 04生成转台视频和产品图
  5. 05输出帧或 MP4
  6. 06估算并查看渲染任务

适用场景

  1. 01预览 Agent 生成的 Blender 场景
  2. 02从 3D 模型制作转台视频
  3. 03从 GLB 文件生成产品图
  4. 04将 Blender 项目渲染为 MP4 动画

MCP 相关

JANCTION Render 通过 `https://render.janction.jp/mcp` 远程 MCP 服务和本地 stdio MCP 服务提供渲染工具。远程端点支持 Bearer 令牌认证。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://render.janction.jp/mcp?src=registry
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
pypijanction-render0.4.204

工具

详细介绍

JANCTION Render

JasmyLab-JANCTION/janction-render MCP server

什么是 JANCTION Render?

JANCTION Render 是一个面向 Blender 的云端 GPU 渲染农场,AI Agent 可通过 MCP 服务或 HTTP API 调用。发送 .blend 文件、bpy 脚本或 3D 文件(glTF / FBX / USD),即可在几秒内预览,并从 JANCTION 的 NVIDIA GPU 获取帧或 MP4。每次预览还会给出问题判断,例如画面太暗、曝光过度、没有光照或物体超出画面,并提供修复问题的 bpy 代码,让 Agent 在最终渲染前修正场景。无需本地安装 Blender 或 GPU。新密钥可获赠 100 JPY 欢迎额度(每 30 天每个网络限一次;同一网络上的后续密钥共享剩余额度);保存不会扣费的银行卡后还可再获赠 400 JPY(每张卡限一次);之后每 GPU 秒收费 0.1 JPY(每天最多 2 GPU 分钟的预览免费); 由 JasmyLab Inc. 运营。

AI Agent 无需在本地运行 Blender,即可在 JANCTION GPU 上渲染 Blender 项目。可通过 Claude、ChatGPT、 Claude Code、Codex、Cursor 或任何 MCP 客户端使用:支持 MCP 服务(远程和 stdio)、HTTP API 和 CLI。

JANCTION Render 是一款独立于 SmartRender(JasmyLab 面向桌面用户的分布式渲染服务)的产品,与 Render.com 或 Render Network 无关。数据截至 2026-10-08(主要来源为 https://render.janction.jp/facts.json):新密钥可获赠 100 JPY 欢迎额度(1,000 GPU 秒,有效期 14 天,无需银行卡),每 30 天每个网络限一次(同一网络上的后续密钥共享剩余额度);在不收费的页面上保存银行卡后还可再获赠 400 JPY(每张卡限一次);此后,每天最多 2 GPU 分钟的预览免费,最终渲染使用预付额度,费用为每 GPU 秒 0.1 JPY(付费使用于 2026-10-08 开始);每条指令最多渲染 3,000 帧(在一个作业 ID 下自动拆分);免费时段支持 1080p,使用预付额度时最高支持 4K;输入和结果会在最后一次使用 24 小时后删除(通常情况下,总付费金额达到 500 JPY 或以上的密钥可保留 7 天)。

官方网站:https://render.janction.jp · MCP 端点:https://render.janction.jp/mcp · 事实说明:https://render.janction.jp/facts

只需几秒即可在终端中免费试用,无需注册(需要安装 uv;或运行 pip install janction-render,并移除 uvx):

uvx janction-render try                      # renders a sample scene and shows the free GPU time of your new key
uvx janction-render preview scene.blend      # your .blend, bpy script or 3D file
uvx janction-render render scene.blend --frames 1-48 --output mp4 --wait
uvx janction-render turntable model.glb      # a 360-degree turntable MP4 in one command (a path or an https link)
uvx janction-render shots model.glb --transparent   # four product shots (PNG)
一条命令能生成什么(真实输出)

这些内容于 2026-10-10 在生产环境 GPU(NVIDIA RTX PRO 6000 Blackwell)上,使用 Khronos 的 WaterBottle 示例渲染而成(公有领域,CC0); 复制任意一行即可直接运行。价格按每 GPU 秒 0.1 日元计算,新密钥的欢迎额度足以抵扣。

命令GPU 时间价格
瓶子的四张产品照片uvx janction-render shots https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb13.9 s约 1.4 日元
瓶子的 360 度转台动画uvx janction-render turntable https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb85.2 s约 8.5 日元
旋转的徽标圆环uvx janction-render render https://render.janction.jp/samples/ex12_logo_ring_spin.py --frames 1-48 --size 1280x720 --engine eevee --output mp4 --wait54.1 s约 5.4 日元

产品照片为 4 张 1920x1080 PNG;转台动画和动画为 MP4(此处以 GIF 展示)。你自己的 .glb、.blend 或 bpy 脚本都可以替换链接。更多示例及其脚本:https://render.janction.jp/examples

在代码仓库中保存 3D 文件?添加一个按钮,让任何人都能从自己的 AI 或终端渲染这些文件 (GitHub 和 Hugging Face 上的文件页面链接可直接使用;在 https://render.janction.jp/go 创建一个):

[![Render on JANCTION](https://render.janction.jp/badge.svg)](https://render.janction.jp/go?scene=https://github.com/you/repo/blob/main/model.glb)

官方网站指南

为什么使用它?

  • 无需 GPU,也无需安装 Blender。 场景可以是 Agent 编写的 bpy 脚本、.blend 文件或 3D 文件;Blender 会在我们的 GPU 上运行。
  • 专为 Agent 打造。 先预览(使用 GPU 几秒即可渲染 1-4 帧),最终渲染前提供时间和费用估算,提供包含修复方法的结构化错误信息,每个密钥均可设置支出上限,并可使用 Idempotency-Key 安全重试。
  • 3D 文件和转台动画。 glTF / GLB、FBX、USD、OBJ、STL、PLY、Alembic 会导入到带有摄像机和 HDRI 光照的空场景中;orbit=True 会生成转台动画。固定价格的成品:POST /v1/outcomes/turntable 和 /product-shot。
  • 明确的限制。 新密钥可获 100 JPY 欢迎额度,无需绑定卡(有效期 14 天;每个网络每 30 天限领一次);绑定卡后再获 400 JPY 额度,不会扣款;之后按 GPU 秒计费,每秒 0.1 JPY(每天最多 2 GPU 分钟的预览免费);每条指令最多渲染 3,000 帧,自动拆分任务(免费时段支持 1080p,预付额度支持最高 4K),使用 JANCTION 自有 GPU (NVIDIA RTX PRO 6000 Blackwell);GPU 繁忙时,任务会进入队列等待,并显示预计等待时间。输入和结果会在最后一次使用 24 小时后删除(累计支付满 500 JPY 的密钥通常保留 7 天),且绝不会用于训练。
  • 不是 Render.com。 名字相同,产品不同。

快速开始

Claude.ai / ChatGPT(无需安装)。 设置 → 连接器 → 添加 https://render.janction.jp/mcp → 连接(同意页面会创建免费密钥)。然后粘贴:

渲染 https://render.janction.jp/samples/cube_scene.py 的预览

几秒后即可获得 4 帧预览。电脑上的文件:将其上传到 https://render.janction.jp/upload,获取一个有效期为 12 小时的链接,然后说“渲染此文件:”。

Claude Code。

claude mcp add --transport http janction-render https://render.janction.jp/mcp

然后运行 /mcp 进行身份验证,并提出请求:“在 Blender 中构建一个小型街景,包含摄像机飞行穿越效果,并使用 janction-render 渲染预览。”

HTTP(任意语言)。

curl -s -X POST https://render.janction.jp/v1/keys                                   # -> {"api_key": "jr_..."}  no sign-up
curl -s -X POST https://render.janction.jp/v1/files -H "X-API-Key: $KEY" -F "[email protected]"   # -> {"scene_id": "f_..."}
curl -s -X POST https://render.janction.jp/v1/jobs -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"scene_id":"f_...","kind":"preview","frames":[1]}'                             # -> job_id; then GET /v1/jobs/{job_id}

在你自己的 Agent 或应用中使用

Python(pip install janction-render;首次调用会创建免费密钥,并将其保存在 ~/.janction-render.json 中):

from janction_render.client import Client

c = Client()                                   # or Client(api_key="jr_...")
scene = c.upload("scene.py")                   # a bpy script, a .blend, or a .glb / .fbx / .usd / .obj file
job = c.submit(scene["scene_id"], kind="final", frame_start=1, frame_end=48, output="mp4")
job = c.wait(job["job_id"], timeout=1800)
print(job["status"], c.download(job["job_id"], "out", only="mp4"))

按使用量付费,使用预付额度;无需订阅(价格:https://render.janction.jp/pricing)。 不必轮询,可向 POST /v1/jobs 传入 notify_url(https)并在任务完成时接收一次 JSON POST(job.done / job.failed,包含下载链接);添加 Idempotency-Key 标头即可安全重试。OpenAPI:https://render.janction.jp/openapi.json 完整应用示例(用户上传 GLB,应用下单购买固定价格的产品图,并通过 webhook 保存图片): https://render.janction.jp/blender-render-api#embed

Agent 框架通过密钥作为 bearer token 连接远程 MCP 服务 https://render.janction.jp/mcp (运行 curl -s -X POST https://render.janction.jp/v1/keys 即可获取密钥,无需注册)。

OpenAI Agents SDK(保留较长的超时时间:render_preview 会等待图像生成,耗时超过默认的 5 秒):

import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async def main():
    async with MCPServerStreamableHttp(name="janction-render", client_session_timeout_seconds=120,
                                       params={"url": "https://render.janction.jp/mcp",
                                               "headers": {"Authorization": "Bearer jr_..."}}) as render:
        agent = Agent(name="3D artist", instructions="Render Blender scenes with janction-render.", mcp_servers=[render])
        result = await Runner.run(agent, "Render a preview of https://render.janction.jp/samples/cube_scene.py")
        print(result.final_output)

asyncio.run(main())

LangChain(pip install langchain-mcp-adapters):

import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient

async def main():
    client = MultiServerMCPClient({"janction-render": {"url": "https://render.janction.jp/mcp", "transport": "streamable_http",
                                                       "headers": {"Authorization": "Bearer jr_..."}}})
    tools = await client.get_tools()           # render_preview, render_final, render_status, render_download, ...
    print([t.name for t in tools])

asyncio.run(main())

OpenAI Responses API(远程 MCP;render_final 会持续请求批准,因为它会消耗额度):

from openai import OpenAI

client = OpenAI()
resp = client.responses.create(
    model="gpt-5",
    tools=[{"type": "mcp", "server_label": "janction_render", "server_url": "https://render.janction.jp/mcp",
            "authorization": "jr_...",
            "require_approval": {"never": {"tool_names": ["scene_info", "render_preview", "render_estimate",
                                                         "render_status", "render_download"]}}}],
    input="Render a preview of https://render.janction.jp/samples/cube_scene.py and give me the image link.",
)
print(resp.output_text)

Anthropic Messages API(MCP 连接器;fallbacks="default" 会在请求被拒绝时改用备用模型重新运行):

import anthropic

client = anthropic.Anthropic()
response = client.beta.messages.create(
    model="claude-opus-5-5",
    max_tokens=16000,
    betas=["mcp-client-2025-11-20", "server-side-fallback-2026-07-01"],
    fallbacks="default",
    mcp_servers=[{"type": "url", "url": "https://render.janction.jp/mcp", "name": "janction-render",
                  "authorization_token": "jr_..."}],
    tools=[{"type": "mcp_toolset", "mcp_server_name": "janction-render"}],
    messages=[{"role": "user", "content": "Render a preview of https://render.janction.jp/samples/cube_scene.py"}],
)
for block in response.content:
    if block.type == "text":
        print(block.text)

Google ADK:

import os
from google.adk.agents import Agent
from google.adk.tools.mcp_tool import MCPToolset, StreamableHTTPConnectionParams

agent = Agent(
    name="renderer",
    model="gemini-2.5-flash",
    instruction="Render Blender scenes with JANCTION Render: preview first, ask before a final render.",
    tools=[MCPToolset(connection_params=StreamableHTTPConnectionParams(
        url="https://render.janction.jp/mcp",
        headers={"Authorization": "Bearer " + os.environ["JANCTION_RENDER_API_KEY"]}))],
)

Pydantic AI:

from pydantic_ai import Agent
from pydantic_ai.mcp import MCPToolset

render = MCPToolset("https://render.janction.jp/mcp", headers={"Authorization": "Bearer jr_..."})
agent = Agent("anthropic:claude-opus-5-5", toolsets=[render])

用一条命令连接这台电脑上的 AI 应用,并告知项目中的每个编码 Agent 何时以及如何进行渲染:

uvx janction-render connect             # lists Claude Code, Codex, Gemini CLI, Cursor, Windsurf, VS Code and the step for each
uvx janction-render connect claude-code # applies one (or: connect all --yes)
uvx janction-render init                # writes a short section to AGENTS.md and adds the server to .mcp.json

init 只会在 CLAUDE.md、GEMINI.md、.cursor/ 和 .vscode/ 已存在时修改它们(或通过 --claude、--cursor、 --vscode 启用);会保留这些文件中的其他所有内容,并备份其修改的 JSON 文件。

本地 MCP 服务(stdio)也提供提示词,这些提示词会显示为斜杠命令,例如 Claude Code 中的 /mcp__janction-render__turntable_video:try_janction_render、render_my_scene、turntable_video、product_shots、scene_from_description、blend_to_mp4。

MCP

远程(Streamable HTTP,OAuth 2.1,支持动态客户端注册;原始密钥也可用作 Authorization: Bearer jr_...)
客户端操作方法
Claude.ai(网页、桌面、移动端)Settings → Connectors → Add custom connector → 粘贴 URL → Connect
ChatGPTSettings → Connectors → Advanced → Developer mode → Create → 粘贴 URL(OAuth)
Claude Codeclaude mcp add --transport http janction-render https://render.janction.jp/mcp,然后运行 /mcp 进行身份验证
Codexcodex mcp add janction-render --url https://render.janction.jp/mcp
Gemini CLI / Antigravity CLIgemini extensions install https://github.com/JasmyLab-JANCTION/janction-render(此仓库包含 gemini-extension.json)
Kimi Code(Kimi K3 和其他模型)/plugins install https://github.com/JasmyLab-JANCTION/janction-render(此仓库包含 kimi.plugin.json:MCP 服务和工作流技能),或在 ~/.kimi-code/mcp.json 中添加:{"mcpServers": {"janction-render": {"url": "https://render.janction.jp/mcp"}}},然后运行 /mcp-config login janction-render(OAuth)
OpenCode在 ~/.config/opencode/opencode.json 中添加:{"mcp": {"janction-render": {"type": "remote", "url": "https://render.janction.jp/mcp"}}},然后运行 opencode mcp auth janction-render(OAuth)
Qwen Codeqwen extensions install https://github.com/JasmyLab-JANCTION/janction-render(此仓库包含 qwen-extension.json:MCP 服务和工作流技能),或运行 qwen mcp add --transport http janction-render https://render.janction.jp/mcp
GitHub Copilot CLIcopilot mcp add --transport http janction-render https://render.janction.jp/mcp,然后运行 /mcp auth janction-render(OAuth)。如需使用技能:运行 copilot plugin marketplace add JasmyLab-JANCTION/janction-render 和 copilot plugin install janction-render@janction-render
Grok(grok.com)Connectors → New Connector → Custom → 粘贴 URL
Perplexity(Pro / Max / Enterprise)、Le Chat(工作区管理员)使用该 URL 添加自定义远程 MCP 连接器
Notion Agent(Business / Enterprise)Settings → Connections → Discover → Add Custom MCP → 粘贴 URL,然后登录(工作区管理员允许使用自定义 MCP 服务后,才会显示此按钮)
Cursor在 .cursor/mcp.json(项目)或 ~/.cursor/mcp.json 中添加:{"mcpServers": {"janction-render": {"url": "https://render.janction.jp/mcp"}}},然后按 Cursor 提示登录(OAuth)。一键安装:在 Cursor 中安装
VS Code(Copilot Agent 模式)在 .vscode/mcp.json 中添加:{"servers": {"janction-render": {"type": "http", "url": "https://render.janction.jp/mcp"}}},或运行 code --add-mcp '{"name":"janction-render","type":"http","url":"https://render.janction.jp/mcp"}',然后启动服务并登录(OAuth)
Windsurf、Cline、Goose 和其他 MCP 客户端使用上述 URL 连接 Streamable HTTP(OAuth 或通过 Bearer API 密钥请求头)。安装说明:llms-install.md。Cursor 项目规则(适用时机、预览优先流程):integrations/cursor
Claude Desktop 和其他仅支持 stdio 的客户端(npm){"mcpServers": {"janction-render": {"command": "npx", "args": ["-y", "janction-render"]}}}:npm 包 janction-render 通过 OAuth 将 stdio 连接到上述 URL(使用已有密钥时加上 --key jr_...;通过 uv 使用 Python stdio 服务时加上 --local)。Claude Code:claude mcp add janction-render -- npx -y janction-render
远程工具接收 scene_script(作为文本的 bpy 代码)、scene_url(指向 .blend、.py 或 3D 文件的 https 链接,或来自 https://render.janction.jp/upload 的链接)或 scene_id,以及用于纹理或 glTF .bin 文件的 asset_urls。结果会以内嵌图像和下载链接的形式返回;下载无需密钥,链接有效期约为 24 小时(只要视频可使用 render_download(only="mp4"))。

Claude Code 插件(远程连接器加上包含工作流的技能):

/plugin marketplace add JasmyLab-JANCTION/janction-render
/plugin install janction-render@janction-render
Stdio(发送本地文件)

该软件包发布在 PyPI 上,名称为 janction-render(安装 uv 后,npm 启动器 janction-render 会通过 npx -y janction-render --local 运行它)。

# 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 / pipx
pip install janction-render
claude mcp add janction-render -e JANCTION_RENDER_SERVER=https://render.janction.jp -- janction-render-mcp

Codex:添加到 ~/.codex/config.toml

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

首次使用时会自动发放临时 API 密钥,并缓存到 ~/.janction-render.json;设置 JANCTION_RENDER_API_KEY 可固定使用一个密钥(配额以及之后的额度都归该密钥所有)。远程连接器也可以使用同一个密钥:在连接页面粘贴即可。

工具
工具说明
`scene_info(scene_scriptscene_url
render_preview(..., frames="1-24", environment?, blender?)最多 4 帧(720p 预算),平铺显示并标注帧号;以内嵌图像的形式返回
render_review(scene_path / scene_script / scene_url / scene_id, environment="studio")在摄影棚灯光下从 4 个方向(0/90/180/270 度)检查 3D 模型或生成的场景:通过 / 警告 / 失败、评分、执行的检查项(文件、可见性、构图、曝光、灯光)及修复代码,并在一张图中展示 4 个视图。Stdio 服务;GPU 时间与一次预览相同
render_estimate(scene_id, frame_start, frame_end, width, height, samples)GPU 秒数、队列等待时间、“约 N 分钟”、是否符合剩余免费 GPU 时间?不消耗 GPU 时间
render_final(scene_id, frame_start, frame_end, width, height, samples, fps, output, environment?, blender?, engine?, transparent?, notify_url?)输出帧(png / exr)或视频(mp4 / webm / prores / gif / webp);transparent=True 保留 Alpha 背景(png / exr / webm / gif / webp);作业完成时,notify_url 会收到一次 JSON POST;返回 job_id + 预估时间
render_status(job_id)进度和预计完成时间(eta.human);render_download(job_id, only="mp4" / "frames" / "all") 获取文件或链接;render_cancel(job_id)
billing()剩余免费 GPU 时间(欢迎额度,然后是当日免费预览分钟数)、额度、充值链接,以及自动充值和月度套餐状态
render_share(job_id, title?, note?, include_script?, listed?)公开页面 /r/<id>,包含图像或视频、条件和(可选)脚本;在 24 小时有效期结束后仍可访问,直到调用 render_unshare;设置 listed=True 后,经审核会显示在 /gallery 中
asset_search(query, kind)在 Poly Haven 上按关键词搜索 CC0 模型 / 纹理 / HDRI;结果包含 polyhaven:<id> 和条目文件
render_info()在线或受限的工作进程(GPU 借给其他工作负载时会受限)、队列、预计等待时间、支持的输入、环境预设、Blender 版本

render_preview / render_final 的选项:environment(预览支持 studio、sunset、overcast、night、compare;environment_strength、environment_visible=False 可使用 HDRI 灯光和纯灰色背景)、orbit / orbit_frames / orbit_elevation(转台),blender("5.2"),以及 assets(stdio:随场景发送的本地文件,可通过脚本中的 os.environ["JR_ASSETS_DIR"] 找到;.blend 的外部文件会通过 pip install janction-render[blend] 自动收集)或 asset_urls(远程)。

CLI:janction-render inspect|preview|render|status|download|share|unshare|cancel|jobs|balance|topup|limits|outcomes|info。

API

POST /v1/keys                                   -> {api_key}         (header X-API-Key afterwards)
POST /v1/files  multipart "file" (.blend|.py|.glb|.fbx|.usd|.obj|...)   -> {scene_id}
POST /v1/files/{id}/assets  multipart "files"   textures, glTF .bin ...   GET /v1/files/lookup?sha256=  reuse an upload
POST /v1/estimate {kind, frames|frame_start/frame_end, width, height, samples, scene_id?} -> seconds, wall_seconds, human, quota, currency, expires_at
POST /v1/jobs   {scene_id, kind: info|preview|final, frames|frame_start/frame_end, width, height, samples, camera, fps, output (png|exr|mp4|webm|prores|gif|webp), transparent, notify_url (https), engine (cycles|eevee),
                 environment, environment_strength, environment_visible, blender, orbit, orbit_frames, orbit_elevation}   header Idempotency-Key makes retries safe
GET  /v1/jobs/{id}      status, progress, eta, artifacts[], cost, warnings, info, failure (code + fix)    DELETE /v1/jobs/{id}  cancel
GET  /v1/jobs/{id}/artifacts/{name}             PNG / MP4
GET  /v1/jobs/{id}/archive?only=png             every file of the job in one zip (frame sequences: one request instead of hundreds)
GET  /v1/outcomes       fixed-price outcomes;  POST /v1/outcomes/turntable {scene_id, size, frames}   POST /v1/outcomes/product-shot {scene_id, size, transparent?}
POST /v1/try    JSON {scene_script | scene_url, frames?, width?, height?, environment?} (no key) -> first 720p preview + an API key to continue, in one response (1 per network per 24h)
POST /v1/drops  multipart "file" (no key)       -> a 12-hour https link to pass as scene_url (the /upload page uses this)
POST /v1/jobs/{id}/share {title?, note?, include_script?, listed?} -> {share_id, url}   DELETE /v1/jobs/{id}/share   GET /v1/shares
GET  /r/{share_id}  public page (no key)   GET /gallery
GET  /v1/assets/search?q=&kind=models|textures|hdris   CC0 assets (Poly Haven) -> spec polyhaven:<id>
POST /v1/files/{id}/assets/urls {urls: ["https://...", "polyhaven:<id>"]}   fetch assets server-side
GET  /v1/me  (quota, balance, limits)   POST /v1/me/limits {job_yen?, day_yen?}   spending caps per key
POST /mcp                                       remote MCP (Streamable HTTP; Bearer api key or OAuth)
GET  /.well-known/oauth-protected-resource/mcp  OAuth discovery
POST /v1/billing/checkout {amount_yen} -> {checkout_url}   POST /v1/billing/sync   GET /v1/ledger
GET  /openapi.json  /llms.txt  /llms-full.txt  /ja/llms.txt  /facts.json  /version.json  /capabilities.json  /pricing.json  /status.json

如果任务超出免费 GPU 时长且余额不足,会返回 402 payment_required,并附带 checkout_url(展示给用户)、topup_yen,以及免费时长可覆盖的任务用量;400 beta_limit 表示任务过大(请拆分)。每个 API 错误都包含 retryable、possible_fix 和 docs_url;失败的任务会附带 failure,其中包含错误代码和建议操作。超过消费上限的任务会在预留任何资源之前被拒绝,并返回 403 spend_cap_exceeded。

示例

Agent 可以编写的场景脚本(服务会设置引擎、分辨率、采样数和降噪;脚本负责设置场景、摄像机和帧范围):

import bpy, math
for ob in list(bpy.data.objects):
    bpy.data.objects.remove(ob, do_unlink=True)
scene = bpy.context.scene
scene.frame_start, scene.frame_end = 1, 24
bpy.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 = cam
cam.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)

默认使用 Cycles;设置 engine="eevee" 可降低动画成本(每个任务需约 7 s 编译着色器,之后每帧成本约减半)。 在 Blender 5.0 中,材质始终使用节点:请设置 Principled BSDF 的 Base Color,而非 diffuse_color。脚本在隔离容器中运行,无法访问网络。更多内容:samples/cube_scene.py、samples/polyhaven_room.py。实测耗时:https://render.janction.jp/benchmarks

定价

新密钥附带 100 JPY 欢迎额度(1,000 GPU 秒,有效期 14 天,无需银行卡),可用于预览和最终渲染;每 30 天每个网络可获得一份完整额度(同一网络上的后续密钥共享剩余额度)。在 Stripe 页面保存银行卡(不会产生扣款),可额外获得 400 JPY,每张卡限一次(总额最高 500 JPY)。额度用完或过期后,每天最多可免费预览 2 GPU 分钟;最终渲染按每 GPU 秒 0.1 JPY 收费,使用预付额度支付,可通过 Stripe Checkout 页面刷卡购买(最低 500 JPY;2,000 JPY 可获得 2,200 JPY 额度,5,000 JPY 可获得 5,750 JPY,10,000 JPY 可获得 12,000 JPY;欢迎期内的首次充值按 1.5 倍计算,奖励额度最高 500 JPY)。仅对免费时长未覆盖的部分收费。每条指令最多可渲染 3,000 帧(内部会自动拆分,但使用同一个任务 ID):免费时长支持 1080p,使用预付额度最高可渲染 4K(3840x2160)。POST /v1/estimate 会在使用任何 GPU 时长之前,告知收费金额(cost.estimated_yen)、币种和有效期:https://render.janction.jp/pricing

故障排除

你看到的内容含义处理方法
402 payment_required任务超出密钥的剩余免费额度回复中的 tell_user 会说明本次渲染费用和充值可购买的额度;通过 checkout_url 付款(最低 500 JPY),然后重新提交同一任务,或减少帧数/降低分辨率
script_blockedbpy 脚本使用了沙箱禁止的功能(网络、进程、ctypes)GPU 工作进程无法访问网络:通过 asset_urls=[...](MCP)或 POST /v1/files/{scene_id}/assets/urls 传入网页上的文件,然后使用 jr_assets.path('<name>') 打开。若脚本仅因使用 urllib/requests 被拒绝,不会因此撤销密钥
script_path / scene_path场景引用了你自己电脑上的文件将文件作为资源发送,并通过名称(相对路径)引用
McpError: Timed out while waiting for response(OpenAI Agents SDK)SDK 默认只等待工具 5 秒使用 MCPServerStreamableHttp(..., client_session_timeout_seconds=120)(参见“使用你自己的 Agent 或应用”)
任务停留在 queued,且 eta.human 显示 GPU 已借出GPU 暂时与另一个工作负载共享告知用户需要等待;之后调用 render_download(job_id, wait_seconds=45),而不是轮询
429 rate_limited短时间内请求过多等待 Retry-After 秒后重新发送
画面太暗、过曝或物体不在画面内预览的判定结果会指出问题,并提供用于修复的 bpy 代码应用修复后先重新预览(只需几秒),再进行最终渲染;3D 文件会自动按实际尺寸取景
来自 Claude、ChatGPT 或 Codex 的 401连接器的登录已过期重新连接连接器(在 Claude Code 中使用 /mcp),或将密钥作为 X-API-Key / Authorization: Bearer jr_... 传入

文档

功能详解

  • 输入:.blend 文件(纹理随文件一起传送)、用于构建场景的 bpy Python 脚本(无需本地安装 Blender),或导入空场景的3D 文件(glTF/GLB、FBX、USD、OBJ、STL、PLY、Alembic)。
  • environment="studio" | "sunset" | "overcast" | "night" 使用随附的 HDRI(CC0)为场景布光,方便快速获得良好的首次渲染效果; environment="compare" 会在一张带标签的图片中预览同一帧在全部四种预设下的效果,供 Agent 选择。
  • .gltf 或 .obj 会自动附带其 .bin / .mtl / 纹理文件(来自同一文件夹或同一 URL 文件夹)。
  • orbit=True 会将任意场景或导入的模型变为转台效果:轨道摄像机会环绕模型一周(orbit_frames,默认值为 24; 预览会展示 0/90/180/270 度的效果;最终渲染若不指定 frame_end,则会输出完整环绕视频的 MP4)。取景时会忽略平坦的地板和墙面;可通过 orbit_target(对象名称或 x,y,z)和 orbit_distance(倍数)调整镜头。
  • GPU 借给其他工作负载期间,工具会立即返回排队任务及等待时间估算(已借出多久、通常会借出多久、预计还需等待多久;eta.gate),而不会一直等待。
  • 任务渲染期间,render_status 会统计当前运行分块中已完成的帧数,因此 ETA 会每隔几秒更新一次。
  • 在支持 MCP Apps 的宿主中(包括 Claude 网页版和桌面版等),预览、进度和下载链接也会以交互面板的形式显示在聊天中:图片、进度条、“打开 MP4”,以及 environment="compare" 预览后的预设按钮。远程连接器和 stdio 软件包都附带该面板(janction_render/mcp_app.html);设置 JR_MCP_APPS=0 可将其关闭。
  • 可按名称查找 CC0 资源:asset_search("wooden table") 可搜索 Poly Haven 的模型、纹理和 HDRI;在 asset_urls(远程)或 assets(stdio)中传入 polyhaven:<id>,文件便会下载到 GPU 上的 JR_ASSETS_DIR/<id>/,可直接导入 (bpy.ops.import_scene.gltf(filepath=os.path.join(os.environ['JR_ASSETS_DIR'], 'wooden_table_02', 'wooden_table_02_1k.gltf')))。 场景脚本可以 import jr_assets 并使用简便调用:jr_assets.import_model('wooden_table_02')、 jr_assets.apply(floor, jr_assets.material('wood_floor_deck', scale=2))(将 diff / normal / roughness / metal 接入 Principled BSDF),jr_assets.world_hdri('studio_small_09')。参见 samples/polyhaven_room.py。
  • 选择分享的渲染结果(render_share)会生成一个公开页面(/r/<id>,适用于 X 和 Discord 的 OGP),并在取消分享前一直保留。
  • Blender 5.0、GPU 上的 Cycles(当工作节点支持 Blender 5.2 时,blender="5.2" 会选择 Blender 5.2;render_info 会列出可用版本)。

Blender 插件和 DCC 工具(面向用户,而非 Agent)

  • Blender 扩展(addons/blender/,Blender 4.2+):在 Properties → Render 下提供 JANCTION Render 面板,包含 Preview、 Estimate 和 Final。系统会上传当前打开文件的副本及其引用的纹理(使用相对路径);结果会保存到 .blend 文件所在目录。可从扩展仓库安装:https://render.janction.jp/extensions/index.json (Preferences → Get Extensions → Repositories → + → Add Remote Repository),也可安装 zip 文件: https://render.janction.jp/extensions/janction_render-0.1.2.zip(运行 python scripts/build_blender_addon.py 可从本仓库构建)。 使用指南:https://render.janction.jp/blender-addon
  • Maya、Houdini、Cinema 4D(integrations/):导出为 USD / FBX / Alembic,连同纹理一起上传,使用 Cycles 渲染, 并打开结果;支持 Preview、Final(MP4)和 Turntable。仅使用 Python 标准库;jr_submit.py 是共用客户端。 使用指南:https://render.janction.jp/maya-houdini-cinema4d

自托管

服务端(FastAPI + SQLite,包含远程 MCP 端点)和工作器(在一次性 Docker 容器中运行 Blender, --network none --cap-drop ALL)位于内部仓库,暂未包含在此软件包中。本仓库包含客户端部分:stdio MCP 服务、CLI、HTTP 客户端、示例、Claude Code 插件、Blender 插件和 DCC 工具。

MCP 注册表

此服务已列入官方 MCP 注册表,名称为 io.github.JasmyLab-JANCTION/janction-render(远程服务:https://render.janction.jp/mcp)。

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

安全

漏洞报告:请参阅 SECURITY.md。保留期限、隔离和外部测试的概要请见安全页面。

许可证

此软件包、MCP 服务、CLI 和 DCC 工具采用 MIT 许可证(请参阅 LICENSE)。Blender 扩展(位于 addons/blender/)采用 GPL-3.0-or-later 许可证,这是 Blender 对插件的要求。由 JasmyLab Inc. 运营。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。