UnrealMCP Plugin
An unofficial MCP server plugin for remote control of Unreal Engine using AI tools.
UnrealMCP Plugin
VERY WIP REPO
I'm working on adding more tools now and cleaning up the codebase, I plan to allow for easy tool extension outside the main plugin
This is very much a work in progress, and I need to clean up a lot of stuff!!!!!
Also, I only use windows, so I don't know how this would be setup for mac/unix
Overview
UnrealMCP is an Unofficial Unreal Engine plugin designed to control Unreal Engine with AI tools. It implements a Machine Control Protocol (MCP) within Unreal Engine, allowing external AI systems to interact with and manipulate the Unreal environment programmatically.
I only just learned about MCP a few days ago, so I'm not that familiar with it, I'm still learning so things might be initially pretty rough. I've implemented this using https://github.com/ahujasid/blender-mcp as a reference, which relies on claude for desktop. It may or may not work with other models, if you experiment with any, please let me know!
⚠️ DISCLAIMER
This plugin allows AI agents to directly modify your Unreal Engine project. While it can be a powerful tool, it also comes with risks:
- AI agents may make unexpected changes to your project
- Files could be accidentally deleted or modified
- Project settings could be altered
- Assets could be overwritten
IMPORTANT SAFETY MEASURES:
- Always use source control (like Git or Perforce) with your project
- Make regular backups of your project
- Test the plugin in a separate project first
- Review changes before committing them
By using this plugin, you acknowledge that:
- You are solely responsible for any changes made to your project
- The plugin author is not responsible for any damage, data loss, or issues caused by AI agents
- You use this plugin at your own risk
Features
- TCP server implementation for remote control of Unreal Engine
- JSON-based command protocol for AI tools integration
- Editor UI integration for easy access to MCP functionality
- Comprehensive scene manipulation capabilities
- Python companion scripts for client-side interaction
Roadmap
These are what I have in mind for development as of 3/14/2025 I'm not sure what's possible yet, in theory anything, but it depends on how good the integrated LLM is at utilizing these tools.
- Basic operations working
- Python working
- Materials
- User Extensions (in progress)
- Asset tools
- Blueprints
- Niagara VFX
- Metasound
- Landscape (I might hold off on this because Epic has mentioned they are going to be updating the landscape tools)
- Modeling Tools
- PCG
Requirements
- Unreal Engine 5.5 (I have only tested on this version, may work with earlier, but no official support)
- C++ development environment configured for Unreal Engine
- Python 3.7+ for client-side scripting
- Model to run the commands, in testing I've been using Claude for Desktop https://claude.ai/download
Installation
-
Clone this repository into your Unreal project's
Pluginsdirectory:git clone https://github.com/kvick-games/UnrealMCP.git Plugins/UnrealMCPThe project path should match this pattern like so: ...\UNREAL_PROJECT\Plugins\UnrealMCP\
-
Regenerate your project files (right-click your .uproject file and select "Generate Visual Studio project files")
-
Build the project in whatever IDE you use, I use Rider, Visual Studio works (working on releases now)
-
Open your project and enable the plugin in Edit > Plugins > UnrealMCP
-
Enable Python plugins in Unreal
-
Run setup_unreal_mcp.bat (I probably need to make some fixes to this file as more people try it out)
-
Currently I've only tested with Claude for Desktop so follow the instructions below to continue
With Claude for Desktop
You will need to find your installation directory for claude for desktop. Find claude_desktop_config.json and add an entry and make it look like so:
{
"mcpServers": {
"unreal": {
"command": "C:\\UnrealMCP_Project\\Plugins\\UnrealMCP\\MCP\\run_unreal_mcp.bat",
"args": []
}
}
}
IN THE COMMAND FIELD PUT YOUR PATH TO YOUR PLUGIN DIRECTORY POINTED TO THE SCRIPT: "run_unreal_mcp.bat" This script is located within ../plugin_root_directory/MCP/run_unreal_mcp.bat
You can refer to this link for more info: https://modelcontextprotocol.io/quickstart/user
To find the path to your claude for desktop install you can go into settings and click 'Edit Config' On my Windows PC the path is: C:\Users\USERNAME\AppData\Roaming\Claude
Usage
In Unreal Editor
Once the plugin is enabled, you'll find MCP controls in the editor toolbar button.
The TCP server can be started/stopped from here. Check the output log under log filter LogMCP for extra information.
Once the server is confirmed up and running from the editor. Open Claude for Desktop, ensure that the tools have successfully enabled, ask Claude to work in unreal.
Currently only basic operations are supported, creating objects, modfiying their transforms, getting scene info, and running python scripts. Claude makes a lot of errors with unreal python as I believe there aren't a ton of examples for it, but let it run and it will usually figure things out. I would really like to improve this aspect of how it works but it's low hanging fruit for adding functionality into unreal.
Client-Side Integration
Use the provided Python scripts in the MCP directory to connect to and control your Unreal Engine instance:
from unreal_mcp_client import UnrealMCPClient
# Connect to the Unreal MCP server
client = UnrealMCPClient("localhost", 13377)
# Example: Create a cube in the scene
client.create_object(
class_name="StaticMeshActor",
asset_path="/Engine/BasicShapes/Cube.Cube",
location=(0, 0, 100),
rotation=(0, 0, 0),
scale=(1, 1, 1),
name="MCP_Cube"
)
Command Reference
The plugin supports various commands for scene manipulation:
get_scene_info: Retrieve information about the current scenecreate_object: Spawn a new object in the scenedelete_object: Remove an object from the scenemodify_object: Change properties of an existing objectexecute_python: Run Python commands in Unreal's Python environment- And more to come...
Refer to the documentation in the Docs directory for a complete command reference.
Security Considerations
- The MCP server accepts connections from any client by default
- Limit server exposure to localhost for development
- Validate all incoming commands to prevent injection attacks
Troubleshooting
- Ensure Unreal Engine is running with the MCP plugin.
- Check logs in Claude for Desktop for stderr output.
- Reach out on the discord, I just made it, but I will check it periodically Discord (Dreamatron Studios): https://discord.gg/abRftdSe
Project Structure
Source/UnrealMCP/: Core plugin implementationPrivate/: Internal implementation filesPublic/: Public header files
Content/: Plugin assetsMCP/: Python client scripts and examplesResources/: Icons and other resources
License
MIT License
Copyright (c) 2025 kvick
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Credits
- Created by: kvick
- X: @kvickart
Thank you to testers!!!
-
@sidahuj for the inspriation
Contributing
Contributions are welcome, but I will need some time to wrap my head around things and cleanup first, lol
เซิร์ฟเวอร์ที่เกี่ยวข้อง
Alpha Vantage MCP Server
ผู้สนับสนุนAccess financial market data: realtime & historical stock, ETF, options, forex, crypto, commodities, fundamentals, technical indicators, & more
IDA Pro
Interact with IDA Pro for reverse engineering and binary analysis tasks.
Laburen MCP Server
A template for deploying a remote, authentication-free MCP server on Cloudflare Workers.
LSP MCP Server
Integrates with Language Server Protocol (LSP) to provide features like code completion, diagnostics, and hover information.
mcp-diagnostics
All-in-one website diagnostics: DNS, SSL certs, HTTP headers, security audit (A-F grade), WHOIS, tech stack detection. No API keys needed.
Markdown Sidecar MCP Server
An MCP server to access markdown documentation for locally installed NPM, Go, and PyPi packages.
BCMS MCP
Give me a one - two sentence description of the BCMS MCP # MCP The BCMS Model Context Protocol (MCP) integration enables AI assistants like Claude, Cursor, and other MCP-compatible tools to interact directly with your BCMS content. This allows you to create, read, and update content entries, manage media files, and explore your content structure—all through natural language conversations with AI. ## What is MCP? The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) is an open standard developed by Anthropic that allows AI applications to securely connect to external data sources and tools. With BCMS MCP support, you can leverage AI assistants to: - Query and explore your content structure - Create new content entries with AI-generated content - Update existing entries - Manage your media library - Get intelligent suggestions based on your content model --- ## Getting Started ### Prerequisites 1. A BCMS account with an active instance 2. An MCP key with appropriate permissions 3. An MCP-compatible client (Claude Desktop, Cursor, or any MCP client) ### Step 1: Create an MCP Key 1. Navigate to your BCMS dashboard 2. Go to Settings → MCP 3. Click Create MCP Key 4. Configure the permissions for templates you want the AI to access:GET: Read entries 5. POST: Create entries 6. PUT: Update entries 7. DELETE: Delete entries Note: Right now, MCP only supports creating, reading and updating content. ### Step 2: Configure Your MCP Client You can find full instructions for integrating BCMS with your AI tools right inside BCMS, on the MCP page. But in general, installing BCMS MCP works in a standard way: ``` { "mcpServers": { "bcms": { "url": "https://app.thebcms.com/api/v3/mcp?mcpKey=YOUR_MCP_KEY" } } } ``` ## Available Tools Once connected, your AI assistant will have access to the following tools based on your MCP key permissions: ### Content Discovery #### list_templates_and_entries Lists all templates and their entries that you have access to. This is typically the first tool to call when exploring your BCMS content. Returns: - Template IDs, names, and slugs - Entry IDs with titles and slugs for each language Example prompt: "Show me all the templates and entries in my BCMS" --- ### Entry Management #### list_entries_for_{templateId} Retrieves all entries for a specific template with full content data. A separate tool is generated for each template you have access to. Returns: - Complete entry data including all meta fields - Content in all configured languages - Entry statuses Example prompt: "List all blog posts from my Blog template" --- #### create_entry_for_{templateId} Creates a new entry for a specific template. The input schema is dynamically generated based on your template's field structure. Input: - statuses: Array of status assignments per language - meta: Array of metadata for each language (title, slug, custom fields) - content: Array of content nodes for each language Example prompt: "Create a new blog post titled 'Getting Started with BCMS' with a brief introduction paragraph" --- #### update_entry_for_{templateId} Updates an existing entry for a specific language. Input: - entryId: The ID of the entry to update - lng: Language code (e.g., "en") - status: Optional status ID - meta: Updated metadata - content: Updated content nodes Example prompt: "Update the introduction paragraph of my 'Getting Started' blog post" --- ### Media Management #### list_all_media Lists all media files in your media library. Returns: - Media IDs, names, and types - File metadata (size, dimensions for images) - Parent directory information Example prompt: "Show me all images in my media library" --- #### list_media_dirs Lists the directory structure of your media library. Returns: - Hierarchical directory structure - Directory IDs and names Example prompt: "Show me the folder structure of my media library" --- #### create-media-directory Creates a new directory in your media library. Input: - name: Name of the directory - parentId: Optional parent directory ID (root if not specified) Example prompt: "Create a new folder called 'Blog Images' in my media library" --- #### request-upload-media-url Returns a URL you use to upload a file (for example via POST with multipart form data), which avoids pushing large binaries through the MCP tool payload. You still need a valid file name and MIME type when uploading, as described in the tool response. Availability: Only when the MCP key has Can mutate media enabled. Example prompt: “Give me an upload URL for a new hero image, then tell me how to upload it.” Input: - fileName: Name of the file with extension - fileData: Base64-encoded file data (with data URI prefix) - parentId: Optional parent directory ID Example prompt: "Upload this image to my Blog Images folder" --- ### Linking Tools #### get_entry_pointer_link Generates an internal BCMS link to an entry for use in content. Input: - entryId: The ID of the entry to link to Returns: - Internal link format: entry:{entryId}@*_{templateId}:entry Example prompt: "Get me the internal link for the 'About Us' page entry" --- #### get_media_pointer_link Generates an internal BCMS link to a media item for use in content. Input: - mediaId: The ID of the media item Returns: - Internal link format: media:{mediaId}@*_@*_:entry Example prompt: "Get the link for the hero image so I can use it in my blog post" --- ## Content Structure ### Entry Content Nodes When creating or updating entries, content is structured as an array of nodes. Supported node types include: Type Description paragraph Standard text paragraph heading Heading (h1-h6) bulletList Unordered list orderedList Numbered list listItem List item codeBlock Code block with syntax highlighting blockquote Quote block image Image node widget Custom widget with props ### Example Content Structure ``` { "content": [ { "lng": "en", "nodes": [ { "type": "heading", "attrs": { "level": 1 }, "content": [ { "type": "text", "text": "Welcome to BCMS" } ] }, { "type": "paragraph", "content": [ { "type": "text", "text": "This is your first paragraph." } ] } ] } ] } ``` ## Security & Permissions ### MCP Key Scopes Your MCP key controls what the AI can access: - Template Access: Only templates explicitly granted in the MCP key are visible - Operation Permissions: Each template can have independent GET/POST/PUT/DELETE permissions - Media Access: Media operations are controlled separately ### Best Practices 1. Principle of Least Privilege: Only grant the permissions needed for your use case 2. Separate Keys: Create different MCP keys for different purposes or team members 3. Regular Rotation: Periodically rotate your MCP keys ## Use Cases ### Content Creation Workflows Blog Post Creation "Create a new blog post about the benefits of headless CMS. Include an introduction, three main benefits with explanations, and a conclusion. Use the Blog template." Product Updates "Update the price field for all products in the Electronics category to apply a 10% discount" ### Content Exploration Content Audit "List all blog posts that don't have a featured image set" Translation Status "Show me which entries are missing German translations" ### Media Organization Library Cleanup "Show me all unused images in the media library" Folder Setup "Create folder structure for: Products > Categories > Electronics, Clothing, Home" ## Troubleshooting ### Common Issues #### "MCP key not found" - Verify your MCP key format: keyId.keySecret.instanceId - Ensure the MCP key hasn't been deleted or deactivated - Check that you're using the correct instance #### "MCP key does not have access to template" - Review your MCP key permissions in the dashboard - Ensure the required operation (GET/POST/PUT/DELETE) is enabled for the template #### Session Expired - MCP sessions may timeout after periods of inactivity - Simply start a new conversation to establish a fresh session ### Getting Help - Documentation: [thebcms.com/docs](https://thebcms.com/docs) - Support: [[email protected]](mailto:[email protected]) - Community: [Join BCMS Discord](https://discord.com/invite/SYBY89ccaR) for community support ## Technical Reference ### Endpoint POST https://app.thebcms.com/api/v3/mcp?mcpKey={MCP_KEY} ### Transport BCMS MCP uses the Streamable HTTP transport with session management. Sessions are maintained via the mcp-session-id header. ### Response Format All tools return structured JSON responses conforming to the MCP specification with: - content: Array of content blocks - structuredContent: Typed response data ## Rate Limits MCP requests are subject to the same rate limits as API requests: - Requests are tracked per MCP key - Contact support if you need higher limits for production workloads
Deep Code Reasoning MCP Server
Performs complementary code analysis by combining Claude Code and Google's Gemini AI.
PageLens AI
Your AI assistant, plugged into your PageLens audits.
RubyGems Package Info
Fetches comprehensive information about Ruby gems from RubyGems.org, including READMEs, metadata, and search functionality.
Pickapicon
Quickly retrieve SVGs using the Iconify API, with no external data files required.