Unity AI Bridge
STDIOA bridge between Unity and AI assistants using Model Context Protocol.
A bridge between Unity and AI assistants using Model Context Protocol.
A bridge between Unity and AI assistants using the Model Context Protocol (MCP).
Unity-MCP is an open-source implementation of the Model Context Protocol for Unity game development. It enables AI assistants to interact with Unity game environments through a standardized interface, allowing for AI-assisted game development, automated testing, scene analysis, and runtime debugging.
The architecture has been simplified to use AILogger for persistence, removing the need for a separate server component:
AI Assistant <-> Unity-MCP STDIO Client <-> Unity Client <-> AILogger
The Unity-MCP STDIO Client communicates directly with the Unity Client, which provides endpoints for both code execution and queries. The query tool transforms queries into code execution by wrapping them in a return
statement.
To get started with Unity-MCP, follow these steps:
Clone the repository:
git clone https://github.com/TSavo/Unity-MCP.git cd Unity-MCP
Install dependencies:
npm install
Build the project:
npm run build
Start the MCP STDIO client:
npm start
This will start the MCP STDIO client that communicates with Unity and uses AILogger for persistence.
Note: Make sure AILogger is running on http://localhost:3030 or set the AI_LOGGER_URL environment variable to point to your AILogger instance.
Run tests:
# Run all tests npm test # Run only unit tests npm run test:unit # Run only e2e tests npm run test:e2e # Run tests with a specific pattern npm test -- --testNamePattern="should return the server manifest" npm run test:unit -- --testNamePattern="should return the server manifest" npm run test:e2e -- --testNamePattern="should discover the test server"
For more detailed instructions, see the Installation Guide.
To connect the Unity-MCP bridge to an AI assistant, you need to create an MCP configuration file:
{ "mcpServers": { "unity-ai-bridge": { "url": "http://localhost:8080/sse" } } }
Place this file in the appropriate location for your AI assistant. For Claude, this would typically be in the Claude Desktop app's configuration directory.
The Unity-MCP bridge provides the following tools:
You can execute C# code in Unity using the execute_code
tool. The code will be executed in the Unity runtime environment, and the result will be stored in AILogger for later retrieval.
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "execute_code", "arguments": { "code": "Debug.Log(\"Hello from Unity!\"); return GameObject.FindObjectsOfType<GameObject>().Length;", "timeout": 5000 } } }
{ "jsonrpc": "2.0", "id": 1, "result": { "content": [ { "type": "text", "text": "{\"status\":\"success\",\"logName\":\"unity-execute-1712534400000\",\"result\":{\"success\":true,\"result\":42,\"logs\":[\"Hello from Unity!\"],\"executionTime\":123}}" } ] } }
You can query Unity objects using the query
tool. This allows you to access objects, properties, and methods using dot notation.
{ "jsonrpc": "2.0", "id": 2, "method": "tools/call", "params": { "name": "query", "arguments": { "query": "Camera.main.transform.position", "timeout": 5000 } } }
{ "jsonrpc": "2.0", "id": 2, "result": { "content": [ { "type": "text", "text": "{\"status\":\"success\",\"logName\":\"unity-query-1712534400000\",\"result\":{\"success\":true,\"result\":{\"x\":0,\"y\":1,\"z\":-10},\"executionTime\":45}}" } ] } }
You can retrieve the results of previous operations from AILogger using the get_log_by_name
tool.
{ "jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": { "name": "get_log_by_name", "arguments": { "log_name": "unity-execute-1712534400000", "limit": 1 } } }
{ "jsonrpc": "2.0", "id": 3, "result": { "content": [ { "type": "text", "text": "{\"status\":\"success\",\"name\":\"unity-execute-1712534400000\",\"entries\":[{\"id\":\"123e4567-e89b-12d3-a456-426614174000\",\"name\":\"unity-execute-1712534400000\",\"data\":{\"result\":{\"success\":true,\"result\":42,\"logs\":[\"Hello from Unity!\"],\"executionTime\":123},\"timestamp\":\"2025-04-08T00:00:00.000Z\"},\"timestamp\":\"2025-04-08T00:00:00.000Z\"}]}" } ] } }
Once the AI assistant has access to the Unity tool, you can ask it to perform tasks like:
Can you execute the following C# code in Unity?
GameObject.Find("Player").transform.position = new Vector3(0, 1, 0);
MIT
T Savo (@TSavo)