mcpField
J
JANCTION Render

JANCTION Render

リモート
render.janction.jpメディア・デザイン1今日更新
リポジトリ公式サイト

JANCTION Render について

JANCTION Renderは、AIエージェントや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エージェントが生成したBlenderシーンのプレビュー
  2. 023Dモデルからのターンテーブル動画作成
  3. 03GLBファイルからの製品画像生成
  4. 04Blenderプロジェクトからの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 エージェントは MCP サーバーまたは HTTP API として呼び出せます。.blend ファイル、bpy スクリプト、または 3D ファイル(glTF / FBX / USD)を送信すると、数秒でプレビューを確認でき、JANCTION の NVIDIA GPU からフレームまたは MP4 を取得できます。各プレビューでは、暗すぎる、白飛びしている、ライトがない、オブジェクトが フレーム外にあるといった問題点の判定と、修正用の bpy コードも返されるため、エージェントは最終レンダリングの前にシーンを修正できます。ローカルの Blender や GPU は不要です。新しいキーには 100 JPY のウェルカムクレジット(30 日ごとにネットワークごとに 1 回。ネットワーク上で追加発行されたキーは残額を共有)を付与し、課金されないカードを保存するとさらに 400 JPY を付与します(カードごとに 1 回)。その後は GPU 秒あたり 0.1 JPY です(プレビューは 1 日あたり最大 2 GPU 分まで無料)。 JasmyLab Inc. が運営しています。

AI エージェントは 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 日ごとにネットワークごとに 1 回付与され(ネットワーク上で追加発行されたキーは残額を共有)、料金が発生しないページでカードを保存するとさらに 400 JPY を 1 回付与します(カードごとに 1 回)。その後、プレビューは 1 日あたり最大 2 GPU 分まで無料で、最終レンダリングはプリペイドクレジットから GPU 秒あたり 0.1 JPY で課金されます(有料利用は 2026-10-08 に開始)。最終レンダリングは 1 指示あたり最大 3,000 フレームまで対応します(1 つのジョブ 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)
1つのコマンドで作成できるもの(実際の出力)

2026-10-10に、本番GPU(NVIDIA RTX PRO 6000 Blackwell)でKhronosの WaterBottleサンプル(パブリックドメイン、CC0)からレンダリングしたものです。 どの行もコピーすれば、そのまま実行できます。料金はGPU秒あたり0.1 JPYで、新しいキーのウェルカムクレジットの範囲内です。

コマンドGPU時間料金
ボトルの4つの商品写真uvx janction-render shots https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb13.9 s約1.4 JPY
ボトルの360度ターンテーブルuvx janction-render turntable https://github.com/KhronosGroup/glTF-Sample-Assets/blob/main/Models/WaterBottle/glTF-Binary/WaterBottle.glb85.2 s約8.5 JPY
回転するロゴリング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 JPY

商品写真は1920x1080のPNGファイル4枚です。ターンテーブルとアニメーションは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のインストールも不要です。 シーンはエージェントが作成するbpyスクリプト、.blend、または3Dファイルにできます。Blenderは当社のGPU上で実行されます。
  • エージェント向けに設計されています。 まずプレビュー(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日ごとにネットワークあたり1回まで)。課金されないカードを登録すると、さらに400 JPYが付与されます。その後はGPU秒あたり0.1 JPYです(プレビューは1日あたり最大2 GPU分まで無料)。最終レンダリングは1つの指示あたり最大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}

独自のエージェントやアプリから利用する

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が1回送信されます(job.done / job.failedとダウンロードリンクを含みます)。Idempotency-Keyヘッダーを使えば、安全に再試行できます。OpenAPI:https://render.janction.jp/openapi.json アプリの完全なサンプル(ユーザーがGLBをアップロードし、アプリが固定料金のプロダクトショットを注文し、Webhookが画像を保存します): https://render.janction.jp/blender-render-api#embed

