8th Wall MCP Router icon

8th Wall MCP Router

Map a natural-language request to MCP tool calls

Overview

This node, named "8th Wall MCP Router," acts as a natural-language command interpreter that maps free-text requests into specific tool calls for managing and manipulating 3D scenes and projects. It is designed to simplify interactions with a 3D content management platform (MCP) by allowing users to describe their intentions in plain language, which the node then translates into actionable commands.

Common scenarios where this node is beneficial include:

  • Quickly scaffolding or initializing new 3D projects using predefined templates.
  • Starting or running a development server for previewing 3D scenes.
  • Adding and configuring scene elements such as primitives (boxes, spheres, planes), lights, background colors, environment HDRs, and models.
  • Controlling scene helpers like orbit controls, grid helpers, and floor planes.
  • Downloading and adding 3D models from URLs or local sources.

Practical examples:

  • Input: "scaffold a project with three template" → The node will generate a command to scaffold a new project using the Three.js template.
  • Input: "start dev server on port 3000" → The node will start a development server on port 3000.
  • Input: "add a red box at position x:1 y:2 z:3" → The node will add a red box primitive to the scene at the specified position.
  • Input: "set background color to blue" → The node will set the scene's background color to blue.
  • Input: "add model from https://example.com/model.glb" → The node will download the GLB model and add it to the scene.

Properties

Name Meaning
Request A free-text description of what you want to do. Can include JSON fields like url, color, type, position, etc., embedded in the incoming item.
Default Template The default project template to use when scaffolding. Options: A-Frame, Three.js.
Default Port The default port number to use when starting the development server. Must be between 1 and 65535.
Default Model Folder Relative folder path (under project/assets/) used to save downloaded 3D model files. Defaults to models.

Output

The node outputs an array of JSON objects, each representing a mapped tool call derived from the input request. Each output item contains:

  • request: The original free-text request string.
  • tool: The name of the tool or action to perform (e.g., project_scaffold, devserver_start, scene_add_primitive).
  • args: An object containing arguments relevant to the tool (e.g., template name, port number, color, model URL).
  • explanation: A human-readable explanation of the action being performed.

If the node processes multiple commands from one input, it outputs multiple items accordingly.

Binary data is not produced by this node; all outputs are JSON describing actions to be taken downstream.

Dependencies

  • No direct external API calls are made by this node itself; however, it expects that downstream tools or services can handle the specified commands (e.g., downloading assets, starting servers).
  • Requires configuration of project asset paths and network access if downloading models or environment HDRs.
  • No explicit environment variables or API keys are required by this node.

Troubleshooting

  • Empty or unrecognized requests: If the input request does not match any known patterns, the node falls back to sending a simple health ping command. Ensure your request text includes recognizable keywords like "scaffold", "start", "add", "model", etc.
  • Invalid port numbers: Ports outside the range 1–65535 may cause errors when starting the dev server. Use the Default Port property or specify a valid port in the input JSON.
  • Model download failures: When specifying model URLs, ensure they are accessible and end with .gltf or .glb. Network issues or invalid URLs will prevent successful downloads.
  • Color parsing issues: Colors can be specified by name or hex code. Unsupported color names or malformed hex codes may default to fallback colors.
  • Missing properties in JSON input: Some commands rely on additional JSON fields (e.g., color, position). Omitting these may result in default values being used.

Links and References

Discussion