Gamedev All-in-One MCP
Provides tools to control Blender, including object creation, material assignment, Python script execution, physics setup, and export via a Python addon.
Provides integration with Google's API to enable conversational AI assistance (Gemini models) that can auto-execute engine tools from the dashboard.
Provides integration with OpenAI's API to enable conversational AI assistance (GPT models) that can auto-execute engine tools from the dashboard.
Provides tools to control Roblox Studio, including script editing, instance CRUD, physics simulation, and asset searching via a Luau plugin.
Provides tools to control Unity Editor, including scene hierarchy management, component manipulation, physics simulation, and play mode control via a C# EditorWindow.
Provides tools to control Unreal Engine, including actor management, blueprint access, physics simulation, and viewport screenshots via a C++ plugin.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Gamedev All-in-One MCPcreate a red spinning cube in Unity, then replicate it in Roblox and Blender."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🎮 Gamedev All-in-One MCP
One Server. Four Engines. 78 Tools. Zero Friction.
The first open-source MCP server that unifies Roblox Studio, Unity, Unreal Engine, and Blender into a single AI-powered control plane.
Quick Start · Features · Architecture · Tool Inventory · Dashboard · Contributing
"Hey Claude, create a red spinning cube in Unity, then replicate it in Roblox and Blender."✨ Features
🔧 78 MCP Tools
Across 12 modules — scene management, scripting, instance CRUD, physics simulation per engine.
🌉 4 Engine Connectors
Auto-reconnecting bridges for Roblox (HTTP), Unity (TCP), Unreal (TCP), and Blender (TCP).
🤖 Built-in AI Console
Chat with Claude, GPT-4o, or Gemini directly from the dashboard — tools auto-execute.
🖥️ Web Dashboard
Real-time SSE monitoring at localhost:3100 with glassmorphism dark theme UI.
⚡ Physics Engine
Per-engine gravity, rigid bodies, constraints, raycasting, force/impulse simulation.
🔌 Universal Compatibility
Works with Claude Desktop, Cursor, Claude Code, OpenCode, VS Code Copilot, and any MCP client.
Related MCP server: Unity MCP Server
🎯 Supported Engines
🚀 Quick Start
# Clone the repo
git clone https://github.com/nicepkg/gamedev-all-in-one.git
cd gamedev-all-in-one
# Install & build
npm install
npm run build
# Start the server
npm run devThen open http://127.0.0.1:3100 for the web dashboard.
MCP Client Configuration
Add to your MCP client config (Claude Desktop, Cursor, etc.):
{
"mcpServers": {
"gamedev-all-in-one": {
"command": "node",
"args": ["/absolute/path/to/gamedev-all-in-one/dist/index.js"]
}
}
}🏗 Architecture
graph TB
subgraph Client["🤖 MCP Clients"]
CD[Claude Desktop]
CR[Cursor]
CC[Claude Code]
OC[OpenCode]
VS[VS Code Copilot]
end
subgraph Server["⚡ MCP Server — Node.js"]
FND["🔧 Foundation (4 tools)"]
RBX["🟦 Roblox (20 tools)"]
UNI["⬛ Unity (15 tools)"]
UNR["⬜ Unreal (15 tools)"]
BLN["🟧 Blender (13 tools)"]
WEB["🖥️ Dashboard :3100"]
end
subgraph Engines["🎮 Game Engines"]
RS["Roblox Studio<br/>Luau Plugin"]
UE["Unity Editor<br/>C# EditorWindow"]
UEE["Unreal Editor<br/>C++ Plugin"]
BE["Blender<br/>Python Addon"]
end
Client -->|stdio| Server
RBX -->|"HTTP :3002"| RS
UNI -->|"TCP :7890"| UE
UNR -->|"TCP :55557"| UEE
BLN -->|"TCP :9876"| BE
style Client fill:#1e1b4b,stroke:#6366f1,color:#e0e7ff
style Server fill:#0c4a6e,stroke:#0ea5e9,color:#e0f2fe
style Engines fill:#431407,stroke:#f97316,color:#fff7ed📦 Tool Inventory (78 tools)
Tool | Description |
| Initialize project manifest |
| Read manifest state |
| Validate environment and connectors |
| List all tools and connector status |
Category | Tools |
Core (2) |
|
Script (5) |
|
Instance (7) |
|
Query (12) |
|
Physics (5) |
|
Category | Tools |
Core (10) |
|
Physics (5) |
|
Category | Tools |
Core (10) |
|
Physics (5) |
|
Category | Tools |
Core (8) |
|
Physics (5) |
|
🖥️ Web Dashboard
The built-in dashboard at http://127.0.0.1:3100 features a dark glassmorphism UI:
Panel | Description |
Engine Status | Real-time connection status for all 4 engines with animated glow effects |
AI Console | Chat with Claude / GPT-4o / Gemini — auto-executes engine tools |
Tool Registry | All 78 tools with color-coded engine dots and live search |
Event Log | SSE-powered real-time stream of connections, tool calls, and errors |
AI Console Providers
Provider | Models |
Anthropic | Claude Opus 4.6, Claude Sonnet 4.6, Claude Haiku 4.5 |
OpenAI | GPT-5.4, GPT-5.4 Mini, GPT-5.4 Nano, o3, o4-mini |
Gemini 2.5 Pro, Gemini 2.5 Flash, Gemini 2.5 Flash-Lite |
API keys are stored in localStorage only — never sent to or stored on the server.
🔌 Roblox Studio Plugin
A production-ready single-file plugin is included.
Installation
Copy
runtime/roblox-studio-plugin/GamedevAllInOne.server.luato your Plugins folder:Windows:
%LOCALAPPDATA%\Roblox\Plugins\Mac:
~/Documents/Roblox/Plugins/
Restart Roblox Studio
Enable: Game Settings > Security > Allow HTTP Requests = ON
Start the server with
npm run devPlugin auto-connects on load
Plugin Features
31 command handlers (script CRUD, instance CRUD, physics, raycast)
Auto-handshake with bridge on startup
HTTP long-poll command loop with
pcall-wrapped requestsToolbar button to start/stop runtime
🌉 Bridge Architecture
Engine | Protocol | Port | Reconnect | Plugin |
Roblox | HTTP long-poll |
| N/A | Luau plugin (included) |
Unity | TCP socket |
| Auto | C# EditorWindow |
Unreal | TCP socket |
| Auto | C++ Plugin |
Blender | TCP socket |
| Auto | Python Addon |
All bridges bind to
127.0.0.1only. TCP bridges auto-reconnect with configurable intervals.
⚙️ Configuration
Environment Variables
Variable | Default | Description |
|
| Dashboard HTTP port |
|
| Set |
|
| Roblox Luau bridge port |
|
| Unity TCP bridge port |
|
| Unreal TCP bridge port |
|
| Blender TCP bridge port |
🔒 Security
Loopback only — all bridges bind to
127.0.0.1Host validation — requests with invalid Host headers are rejected
Origin-restricted CORS — only localhost origins permitted
Body size limits — 1 MiB max on Luau bridge, 64 KiB on dashboard API
Input validation — Zod schemas on all bridge endpoints
No server-side secrets — API keys live in browser localStorage only
Graceful degradation — port conflicts disable individual services without crashing
🛠 Development
npm run dev # Start with tsx (hot reload)
npm run build # TypeScript compile + copy dashboard
npm start # Production mode
npm test # Run testsProject Structure
src/
├── index.ts # Entry point + graceful shutdown
├── version.ts # NAME, VERSION constants
├── server/
│ └── create-server.ts # McpServer + 12 tool module registration
├── connectors/
│ ├── shared/tcp-bridge.ts # Shared TCP bridge (Unity/Unreal/Blender)
│ ├── roblox/index.ts # Roblox detection + command dispatch
│ ├── luau/bridge.ts # HTTP long-poll bridge (hardened)
│ ├── unity/index.ts # Unity detection + TCP bridge
│ ├── unreal/index.ts # Unreal detection + TCP bridge
│ └── blender/index.ts # Blender detection + TCP bridge
├── tools/
│ ├── foundation.ts # 4 foundation tools
│ ├── roblox*.ts # 20 Roblox tools (5 files)
│ ├── unity*.ts # 15 Unity tools (2 files)
│ ├── unreal*.ts # 15 Unreal tools (2 files)
│ └── blender*.ts # 13 Blender tools (2 files)
└── web/
├── server.ts # Dashboard HTTP + SSE + Chat API
├── llm-proxy.ts # Multi-provider LLM with tool execution
└── dashboard.html # Single-file frontend (dark theme)
runtime/
└── roblox-studio-plugin/
└── GamedevAllInOne.server.lua # Production-ready Studio plugin🤝 Contributing
Contributions are welcome! Here's how to get started:
Fork the repository
Create a feature branch:
git checkout -b feat/amazing-featureCommit your changes:
git commit -m 'feat: add amazing feature'Push to the branch:
git push origin feat/amazing-featureOpen a Pull Request
Areas We'd Love Help With
🎮 Engine plugins — C# EditorWindow for Unity, C++ plugin for Unreal, Python addon for Blender
🧪 Tests — unit tests, integration tests, E2E bridge tests
📚 Docs — tutorials, video walkthroughs, example prompts
🌐 i18n — translations for the dashboard UI
🔧 New tools — animation, audio, terrain, lighting tools per engine
📚 Upstream References
Engine | Project | License |
Roblox |
| MIT |
Roblox |
| MIT |
Roblox |
| Official |
Unity |
| MIT |
Unity |
| MIT |
Unreal |
| MIT |
Unreal |
| MIT |
Blender |
| MIT |
Blender |
| MIT |
Physics |
| — |
📄 License
AGPL-3.0-only — see LICENSE for details.
Improvements to the server must remain open source
Networked or hosted variants must not become closed forks
MIT and Apache-2.0 upstream code adapted with attribution preserved
If this project helps your game development workflow, give it a ⭐
Made with ❤️ by the open-source community
Available Tools
78 toolsblender_add_constraintBlender Add Rigid Body ConstraintB
Add a rigid body constraint between two objects in Blender (Fixed, Point, Hinge, Slider, Piston, Generic, Motor).
| Name | Required | Description | Default |
|---|---|---|---|
| constraintType | No | Constraint type. | FIXED |
| object1Name | Yes | First object name. | |
| object2Name | Yes | Second object name. | |
| breakable | No | Whether the constraint can break. | |
| breakThreshold | No | Force threshold to break. | |
| disableCollisions | No | Disable collisions between constrained objects. | |
| properties | No | Additional constraint-specific properties. | |
| timeoutMs | No | Command timeout. |
blender_apply_forceBlender Apply ForceC
Apply an initial velocity or force field to a rigid body object in Blender by setting keyframe velocities or using force fields.
| Name | Required | Description | Default |
|---|---|---|---|
| objectName | Yes | Object name with rigid body. | |
| linearVelocity | No | Initial linear velocity. | |
| angularVelocity | No | Initial angular velocity. | |
| forceFieldType | No | Add a force field instead of direct velocity. | |
| forceStrength | No | Force field strength. | |
| timeoutMs | No | Command timeout. |
blender_bake_physicsBlender Bake PhysicsB
Bake rigid body physics simulation to keyframes for the specified frame range.
| Name | Required | Description | Default |
|---|---|---|---|
| frameStart | No | Start frame. | |
| frameEnd | No | End frame. | |
| selectedOnly | No | Bake only selected objects. | |
| timeoutMs | No | Command timeout (baking can be slow). |
blender_create_objectBlender Create ObjectB
Create a new mesh primitive or empty object in the Blender scene.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Object type to create. | |
| name | No | Optional object name. | |
| location | No | World location. | |
| scale | No | Scale. | |
| timeoutMs | No | Command timeout. |
blender_delete_objectBlender Delete ObjectB
Delete an object from the Blender scene by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Object name to delete. | |
| timeoutMs | No | Command timeout. |
blender_exportBlender ExportB
Export the scene or selected objects to a file format (FBX, OBJ, glTF, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Export format. | |
| outputPath | Yes | Output file path. | |
| selectedOnly | No | Export only selected objects. | |
| timeoutMs | No | Command timeout. |
blender_get_objectBlender Get ObjectA
Get detailed properties of a specific Blender object by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Object name in the scene. | |
| includeModifiers | No | Include modifier stack. | |
| includeMaterial | No | Include material slots. | |
| timeoutMs | No | Command timeout. |
blender_get_sceneBlender Get SceneA
Get the object hierarchy and metadata of the active Blender scene.
| Name | Required | Description | Default |
|---|---|---|---|
| includeTransforms | No | Include object transforms. | |
| timeoutMs | No | Command timeout. |
blender_run_pythonBlender Run PythonC
Execute arbitrary Python code in Blender's Python environment via bpy.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python code to execute. | |
| timeoutMs | No | Command timeout. |
blender_set_gravityBlender Set GravityB
Set the scene gravity vector in Blender. Default is (0, 0, -9.81).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Gravity X. | |
| y | No | Gravity Y. | |
| z | No | Gravity Z. | |
| timeoutMs | No | Command timeout. |
blender_set_materialBlender Set MaterialB
Assign or create a material on a Blender object with base color and metallic/roughness.
| Name | Required | Description | Default |
|---|---|---|---|
| objectName | Yes | Target object name. | |
| materialName | No | Material name. Empty to create a new one. | |
| baseColor | No | Base color RGB (0-1). | |
| metallic | No | Metallic value (0-1). | |
| roughness | No | Roughness value (0-1). | |
| timeoutMs | No | Command timeout. |
blender_set_transformBlender Set TransformB
Set the location, rotation, and/or scale of a Blender object.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Object name. | |
| location | No | World location. | |
| rotation | No | Euler rotation in radians. | |
| scale | No | Scale. | |
| timeoutMs | No | Command timeout. |
blender_setup_rigid_bodyBlender Setup Rigid BodyB
Add rigid body physics to a Blender object with type, shape, mass, friction, and damping settings. Mirrors poly-mcp/Blender-MCP-Server pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| objectName | Yes | Object name in the scene. | |
| bodyType | No | ACTIVE (affected by forces) or PASSIVE (static collider). | ACTIVE |
| collisionShape | No | Collision shape type. | CONVEX_HULL |
| mass | No | Object mass in kg. | |
| friction | No | Surface friction (0-1). | |
| restitution | No | Bounciness (0-1). | |
| linearDamping | No | Linear damping (0-1). | |
| angularDamping | No | Angular damping (0-1). | |
| useMargin | No | Use collision margin. | |
| collisionMargin | No | Collision margin distance. | |
| timeoutMs | No | Command timeout. |
doctorDoctorB
Run local prerequisite checks for the Roblox all-in-one MCP environment.
| Name | Required | Description | Default |
|---|---|---|---|
| includeManifest | No | Include manifest inspection in the report. |
inspect_projectInspect ProjectA
Inspect the current project manifest and connector/runtime capability state.
| Name | Required | Description | Default |
|---|---|---|---|
| includeCapabilities | No | Include live connector capability detection in the response. |
list_capabilitiesList CapabilitiesA
Return the current local capabilities for Roblox, Luau runtime, Blender, manifest state, and MCP workflow compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
project_initProject InitB
Create the local Roblox all-in-one MCP project manifest in the current workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | No | Optional display name for the project manifest. | |
| enableBlender | No | Enable Blender integration in the created manifest. | |
| enableLuau | No | Enable the Luau companion runtime in the created manifest. | |
| force | No | Overwrite an existing valid manifest. |
roblox_add_constraintRoblox Add ConstraintB
Add a physics constraint (SpringConstraint, HingeConstraint, RopeConstraint, WeldConstraint, etc.) between two attachments.
| Name | Required | Description | Default |
|---|---|---|---|
| constraintType | Yes | Type of constraint to create. | |
| parentPath | Yes | Instance path where the constraint will be parented. | |
| attachment0Path | Yes | Path to Attachment0. | |
| attachment1Path | No | Path to Attachment1 (empty for single-attachment constraints). | |
| properties | No | Additional properties to set on the constraint (e.g. {Stiffness: 100, Damping: 10}). | |
| waitForResponseMs | No | Command timeout. |
roblox_clone_instanceRoblox Clone InstanceB
Clone an instance and place the clone under a target parent.
| Name | Required | Description | Default |
|---|---|---|---|
| sourcePath | Yes | Full instance path of the source to clone. | |
| targetParentPath | Yes | Full instance path of the clone's parent. | |
| newName | No | Optional new name for the clone. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_create_instanceRoblox Create InstanceC
Create a new Roblox instance of a given class under a parent path.
| Name | Required | Description | Default |
|---|---|---|---|
| className | Yes | Roblox class name (e.g. Part, Script, Model, Folder). | |
| parentPath | Yes | Full instance path of the parent (e.g. Workspace, ServerScriptService). | |
| name | No | Name for the new instance. | |
| properties | No | Properties to set on the new instance. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_create_instances_bulkRoblox Create Instances BulkB
Create multiple Roblox instances in a single batch operation.
| Name | Required | Description | Default |
|---|---|---|---|
| instances | Yes | List of instances to create. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_create_workspace_partRoblox Create Workspace PartC
Create a Part in Workspace through the Studio-side Luau runtime boundary.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the new Workspace Part. | |
| anchored | No | Whether the new part should be anchored. | |
| position | No | Workspace position for the new part. | |
| size | No | Size for the new part. | |
| waitForResponseMs | No | How long to wait for a runtime response before returning queued status. |
roblox_delete_instanceRoblox Delete InstanceA
Delete (Destroy) an instance at the given path in Roblox Studio.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path to delete. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_edit_script_linesRoblox Edit Script LinesB
Replace a substring in a script's source using old_string/new_string matching, similar to search-and-replace.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path of the script. | |
| oldString | Yes | Exact text to find in the script source. | |
| newString | Yes | Replacement text. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_get_file_treeRoblox Get File TreeA
Get a hierarchical tree view of the game's instance structure, useful for understanding project layout.
| Name | Required | Description | Default |
|---|---|---|---|
| rootPath | No | Root instance path for the tree. | game |
| maxDepth | No | Maximum tree depth. | |
| includeProperties | No | Include basic properties (ClassName) in each node. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_get_instance_childrenRoblox Get Instance ChildrenB
List the direct children of a Roblox instance, returning their names and class names.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path (e.g. Workspace). | |
| includeDescendants | No | If true, recursively list all descendants instead of only direct children. | |
| maxDepth | No | Maximum recursion depth when includeDescendants is true. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_get_instance_propertiesRoblox Get Instance PropertiesA
Get all readable properties of a Roblox instance at the given path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path (e.g. Workspace.MyPart). | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_get_script_sourceRoblox Get Script SourceA
Read the source code of a Script, LocalScript, or ModuleScript by its full instance path in Roblox Studio.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path of the script (e.g. ServerScriptService.MyScript). | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_grep_scriptsRoblox Grep ScriptsB
Search all scripts in the game for a Lua pattern or plain text match. Returns matching script paths and line content.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Search pattern (Lua pattern syntax supported). | |
| rootPath | No | Root instance path to search within. | game |
| caseSensitive | No | Whether the search is case-sensitive. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_import_assetRoblox Import AssetA
Import a public asset from the Roblox Creator Store and place it under a parent. If a ROBLOX_COOKIE is provided in the .env file, it will automatically claim/add the asset to your inventory before importing in Studio.
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | Yes | The asset ID to import. | |
| parentPath | Yes | Full instance path of the parent to insert the asset into. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_inject_codeRoblox Inject CodeA
Inject/append a block of Luau code to the top or bottom of an existing Roblox script.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path of the script. | |
| codeBlock | Yes | Block of Luau code to inject. | |
| position | No | Where to inject the code (top or bottom of the script). | bottom |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_raycastRoblox RaycastB
Cast a ray in Roblox 3D space and return hit information.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | Ray origin point. | |
| direction | Yes | Ray direction vector. | |
| maxDistance | No | Maximum ray distance. | |
| filterType | No | Raycast filter type. | Exclude |
| filterPaths | No | Instance paths to include/exclude from raycast. | |
| waitForResponseMs | No | Command timeout. |
roblox_read_output_logsRoblox Read Output LogsA
Retrieve recent console outputs and error logs from Roblox Studio for debugging.
| Name | Required | Description | Default |
|---|---|---|---|
| maxLines | No | Maximum number of log lines to retrieve. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_reparent_instanceRoblox Reparent InstanceB
Move an instance to a new parent in the Roblox hierarchy.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path to move. | |
| newParentPath | Yes | Full instance path of the new parent. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_run_codeRoblox Run CodeC
Send a Luau code execution request through the Studio-side companion runtime boundary.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Luau code to execute through the Roblox runtime bridge. | |
| mode | No | Execution mode for the runtime request. | edit |
| waitForResponseMs | No | How long to wait for a runtime response before returning queued status. |
roblox_search_asset3dRoblox Search 3D AssetA
Search specifically for 3D Models, props, meshes, and visual assets (e.g. tree, rock, building, car) in the Roblox Creator Store.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to search for (e.g. 'oak tree', 'mossy rock', 'sport car'). | |
| limit | No | Maximum number of search results (default 10). |
roblox_search_decalRoblox Search DecalA
Search for 2D images, decals, textures, and sprites (e.g. wood texture, logo, UI icon, sword decal) in the Roblox Creator Store. Returns direct PNG image URLs for rendering in chat.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to search for (e.g. 'iron texture', 'blood splatter', 'cat face'). | |
| limit | No | Maximum number of search results (default 10). |
roblox_search_gamesystemRoblox Search Game SystemA
Search specifically for complete game systems, backend services, economy engines, or data stores (e.g. inventory system, shop system, datastore save, leaderstats, quest system) in the Roblox Creator Store.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to search for (e.g. 'inventory system', 'shop gui system', 'datastore save'). | |
| limit | No | Maximum number of search results (default 10). |
roblox_search_instancesRoblox Search InstancesC
Search for instances by name, class, or property value under a root path.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (matched against instance Name). | |
| className | No | Filter by ClassName. | |
| rootPath | No | Root instance path to search within. | game |
| maxResults | No | Maximum number of results to return. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_search_mechanicsRoblox Search MechanicsA
Search specifically for gameplay mechanics, movement systems, physics controllers, and interactive scripts (e.g. double jump, grappling hook, sword combat, gun system) in the Roblox Creator Store.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to search for (e.g. 'double jump', 'grappling hook', 'dash mechanic'). | |
| limit | No | Maximum number of search results (default 10). |
roblox_search_toolboxRoblox Search Toolbox (General)C
Search for free assets in the Roblox Creator Store/Toolbox with category filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to search for (e.g. 'car', 'tree', 'sword'). | |
| category | No | Filter the search type (Model3D for visuals, Mechanics for scripts/movement, GameSystem for saving/shops, UserInterface for UI/GUI templates, Utility for helpers, All for general). | All |
| limit | No | Maximum number of search results (default 10). |
roblox_search_userinterfaceRoblox Search User InterfaceA
Search specifically for UI/GUI templates, screens, health bars, inventory layouts, HUDs, or main menus in the Roblox Creator Store.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to search for (e.g. 'health bar UI', 'custom chat GUI', 'modern main menu'). | |
| limit | No | Maximum number of search results (default 10). |
roblox_search_utilityRoblox Search UtilityA
Search specifically for developer utility modules, helper libraries, debugging tools, or signal classes (e.g. promise, maid, spring module, tween helper) in the Roblox Creator Store.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword to search for (e.g. 'maid class', 'spring module', 'tween utility'). | |
| limit | No | Maximum number of search results (default 10). |
roblox_set_gravityRoblox Set GravityB
Set the Workspace gravity vector in Roblox Studio. Default is (0, -196.2, 0).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Gravity X component. | |
| y | No | Gravity Y component. | |
| z | No | Gravity Z component. | |
| waitForResponseMs | No | Command timeout. |
roblox_set_physicsRoblox Set PhysicsB
Enable or disable physics on a BasePart by setting Anchored and optionally applying velocity.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path of the BasePart. | |
| anchored | Yes | True to anchor (disable physics), false to unanchor (enable physics). | |
| velocity | No | Initial AssemblyLinearVelocity when unanchoring. | |
| angularVelocity | No | Initial AssemblyAngularVelocity. | |
| waitForResponseMs | No | Command timeout. |
roblox_set_propertyRoblox Set PropertyB
Set one or more properties on a Roblox instance.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path. | |
| properties | Yes | Key-value pairs of properties to set (e.g. { Name: 'Foo', Anchored: true }). | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_set_script_sourceRoblox Set Script SourceB
Replace the entire source code of a Script, LocalScript, or ModuleScript in Roblox Studio.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path of the script. | |
| source | Yes | New source code for the script. | |
| waitForResponseMs | No | How long to wait for a runtime response. |
roblox_simulate_physicsRoblox Simulate PhysicsB
Apply an impulse or force to a BasePart to simulate physics interaction.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full instance path of the BasePart. | |
| impulse | No | Impulse vector to apply (instantaneous). | |
| force | No | Continuous force vector (via VectorForce). | |
| torque | No | Torque vector to apply. | |
| atPosition | No | World position to apply impulse at. | |
| waitForResponseMs | No | Command timeout. |
unity_add_componentUnity Add ComponentB
Add a component to a GameObject in the Unity scene.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path of the GameObject. | |
| component | Yes | Component type to add (e.g. 'Rigidbody', 'BoxCollider'). | |
| timeoutMs | No | Command timeout. |
unity_add_jointUnity Add JointB
Add a physics joint component (FixedJoint, HingeJoint, SpringJoint, CharacterJoint, ConfigurableJoint) to a GameObject.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | GameObject path. | |
| jointType | Yes | Joint type. | |
| connectedBodyPath | No | Path to the connected Rigidbody GameObject. Empty for world anchor. | |
| breakForce | No | Force threshold to break the joint. | |
| breakTorque | No | Torque threshold to break the joint. | |
| properties | No | Additional joint-specific properties. | |
| timeoutMs | No | Command timeout. |
unity_add_rigidbodyUnity Add RigidbodyB
Add a Rigidbody component to a GameObject with mass, drag, constraints, and collision detection settings.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | GameObject path. | |
| mass | No | Rigidbody mass. | |
| drag | No | Linear drag. | |
| angularDrag | No | Angular drag. | |
| useGravity | No | Whether gravity affects this body. | |
| isKinematic | No | Kinematic mode (not affected by forces). | |
| freezePositionX | No | ||
| freezePositionY | No | ||
| freezePositionZ | No | ||
| freezeRotationX | No | ||
| freezeRotationY | No | ||
| freezeRotationZ | No | ||
| collisionDetection | No | Collision detection mode. | Discrete |
| timeoutMs | No | Command timeout. |
unity_apply_forceUnity Apply ForceC
Apply a force, impulse, or torque to a GameObject's Rigidbody.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | GameObject path with Rigidbody. | |
| force | No | Force vector. | |
| torque | No | Torque vector. | |
| forceMode | No | Force application mode. | Force |
| atPosition | No | World position to apply force at. | |
| timeoutMs | No | Command timeout. |
unity_create_gameobjectUnity Create GameObjectA
Create a new GameObject in the Unity scene under a parent path.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the new GameObject. | |
| parentPath | No | Parent GameObject path. Empty for scene root. | |
| primitiveType | No | Primitive type to create. | Empty |
| timeoutMs | No | Command timeout. |
unity_delete_gameobjectUnity Delete GameObjectB
Delete a GameObject from the Unity scene by path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path of the GameObject to delete. | |
| timeoutMs | No | Command timeout. |
unity_get_gameobjectUnity Get GameObjectC
Get properties of a specific GameObject by path in the Unity scene.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path of the GameObject (e.g. 'Canvas/Panel/Button'). | |
| includeComponents | No | Include component list. | |
| timeoutMs | No | Command timeout. |
unity_get_hierarchyUnity Get HierarchyB
Get the full scene hierarchy tree from the active Unity scene.
| Name | Required | Description | Default |
|---|---|---|---|
| rootPath | No | Optional root GameObject path to start from. Empty for full scene. | |
| depth | No | Maximum hierarchy depth. | |
| timeoutMs | No | Command timeout. |
unity_get_script_sourceUnity Get Script SourceB
Read the source code of a C# script file from the Unity project's Assets folder.
| Name | Required | Description | Default |
|---|---|---|---|
| scriptPath | Yes | Relative path from Assets/ (e.g. 'Scripts/PlayerController.cs'). | |
| timeoutMs | No | Command timeout. |
unity_play_modeUnity Play ModeA
Control Unity Editor play mode — enter, exit, or pause.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Play mode action. | |
| timeoutMs | No | Command timeout. |
unity_raycastUnity RaycastB
Cast a ray in Unity 3D space using Physics.Raycast and return hit info.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | Ray origin. | |
| direction | Yes | Ray direction. | |
| maxDistance | No | Maximum ray distance. | |
| layerMask | No | Layer mask (-1 for all layers). | |
| timeoutMs | No | Command timeout. |
unity_set_component_propertyUnity Set Component PropertyC
Set a property on a component attached to a GameObject in Unity.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path of the GameObject. | |
| component | Yes | Component type name (e.g. 'Transform', 'MeshRenderer'). | |
| property | Yes | Property name. | |
| value | No | Property value (JSON serializable). | |
| timeoutMs | No | Command timeout. |
unity_set_gravityUnity Set GravityB
Set the global Physics gravity vector in Unity. Default is (0, -9.81, 0).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Gravity X. | |
| y | No | Gravity Y. | |
| z | No | Gravity Z. | |
| timeoutMs | No | Command timeout. |
unity_set_transformUnity Set TransformB
Set the position, rotation, and/or scale of a GameObject's Transform.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Full path of the GameObject. | |
| position | No | World position. | |
| rotation | No | Euler rotation in degrees. | |
| scale | No | Local scale. | |
| timeoutMs | No | Command timeout. |
unreal_add_physics_constraintUnreal Add Physics ConstraintC
Add a UPhysicsConstraintComponent between two actors for joints, hinges, or locks.
| Name | Required | Description | Default |
|---|---|---|---|
| ownerPath | Yes | Actor path to own the constraint. | |
| targetPath | No | Target actor path. Empty for world constraint. | |
| constraintProfile | No | Constraint profile preset. | Free |
| breakable | No | Whether the constraint can break. | |
| breakThreshold | No | Force threshold to break (0 = unbreakable). | |
| properties | No | Additional constraint properties. | |
| timeoutMs | No | Command timeout. |
unreal_apply_forceUnreal Apply ForceB
Apply a force or impulse to an actor's physics-enabled component.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Actor path. | |
| component | No | Component name. Empty for root. | |
| force | No | Force vector (continuous). | |
| impulse | No | Impulse vector (instantaneous). | |
| torque | No | Torque vector. | |
| atLocation | No | World location to apply force at. | |
| velocityChange | No | Apply as velocity change (ignores mass). | |
| timeoutMs | No | Command timeout. |
unreal_destroy_actorUnreal Destroy ActorA
Destroy an actor in the current Unreal level by path.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Actor path to destroy. | |
| timeoutMs | No | Command timeout. |
unreal_get_actorUnreal Get ActorB
Get properties and components of an actor by path in the Unreal level.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Actor path in the world (e.g. '/Game/Maps/Main.Main:PersistentLevel.PlayerStart'). | |
| includeComponents | No | Include component details. | |
| timeoutMs | No | Command timeout. |
unreal_get_blueprintUnreal Get BlueprintB
Inspect a Blueprint asset, listing its components, variables, and functions.
| Name | Required | Description | Default |
|---|---|---|---|
| assetPath | Yes | Blueprint asset path (e.g. '/Game/BP/BP_Enemy'). | |
| timeoutMs | No | Command timeout. |
unreal_get_viewport_screenshotUnreal Get Viewport ScreenshotB
Capture a screenshot of the active Unreal Editor viewport.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Screenshot width. | |
| height | No | Screenshot height. | |
| timeoutMs | No | Command timeout. |
unreal_get_world_outlinerUnreal Get World OutlinerB
Get the actor hierarchy from the current Unreal Engine level/world.
| Name | Required | Description | Default |
|---|---|---|---|
| rootPath | No | Optional root actor path. Empty for full world. | |
| depth | No | Maximum hierarchy depth. | |
| timeoutMs | No | Command timeout. |
unreal_play_modeUnreal Play ModeB
Control Unreal Editor PIE (Play In Editor) mode.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | PIE action. | |
| timeoutMs | No | Command timeout. |
unreal_raycastUnreal RaycastC
Perform a line trace (raycast) in Unreal and return hit results.
| Name | Required | Description | Default |
|---|---|---|---|
| start | Yes | Trace start point. | |
| end | Yes | Trace end point. | |
| traceChannel | No | Trace channel. | Visibility |
| traceComplex | No | Trace against complex collision. | |
| timeoutMs | No | Command timeout. |
unreal_run_pythonUnreal Run PythonB
Execute a Python script in the Unreal Editor Python environment.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python code to execute. | |
| timeoutMs | No | Command timeout. |
unreal_set_actor_propertyUnreal Set Actor PropertyC
Set a property on an actor or one of its components in Unreal.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Actor path. | |
| component | No | Component name. Empty for actor-level property. | |
| property | Yes | Property name. | |
| value | No | Property value (JSON serializable). | |
| timeoutMs | No | Command timeout. |
unreal_set_actor_transformUnreal Set Actor TransformB
Set the location, rotation, and/or scale of an actor in the Unreal level.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Actor path. | |
| location | No | World location. | |
| rotation | No | Rotation (pitch/yaw/roll). | |
| scale | No | Scale. | |
| timeoutMs | No | Command timeout. |
unreal_set_gravityUnreal Set GravityB
Set the world gravity override in Unreal Engine. Default is (0, 0, -980).
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Gravity X. | |
| y | No | Gravity Y. | |
| z | No | Gravity Z. | |
| timeoutMs | No | Command timeout. |
unreal_set_simulate_physicsUnreal Set Simulate PhysicsB
Enable or disable physics simulation on an actor's primitive component.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Actor path. | |
| component | No | Component name. Empty for root component. | |
| simulate | Yes | True to enable physics simulation, false to disable. | |
| mass | No | Override mass in kg. | |
| linearDamping | No | Linear damping. | |
| angularDamping | No | Angular damping. | |
| enableGravity | No | Enable gravity on this component. | |
| timeoutMs | No | Command timeout. |
unreal_spawn_actorUnreal Spawn ActorB
Spawn a new actor in the current Unreal level from a class or blueprint path.
| Name | Required | Description | Default |
|---|---|---|---|
| className | Yes | Actor class or blueprint path (e.g. 'StaticMeshActor', '/Game/BP/BP_Enemy.BP_Enemy_C'). | |
| label | No | Optional actor label. | |
| location | No | Spawn location. | |
| rotation | No | Spawn rotation. | |
| timeoutMs | No | Command timeout. |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
78 tool updates
v0.1.0- First observed
blender_add_constraint - First observed
blender_apply_force - First observed
blender_bake_physics - First observed
blender_create_object - First observed
blender_delete_object - First observed
blender_export - First observed
blender_get_object - First observed
blender_get_scene - First observed
blender_run_python - First observed
blender_set_gravity - First observed
blender_set_material - First observed
blender_set_transform - First observed
blender_setup_rigid_body - First observed
doctor - First observed
inspect_project - First observed
list_capabilities - First observed
project_init - First observed
roblox_add_constraint - First observed
roblox_clone_instance - First observed
roblox_create_instance - First observed
roblox_create_instances_bulk - First observed
roblox_create_workspace_part - First observed
roblox_delete_instance - First observed
roblox_edit_script_lines - First observed
roblox_get_file_tree - First observed
roblox_get_instance_children - First observed
roblox_get_instance_properties - First observed
roblox_get_script_source - First observed
roblox_grep_scripts - First observed
roblox_import_asset - First observed
roblox_inject_code - First observed
roblox_raycast - First observed
roblox_read_output_logs - First observed
roblox_reparent_instance - First observed
roblox_run_code - First observed
roblox_search_asset3d - First observed
roblox_search_decal - First observed
roblox_search_gamesystem - First observed
roblox_search_instances - First observed
roblox_search_mechanics - First observed
roblox_search_toolbox - First observed
roblox_search_userinterface - First observed
roblox_search_utility - First observed
roblox_set_gravity - First observed
roblox_set_physics - First observed
roblox_set_property - First observed
roblox_set_script_source - First observed
roblox_simulate_physics - First observed
unity_add_component - First observed
unity_add_joint - First observed
unity_add_rigidbody - First observed
unity_apply_force - First observed
unity_create_gameobject - First observed
unity_delete_gameobject - First observed
unity_execute_menu_item - First observed
unity_get_gameobject - First observed
unity_get_hierarchy - First observed
unity_get_script_source - First observed
unity_play_mode - First observed
unity_raycast - First observed
unity_set_component_property - First observed
unity_set_gravity - First observed
unity_set_transform - First observed
unreal_add_physics_constraint - First observed
unreal_apply_force - First observed
unreal_destroy_actor - First observed
unreal_get_actor - First observed
unreal_get_blueprint - First observed
unreal_get_viewport_screenshot - First observed
unreal_get_world_outliner - First observed
unreal_play_mode - First observed
unreal_raycast - First observed
unreal_run_python - First observed
unreal_set_actor_property - First observed
unreal_set_actor_transform - First observed
unreal_set_gravity - First observed
unreal_set_simulate_physics - First observed
unreal_spawn_actor
TDQS
Scored across 78 tools
Each tool has a domain prefix (blender_, roblox_, unity_, unreal_) making it easy to distinguish which engine it targets. Within each domain, tools target distinct actions (create, delete, get, set, search, etc.) with clear, non-overlapping purposes. Only a few general environment tools lack prefixes, but they are clearly separate from engine-specific tools.
The vast majority of tools follow a consistent domain_verb_noun pattern (e.g., blender_create_object, unity_set_transform). A few general tools (doctor, inspect_project, list_capabilities, project_init) do not include a prefix, which is a minor deviation from the pattern but still understandable.
78 tools is high for a single MCP server, but the scope covers four game engines with many common operations. Roblox has a large number (35), including many search tools that could be consolidated. While the count is borderline, it is reasonable for an all-in-one server, though it could be streamlined.
Each engine provides core CRUD operations, physics, raycasts, and environment control. Roblox is especially complete with script management and Studio integration. Minor gaps exist, such as missing animation tools in Blender and lack of component removal in Unity, but the overall coverage is good for basic gamedev workflows.
Related MCP Connectors
Turn prompts into production-ready game assets: animated characters, textures, terrain, VFX, HUD.
Discover AI tools for game development — 100+ tools indexed by engine, task, and pricing.
Make games with AI: one MCP server that connects your agent to Unity, Unreal and Godot editors.
AI game maker: build, run, screenshot and play-test Godot and retro console games in a live project
Related MCP Servers
- AlicenseDqualityBmaintenanceEnables AI assistants to control Unreal Engine via Remote Control API for game development automation, including asset management, actor control, level editing, animation, physics, visual effects, and cinematics creation through natural language.11,163 npm1,026MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query and control the Unity Editor, supporting scene management, GameObject manipulation, asset browsing, play mode control, and real-time editor operations through 52+ tools.1MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI agents to interact with and control Roblox Studio instances in real-time through the Model Context Protocol. It provides a unified tool for building, scripting, and manipulating 3D worlds with over 90 operations including instance management and Luau scripting.14 npm-
- FlicenseBqualityAmaintenanceProvides AI assistants with comprehensive control over Unity Hub and Unity Editor through over 200 specialized tools for project management and scene manipulation. It enables users to perform complex tasks like script creation, asset management, and project builds using natural language commands.80219 npm534-