prompt-to-scene
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PTS_BLENDER | Yes | Absolute path to the Blender executable (e.g., /Applications/Blender.app/Contents/MacOS/Blender on macOS, or the full path to blender.exe on Windows). | |
| PTS_UNITY_PROJECT | Yes | Absolute path to the Unity project directory. This selects the destination explicitly. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| game_art_directionA | Read/save gameplay, world, style_notes, view and construction for this game. Interpret the user's description with the current AI host; do not require a form. view: isometric/top_down/third_person/first_person. construction: handcrafted/salvaged/machined. Partial updates retain omitted fields. detail: auto/readable/balanced/closeup; match_game_style learns from actual reference images. Text guides custom modeling; structured choices also affect recipe geometry/surfaces. This changes future briefs, not already imported assets. Use set_project_style for palette. |
| match_game_styleA | Recognize this project's look using actual images and the current AI host's vision. First pass evidence IDs from describe_project_assets, or use_reference for set_art_brief's saved image. Returns the images and a source_token. Inspect them; then call again with that token and analysis using the returned schema. Applies inferred palette, material roughness, shape parameters, detail density and art notes to future designs. Confidence below 0.6 keeps current defaults. No external vision service is invoked and existing assets are not changed. The host interprets images; the tool validates/saves the interpretation, not a beauty score. |
| game_workflowC | One entry for a game-development task. Search/describe only the capability needed. Start with context and find_assets/find_designs, then produce a saved plan containing recipe/custom/source/template/interactive items. A single task tracks building, importing, gameplay attachment, optional room furnishing and review. Retry with resume, not a new plan. review_images returns actual images; inspect them before saving feedback or repairing parts. Existing tools are also available by their exact action name through this gateway. |
| design_assetA | Save/read an asset design tied to the game's context and reference notes. Omit description to read. role: environment/interactable/hero. Supply concrete decisions (silhouette, structure, materials, story, avoid) derived from gameplay and world context. Default route is custom Blender modeling; specify recipe_kind only if a listed form fits. Build the same asset_id to retain this immutable brief with its source revision. Existing recipe revisions keep their original design; planning alone does not rebuild geometry. Follow the returned design, then inspect a real render. No model API or beauty score is used. |
| inspect_targetC | Inspect engine, coordinates, Blender, editor heartbeat and pending/completed assets. |
| build_assetA | Execute trusted bpy code in background Blender; save .blend and queue engine import. Use stable asset_id (lowercase letters/digits/_/-) to update the same asset. Position is engine XYZ meters, applied ONLY when first placing the asset. Each script builds a complete asset from scratch. Delete default scene objects, create an Export collection, link meshes to it. Static PBR, emission and alpha mask/blend; supported designed graphs bake automatically. Unsupported materials fail explicitly. No paid model API or additional Blender MCP required. |
| publish_blendB | Publish the Export collection of an existing saved .blend without modifying the original. Use this after another Blender tool has modeled and saved an asset. Same material contract and queued/result semantics as build_asset. Blender file auto-execution is disabled. Use publish_prepared for a reviewed import_asset preview to retain preparation/provenance. |
| get_asset_statusA | Read an engine receipt, optionally wait up to 30s for a specific build request. Pass the build's request_id to prevent stale success. A wait timeout remains queued/unknown; superseded means another revision is current. Imported includes paths, geometry and scene. |
| list_projectsA | Discover saved/local projects, Blender and recipe defaults without a connection. |
| connect_projectB | Connect the chosen project for both clients and install its bridge with a backup. Unity takes a project folder; UE takes a folder or .uproject. Restart UE after installation. |
| create_propB | Create an art-directed prop using the saved project style and automatic PBR baking. inspect_library lists nine recipes, parameters, parts and quality settings. Omit quality to inherit the project. New assets are placed near the camera; revisions keep transforms. |
| inspect_assetB | Read source script, recipe parameters and successful revisions before editing. |
| revise_propA | Change shared recipe dimensions or apply the current project style; preserve locked parts. This changes every instance using this asset. For one instance use edit_scene instead. apply_design uses this asset's saved design_asset brief, including construction details. Omit it to retain the original design. Geometry/material locks remain independent. |
| inspect_libraryC | List curated styles, quality budgets, recipe parameters and semantic part names. |
| search_assetsA | Search CC0 Poly Haven models by English tags; returns credited sources and thumbnails. Uses a cached catalog, no API key. Choose a result and import_asset with source={provider: polyhaven, id: returned_id}. Search never downloads model files. |
| import_assetA | Prepare and import local GLB/glTF/FBX/BLEND or a selected Poly Haven model. source={provider: local, path: absolute_file} or {provider: polyhaven, id: catalog_id}. settings: triangle_budget, texture_size (256/512/1024/2048), max_deviation_percent, lod_ratios (decreasing list), collision (convex/box/none), target_size (largest dimension in meters), unit_scale, up_axis (auto or +/-X/Y/Z), ground. File importers honor format axes; up_axis is an explicit correction AFTER that conversion. Original file is unchanged. Common opaque Principled PBR graphs and glTF ORM inputs are baked; rigs/transparency/mixed shaders fail explicitly. preview_only makes an isolated prepared draft; use its source with publish_prepared when accepted. Poll the exact request, inspect report and before/studio views. Poly Haven downloads retain CC0 provenance. No generation service is billed. |
| publish_preparedB | Send an accepted isolated import_asset preview to the engine, retaining its original. Pass the completed preview's asset_id and request_id. Materials, LOD settings and source attribution survive publication; the retained original remains available for reprocessing. |
| prepare_assetB | Reprocess an imported asset from retained source with measured simplification and LODs. Uses import_asset settings. A failed error/budget check queues nothing. Existing engine identities/instances survive successful reimport. Geometry locks apply to recipe edits; explicit preparation may reduce geometry. Review source before/studio and engine captures. |
| create_style_kitB | Create a curated reading_corner, village_market or makers_workshop set. Each uses matching art direction and purpose-designed structures, placed in a spaced row. A new prefix is required. Does not change project-wide defaults. Poll each task to imported. |
| edit_selected_propA | Resolve the engine selection and edit a named recipe part without typing an asset ID. Changes the selected asset's shared recipe (all its instances). Requires exactly one selected managed asset. If inspection is queued, resume with inspection_request_id. Imported static models also support named-part geometry/material edits and locks. |
| capture_reviewA | Capture a native before/after comparison with identical saved camera framing. Capture before, wait for completion, modify asset, then capture after with the same review_id and view. get_review lists capture tasks; get_preview(request_id) returns images. Engine project lighting remains visible; Blender source previews use the studio rig. |
| get_reviewC | Return before/after native capture task states without creating another capture. |
| get_project_styleB | Read persistent art direction shared by Codex, Harness, new props and prop sets. |
| set_project_styleA | Remember art direction for future assets; existing assets change only on explicit revision. Presets: cozy, heritage, workshop. Quality: draft/mobile/desktop/hero. Overrides: palette (wood/metal/paint/stone linear RGB), roundness/taper/wear 0..1, material_bindings (role -> existing Assets/ or /Game/ material path). Reused materials remain untouched. reference_asset adopts an existing recipe's style. Use client vision for reference images, then propose concrete palette/shape values; this tool does not reconstruct images. |
| edit_prop_partA | Edit or lock one named part of a recipe or imported model; inspect_asset lists parts. Changes: scale XYZ factors, offset XYZ meters, rotation XYZ degrees, color linear RGB, material wood/metal/paint/stone, roughness and wear. Part coordinates are Blender Z-up. Recipe transforms pivot at the bottom center; imported parts use their bounds center. Locks retain their saved geometry/material on later changes; explicitly unlock before changing locked properties. |
| create_prop_setB | Create up to eight matching designs with one saved style. Each needs kind and asset_id. Optional fields: parameters, position, collider. Poll every returned task; after all imports use arrange_props for copies/placement. Partial submission reports already-started tasks. |
| create_variantsA | Generate two or three real 3D drafts with identical studio lighting and three views. Drafts stay outside the engine assets/scenes. Use only when exploring alternatives is useful; normal create_prop publishes directly. Wait with get_variants, view get_studio_preview, and publish the user's chosen candidate with choose_variant. |
| get_variantsC | Read each candidate's exact status, report and preview views; no aesthetic score. |
| choose_variantC | Publish the selected draft at final quality with automatic textures and engine import. |
| get_studio_previewA | Return an actual Blender source render (studio/front/back), including isolated drafts. Clearly label as Blender studio, not an engine screenshot. get_preview shows the game scene. |
| arrange_propsA | Place managed props relative to a selected real scene anchor, with collision checks/undo. items: [{asset_id, count=1, object_id?}], up to 32 instances. Relations: around, along, under, right, front. fit can shrink under-anchor props. Uses oriented bounds for upright objects and any horizontal anchor yaw. Existing instances move, extra ones are duplicated. If inspection is queued, retry with inspection_request_id. If arrangement is queued, poll its exact request with get_task_status; do not submit the layout again. |
| get_task_statusB | Query or wait up to 30 seconds for any editor action, preview or build task. |
| cancel_taskC | Request cancellation. A native import already in progress may finish; check status. |
| inspect_sceneB | Read the active scene and actual selected managed props to resolve 'this object'. |
| edit_sceneA | Direct engine edit: transform, tint, ground or focus, without a Blender rebuild. selected scope changes selected managed instances only. asset scope changes all LOADED instances of asset_id in this scene. transform values: move=[x,y,z] meters, rotate=[x,y,z] degrees, scale=[x,y,z] multipliers. tint values: color=[r,g,b] linear, optional material= original Blender material name. Result contains undo_id for restoring the edit. |
| undo_scene_editC | Restore a tool edit's instance transforms/material overrides in its original scene. |
| restore_assetC | Reimport a previous successful source, retaining scene instances. |
| get_previewB | Return an engine PNG. Retry queued captures with their request_id. For a completed playcheck with captures, view='before' returns the initial image; the default returns the post-interaction image. |
| open_workbenchA | Show the unified task, selection, preview, generation and review workbench. MCP Apps-capable hosts can display this in chat. Other clients can use all normal tools and the double-click local app; an embedded UI is never required for the workflow. |
| workbench_actionD | Perform a workbench button action. Uses the same validated workflows as normal tools. |
| compose_sceneA | Build and furnish a small scene, or save/place a reusable layout in this project. create builds a matching kit then places it around its table; selected upright anchors supply position/yaw. An explicit position is metres in engine axes. mode=save records selected instances (or asset_ids) as template; mode=place duplicates saved instances. Poll the returned workflow ID. Interrupted workflows resume without repeating completed stages. Result has undo_id. Arbitrary horizontal yaw is supported, tilted anchors are not. |
| edit_imported_partA | Group, edit, lock or replace parts of an imported static model. inspect_asset.report.parts lists source parts. members groups existing named parts into part. Changes: scale/offset/rotation XYZ in Blender Z-up, linear color RGB, roughness, metallic. replacement_path is a local GLB/glTF/FBX/BLEND fitted to the chosen part bounds. Unlock explicitly before changes. Untouched parts and engine instances retain identity. A single fused mesh is one part: this tool does not invent semantic segmentation. |
| set_art_briefC | Persist a reference image and art direction; optionally adopt a recipe style/palette. Use the client's vision for interpretation. Images are reference evidence, not a claim of automatic style extraction or reconstruction. Existing assets require explicit edits. |
| get_art_referenceA | Return the saved reference image for client visual review; notes are in open_workbench. |
| review_qualityB | Measure native issues and capture same-camera before/after with a two-repair limit. auto_fix aligns to a detected collision surface only when the measured gap is <=0.5m. Visual findings need client vision, using get_preview and get_art_reference. No aesthetic score or visual-pass claim is generated. repair_quality applies concrete part edits and refreshes the comparison automatically. Poll the exact workflow via get_task_status. |
| repair_qualityA | Apply a concrete part repair to a completed quality review, then recapture and recheck. At most two repairs including automatic grounding; rejects assets changed outside this review. Wait for the returned review request, then inspect its fresh before/after images. |
| inspect_performanceA | Read actual native triangles, vertices, material slots, textures and LOD counts. If queued, retry with request_id. Presets mobile_prop/scene_prop/hero_prop expose budgets. Texture bytes are an RGBA8+mip estimate, not measured VRAM. Shared meshes are identified; FPS and draw calls require an actual engine profiler and are never inferred here. |
| apply_usage_presetB | Prepare a retained source for mobile_prop, scene_prop or hero_prop with measured LODs. Uses the preset's triangle budget, texture resolution and LOD ratios. Reduction may fail explicitly when its deviation limit cannot be met; existing imported geometry stays usable. |
| list_generation_providersA | List optional configured Meshy/self-hosted generation adapters; never return secrets. |
| generate_modelA | Generate 1-3 textured GLB candidates, then use the existing preparation/import pipeline. Configure providers in the local app. Meshy consumes credits: allow_paid only when user authorization covers this provider/count. Self-hosted adapter implements docs/PROVIDERS.md. Optional 1-4 PNG/JPEG references. Default candidates stay outside the scene for review; publish_prepared selects one. Saved provider IDs survive interruption without resubmission. Cancellation stops local work; an already submitted provider task may still consume credits. |
| resume_workflowC | Resume an interrupted composition, quality or generation task using its saved stages. |
| create_interactive_propA | Build a door, chest or pickup with Blender geometry and native gameplay behavior. Dimensions are width/depth/height in meters; position uses target engine axes. Retains separate base/moving meshes and a reusable Unity prefab or UE Blueprint. Poll this workflow until completed. Aim the game camera and press E for the optional demo, or bind your own input. |
| configure_interactionB | Attach/update door/chest/pickup behavior. Pivot/offset are local engine XYZ meters. A door/chest requires a separate prepared moving asset. The first UE attachment converts the plain managed StaticMeshActor to a native Blueprint; later revisions keep that Actor. |
| protect_assetB | Inspect/set/clear custom material overrides and persistent root attachment points. bindings: [{slot, material_path}] in Assets/ or /Game/. sockets: [{name, position, rotation}] use engine XYZ meters/degrees. Missing protected slots block later imports. Generated material property edits and arbitrary generated hierarchy changes are outside the preservation contract. |
| review_asset_updateD | Read native protected slot conflicts before publishing a completed prepared candidate. |
| set_scene_lookA | Apply/inspect/capture/restore warm_cartoon, cool_scifi, moonlit or neutral scene lighting. Owns a native lighting/sky/post-process/camera rig; saves prior lighting for restore. The presentation camera stays fixed across preset changes. Poll request; get_preview(request_id) reads captures. Existing scene lights are disabled while the owned look is active. |
| build_levelA | Plan/build/check/remove a connected modular level with real collision clearance. settings: modules=[{cell:[grid_x,grid_y,floor],kind:room|corridor|stair,direction:0..3}], cell_size, story_height, door_width/height, player_radius/height, max_step, position, yaw. Directions: south/east/north/west. Stairs need a lower and upper connected landing. Max 24 modules. Disconnected/too-small plans fail before editor mutation. Native checking uses sampled standing capsules, not a baked NavMesh or a complete character-controller simulation. |
| run_playcheckB | Run interaction/range/geometry and optional level-clearance checks in real Play/PIE. Requires Edit mode. Restores Edit mode after completion/cancellation; existing game scripts run normally. Poll the same ID; inspect development.passed, checks and warnings. Frame deltas are measured on this editor/machine, not a target-device benchmark. No paid AI is used. |
| search_project_assetsA | Index project meshes/prefabs, then rank names, tags, materials, notes and desired size. First call queues the native index. Poll then call again with the same request_id and query. Returns paths, dimensions, measured geometry and declared license. Preview before placement using reuse_project_asset(mode='preview'). This is local keyword search with Chinese aliases. |
| reuse_project_assetB | Preview or place an existing project model/prefab/Blueprint by its returned native path. Reuses the original native asset; does not duplicate asset files or claim new authorship. get_preview(request_id) reads the preview PNG after the action completes. |
| tag_project_assetC | Save searchable local annotations and user-declared source/license for an asset path. |
| organize_project_assetsA | Automatically name/classify project assets through native Unity/UE moves; supports undo. scan: inventory Assets or /Game, optionally one subfolder; poll get_task_status. plan: use scan_id equal to the completed scan request_id. settings: destination, rename (bool), group_by ('type' or 'source'), exclude (project paths), overrides ({old_path:semantic_name}), rules ({kind:{folder,prefix}}). inspect: paginated exact plan; history: recent plans. apply/undo: use the saved plan_id then poll. Applies collision-resolved names, verifies stale candidates, preserves GUID/native references and records inverse moves. Native files are saved; unrelated scene edits are not rolled back. Protected folders, scripts, scenes/data/unknown types stay in place with reasons. Unreal keeps required redirectors. Code/config string paths are not rewritten; exclude those resources. No model provider, visual AI guessing or paid calls. |
| project_conventionsC | Read/save shared naming, folder, preparation and intake defaults, or suggest prefixes from a native scan. |
| manage_asset_inboxC | Scan the designated source inbox, inspect jobs, or explicitly retry failed revisions. Originals are retained. |
| describe_project_assetsB | Capture actual model thumbnails and metadata. Optional vision labels require a configured endpoint. Without a provider, poll this job, call get_asset_evidence on each evidence request_id, inspect the image, then save_asset_description. Never claim content recognition from filenames alone. |
| get_asset_evidenceC | Return the native thumbnail that supports an asset description. |
| save_asset_descriptionA | Index a visual description: name, object_type, description, materials[], style, uses[], confidence. Keep uncertainty visible. Only set corrected for an explicit user correction. Corrections are protected from later automatic runs. This updates search metadata, not native filenames. To rename, use the saved name as an organize_project_assets override for the selected path. |
| configure_asset_visionC | Configure an optional OpenAI-compatible vision endpoint. Credentials stay in the OS store. |
| adapt_asset_materialsA | Preview a reference look on Unity prefabs or UE static meshes; selectively apply/undo material slots. Reference can be a native material or model. Fields: color, roughness, texture_scale. Preview creates separate material/asset variants and real before/after renders. Inspect unsupported-field warnings; do not claim visual equality across different shaders. Apply uses selected row IDs, preserves geometry/textures, and refuses changed assignments. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| workbench_resource | Optional task UI; clients without MCP Apps use the normal tools or local app. |
TDQS
Scored across 69 tools
Heavy overlap across creation tools (create_prop, create_prop_set, create_variants, generate_model, build_asset, design_asset, create_style_kit, create_interactive_prop), editing tools (edit_scene, revise_prop, edit_selected_prop, edit_prop_part, edit_imported_part, adapt_asset_materials), and publish/review tools (publish_blend vs publish_prepared vs import_asset; capture_review vs review_quality vs repair_quality vs get_preview vs get_studio_preview). Long descriptions help somewhat but an agent must read carefully to pick correctly. Boundaries are genuinely blurred between many of these.
Almost everything follows a snake_case verb_noun pattern (create_prop, edit_scene, inspect_asset, list_projects, get_preview). A few noun-phrase names deviate (game_art_direction, project_conventions, game_workflow, open_workbench), but the convention is otherwise predictable and readable.
69 tools is far beyond what any single-purpose server should expose, and the surface splits one pipeline across many near-duplicate verbs. The count alone would be an extreme mismatch even for a broad asset pipeline, and overlap compounds the problem.
Coverage of the game-asset lifecycle is unusually thorough: create, design, import, prepare, edit, arrange, review, performance-check, protect, resume, undo and restore are all present. Minor gaps exist (no explicit asset deletion or PR-like review-comment analog), but agents have workarounds.