エージェントフレームワークは、キーをベアラートークンとして指定し、リモート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アプリを1つのコマンドで接続し、プロジェクト内のすべてのコーディングエージェントに、レンダリングのタイミングと方法を伝えます。

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(このリポジトリには MCP サーバーとワークフロースキルを含む kimi.plugin.json が含まれています)、または ~/.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(このリポジトリには MCP サーバーとワークフロースキルを含む qwen-extension.json が含まれています)、または 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 エージェントモード).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 として公開されています(npm ランチャーの janction-render は、uv がインストールされている場合、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")3D モデルまたは生成されたシーンを、スタジオ照明のもとで 4 方向(0/90/180/270 度)からチェックします。合格/警告/不合格、スコア、実行したチェック項目(ファイル、可視性、フレーミング、露出、照明)と修正コード、および 4 方向のビューを 1 枚の画像で返します。Stdio サーバーで、GPU 時間はプレビュー 1 回分と同じです
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 にするとアルファ背景を保持します(png / exr / webm / gif / webp)。ジョブ完了時に notify_url へ JSON を 1 回 POST します。job_id と見積もりを返します
render_status(job_id)進捗と ETA(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 時間を超過するジョブで、クレジットが不足している場合は、checkout_url(ユーザーに表示してください)、topup_yen、および無料時間でジョブのどれだけをカバーできるかを含む 402 payment_required が返されます。400 beta_limit はジョブが大きすぎることを意味します(分割してください)。すべての API エラーには retryable、possible_fix、docs_url が含まれます。失敗したジョブには、コードと推奨される対応を含む failure が含まれます。 支出上限を超えるジョブは、何も予約される前に 403 spend_cap_exceeded で拒否されます。

例

エージェントが作成できるシーンスクリプトです(サービスがエンジン、解像度、サンプル数、デノイズを設定し、スクリプトがシーン、カメラ、フレーム範囲を設定します)。

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 秒かかった後、フレームあたりのコストは約半分になります)。 Blender 5.0 では、マテリアルは常にノードを使用します。diffuse_color ではなく、Principled BSDF の Base Color を設定してください。スクリプトはネットワーク接続のない隔離コンテナーで実行されます。詳細は samples/cube_scene.py、samples/polyhaven_room.py を参照してください。実測時間:https://render.janction.jp/benchmarks

料金

新しいキーには、100 JPY のウェルカムクレジット(1,000 GPU 秒、14 日間有効、カード不要)が付与され、プレビューと最終レンダリングに利用できます。ネットワークごとに 30 日間でクレジット 1 回分が付与されます(同じネットワーク上の後続のキーでは、残りを共有します)。Stripe のページでカードを登録すると(請求は発生しません)、カード 1 枚につき 1 回、さらに 400 JPY が追加されます(合計最大 500 JPY)。使い切るか有効期限が切れた後は、プレビューは 1 日あたり最大 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 は 1 つです)。無料時間では 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)(「独自のエージェントまたはアプリから」を参照)
ジョブが 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" を指定すると、同じフレームを4種類すべてのプリセットでプレビューし、ラベル付きの1枚の画像にまとめるため、エージェントが選択できます。
  • .gltf または .obj を読み込むと、.bin / .mtl / テクスチャも(同じフォルダー、または同じ URL のフォルダーから)自動的に一緒に読み込まれます。
  • orbit=True を指定すると、任意のシーンまたはインポートしたモデルをターンテーブル表示にできます。オービットカメラが対象の周囲を1周します(orbit_frames のデフォルトは24です。プレビューでは0/90/180/270度を表示し、frame_end を指定しない最終レンダリングでは1周分の MP4 が生成されます)。カメラのフレーミングでは平らな床や壁は無視されます。orbit_target(オブジェクト名または x,y,z)と orbit_distance(倍率)で撮影を調整できます。
  • GPU を別のワークロードに貸し出している間、ツールは待機せず、キューに入ったジョブと待ち時間の見積もり(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))(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 ツール(エージェントではなく、人向け)

  • Blender 拡張機能(addons/blender/、Blender 4.2 以降):プロパティ → レンダー内に、プレビュー、見積もり、最終レンダーを行う JANCTION Render パネルを追加します。開いているファイルのコピーと、相対パスで参照されるテクスチャがアップロードされ、結果は .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 でレンダリングし、結果を開きます。プレビュー、最終レンダー(MP4)、ターンテーブルに対応しています。標準ライブラリの 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 を参照)。addons/blender/ の Blender 拡張機能は、Blender がアドオンに求める GPL-3.0-or-later ライセンスです。JasmyLab Inc. が運営しています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。